Частота дискретизации от Simulink до Matlab - PullRequest
0 голосов
/ 27 мая 2018

Я использую модель Simulink из Simulink с использованием Matlab.Моя система в основном в Matlab, но я запускаю файл SLX и экспортирую выходные данные для использования в Matlab.Симуляция выполняется в течение 48 секунд (1 секунда, представляющая час).Когда я получаю результаты, я ожидаю, что оно будет того же качества, что и при просмотре в simulink, но это не так.Вот пример того, как мои данные выглядят в simulink:

enter image description here

Вот как это выглядит, когда я строю их в Matlab (числосэмплы становятся 307 при экспорте)

enter image description here

Я попытался изменить размер шага в Simulink или изменить Солвер, но это исказило мой вывод Simulink, как показано ниже.

enter image description here

Мой решатель ode45, как мне контролировать частоту дискретизации моих данных, чтобы я не получал другое разрешение после экспорта вMatlab.PS После экспорта я буду интерполировать данные, чтобы получить образцы в промежутке между часами (образец каждую минуту, а не каждый час).Если я могу сделать это сразу, изменив размер шага, тогда это будет идеально.

Следуя вашим советам, я получил этот график, когда строил график в зависимости от времени вместо образцов

enter image description here

Спасибо

1 Ответ

0 голосов
/ 27 мая 2018

Вы используете решатель с переменным шагом (ODE45), и поэтому очень велика вероятность того, что вы не получите постоянную частоту дискретизации.

Единственный способ обеспечить / контролировать частоту дискретизации - этоиспользуйте решатель с фиксированным шагом (например, ode4).

Однако ... относительно того, почему данные выглядят по-разному между областью Simulink и построенными данными.Для решателей с переменным временным шагом есть коэффициент уточнения (параметры конфигурации -> Импорт / экспорт данных -> Дополнительные параметры).По умолчанию установлено значение 1. Установите значение 100, и вы должны получить более равномерно выглядящую плотность выборки

Что следует знать о коэффициенте уточнения?

  • Чтобы получить более плавный выводи имеют лучшее разрешение по времени, гораздо быстрее изменить коэффициент уточнения вместо уменьшения размера шага.
  • Когда коэффициент уточнения изменяется, решатели генерируют дополнительные точки, оценивая формулу непрерывного расширения в этих точках.
  • Коэффициент уточнения применяется к решателям с переменным шагом и наиболее полезен при использовании ode45.
  • Обычно значение 4 дает гораздо более плавные результаты.

https://blogs.mathworks.com/simulink/2009/07/14/refining-the-output-of-a-simulation/ https://uk.mathworks.com/help/simulink/gui/refine-factor.html

...