После идентификации модели ее можно смоделировать в командной строке, в приложении «Идентификация системы» или в Simulink ®. Если начать с одного метода моделирования и перейти ко второму методу, результаты могут не совпадать точно. Это несоответствие не означает, что одно из моделирований реализовано неправильно. Каждый метод использует уникальный алгоритм моделирования и дает результаты с небольшими числовыми различиями.
Как правило, функции моделирования командной строки, такие как compare и sim, а также приложение System Identification, используйте аналогичные настройки по умолчанию и решатели. Simulink использует несколько другие настройки по умолчанию и другой решатель. Если требуется проверить реализацию Simulink на соответствие результатам моделирования в командной строке или приложении, необходимо убедиться, что параметры Simulink соответствуют параметрам моделирования в командной строке или приложении. В следующих параграфах перечислены эти параметры в порядке уменьшения значимости.
Наиболее значительным источником вариаций при попытке воспроизвести результаты обычно являются начальные условия. Начальные условия, заданные для моделирования в блоках Simulink, должны соответствовать начальным условиям, используемым compare, simили приложение «Идентификация системы». Можно определить начальные условия, возвращенные в предыдущих моделированиях. Кроме того, при моделировании по данным измерений можно оценить новый набор начальных условий, которые наилучшим образом соответствуют этим данным. Затем примените эти условия ко всем используемым методам моделирования. Дополнительные сведения об оценке начальных условий см. в разделе Оценка начальных условий для моделирования идентифицированных моделей.
После определения начальных условий x0 для использования в модели m и набор данных zреализуйте их в инструменте моделирования.
Для compare или sim, использовать compareOptions или simOptions.
Для Simulink используйте блок Idmodel, Nonlinear ARX Model или Hammerstein-Wiener Model с указанием m для модели и x0 для начальных состояний. В структурах Idmodel можно указать начальные состояния только для idss и idgrey модели. Если линейная модель имеет любой другой тип, сначала преобразуйте ее в idss. См. раздел Моделирование идентифицированной модели в Simulink или соответствующие страницы ссылок на блоки.
Для приложения System Identification нельзя указать начальные условия, отличные от нуля. Можно указать только метод их вычисления.
В Simulink время начала моделирования по умолчанию равно нулю, в то время как в приложении или командной строке время начала по умолчанию является временем выборки данных.
Перед экспортом iddata объект для моделирования в Simulink, задайте объект Tstart значение свойства равно нулю. Затем экспортируйте объект в Simulink с помощью блока Iddata Source.
Программное обеспечение Simulink предполагает интерполяцию входных данных с удержанием первого порядка.
При использовании compare, simили приложение, установите InterSample собственность вашего iddata объект в 'foh'.
compare команда и приложение моделируют модель непрерывного времени, сначала дискретизируя модель с помощью c2d и затем распространение уравнений разности. По умолчанию Simulink использует решатель ODE типа variable-step true. Чтобы лучше соответствовать распространению уравнения разности, установите решатель в Simulink в качестве решателя с фиксированным шагом, например ode5.
sim Блок командной и нелинейной модели ARXВоспроизведение командной строки sim результаты для расчетной нелинейной системы в Simulink. При наличии расчетной модели системы ее можно моделировать с помощью командной строки. sim или с помощью Simulink. Эти два выхода не совпадают точно, если оба моделирования не основаны на одних и тех же начальных условиях. Этого соответствия можно достичь путем оценки начальных условий в модели MATLAB и применения обоих условий в sim и в модели Simulink.
Поскольку вы непосредственно сравниваете sim и результаты Simulink, также необходимо синхронизировать временные метки первых точек данных, установив первую временную метку в данных, Tstart кому 0. Это время задается, так как по умолчанию при моделировании в командной строке время выборки назначается первой отметке времени, в то время как Simulink назначает отметку времени 0 секунд.
Загрузите оценочные данные, используемые для идентификации нелинейной модели ARX. Создание iddata объект данных из данных. Укажите время выборки как 0,2 секунды и Tstart как 0 секунд.
load twotankdata z = iddata(y,u,0.2,'Tstart',0);
Использовать первые 1000 точек данных для оценки нелинейной модели ARX mw1 с порядками [5 1 3] и нелинейностью вейвлет-сети.
z1 = z(1:1000); mw1 = nlarx(z1,[5 1 3],wavenet);
Чтобы инициализировать смоделированный ответ в соответствии с измеренными данными, оцените вектор начального состояния. x0 из оценочных данных z1 с использованием findstates функция. Третий аргумент для findstates в этом примере: Inf устанавливает горизонт прогнозирования на бесконечность, чтобы минимизировать ошибку моделирования.
x0 = findstates(mw1,z1,Inf);
Моделирование модели mw1 вывод с использованием x0 и первые 50 секунд (250 выборок) входных данных.
opt = simOptions('InitialCondition',x0);
data_sim = sim(mw1,z1(1:251),opt);
Теперь смоделируйте выходные данные mw1 в Simulink с использованием блока «Нелинейная модель ARX» и задайте те же начальные условия в блоке. Модель Simulink ex_idnlarx_block_match_sim предварительно сконфигурирован для указания оценочных данных, нелинейной модели ARX, начальных условий x0и время моделирования 50 секунд.
Откройте модель Simulink.
model = 'ex_idnlarx_block_match_sim';
open_system(model);

Моделирование вывода нелинейной модели ARX в течение 50 секунд.
sim(model);
Блок IDDATA Sink выводит смоделированный выходной сигнал. data, в рабочую область MATLAB ®.
Постройте график и сравните смоделированные выходные данные, полученные с помощью sim команда и нелинейный блок ARX.
figure plot(data_sim.SamplingInstants,data_sim.OutputData,'b*',... data.SamplingInstants,data.OutputData,'-r') xlabel('Time(sec)'); ylabel('Simulated output'); legend('Output of sim command','Output of Nonlinear ARX block','location','southeast') title('Estimated Initial Conditions for Simulink')

Моделируемые выходные данные одинаковы, поскольку при использовании было задано одно и то же начальное условие. sim и блок «Нелинейная модель ARX».
Если необходимо увидеть, как будет выглядеть сравнение без использования тех же начальных условий, можно повторно запустить версию Simulink без установленных начальных условий.
Обнуление вектора начального условия x0и имитировать в течение 50 секунд, как и раньше. Эта нулевая настройка x0 эквивалентно начальным условиям Simulink по умолчанию.
x0 = [0;0;0;0;0;0;0;0]; sim(model);
Постройте график различий между методами командной строки и Simulink для этого случая.
figure plot(data_sim.SamplingInstants,data_sim.OutputData,'b*',... data.SamplingInstants,data.OutputData,'-r') xlabel('Time(sec)'); ylabel('Simulated output'); legend('Output of sim command','Output of Nonlinear ARX block','location','southeast') title('Default Initial Conditions for Simulink')

Версия Simulink начинается в точке, отличной от точки sim версия, но две версии в конечном итоге сходятся. Чувствительность к начальным условиям важна для проверки воспроизводимости модели, но обычно является переходным эффектом.
compare Блок командной и нелинейной модели ARXВ этом примере сначала используется compare для сопоставления моделируемых выходных данных нелинейной модели ARX с измеряемыми данными. Затем смоделированные выходные данные воспроизводятся с помощью блока «Нелинейная модель ARX».
Данные оценки нагрузки для оценки нелинейной модели ARX. Создание iddata объект из данных. Укажите время выборки как 0,2 секунды и время начала данных как 0 секунд.
load twotankdata z = iddata(y,u,0.2,'Tstart',0);
Использовать первые 1000 точек данных для оценки нелинейной модели ARX mw1 с порядками [5 1 3] и нелинейностью вейвлет-сети.
z1 = z(1:1000); mw1 = nlarx(z1,[5 1 3],wavenet);
Используйте compare для согласования с моделируемым ответом mw1 к измеренным выходным данным в z1.
data_compare = compare(mw1,z1);
compare функция использует первую nx выборки данных ввода-вывода как прошлых данных, где nx является самой большой задержкой регрессора в модели. compare использует эти прошлые данные для вычисления начальных состояний, а затем моделирует выходные данные модели для оставшихся nx+1:end входные данные.
Чтобы воспроизвести этот результат в Simulink, вычислите значения начального состояния, используемые compareи укажите значения в блоке «Нелинейная модель ARX». Сначала вычислите наибольшую задержку регрессора в модели. Эта задержка используется для вычисления прошлых данных для первоначальной оценки условий.
nx = max(getDelayInfo(mw1)); past_data = z1(1:nx);
Использовать data2state для получения значений состояния с использованием прошлых данных.
x0 = data2state(mw1,z1(1:nx));
Теперь смоделируйте выходные данные mw1 в Simulink с использованием блока «Нелинейная модель ARX» и укажите x0 в качестве начальных условий в блоке. Использовать оставшиеся nx+1:end данные для моделирования.
zz = z1(nx+1:end); zz.Tstart = 0;
Модель Simulink ex_idnlarx_block_match_compare предварительно сконфигурирован для определения оценочных данных, нелинейной модели ARX и начальных условий.
Откройте модель Simulink.
model = 'ex_idnlarx_block_match_compare';
open_system(model);

Моделирование вывода нелинейной модели ARX в течение 200 секунд.
sim(model);
Блок IDDATA Sink выводит смоделированный выходной сигнал. data, в рабочую область MATLAB ®.
Сравните смоделированные выходные данные, полученные с помощью compare команда и нелинейный блок ARX. Для этого постройте график смоделированных выходных данных.
Сравнение выходных данных compare для вывода блока Nonlinear ARX Model удалите первый nx образцы data_compare.
data_compare = data_compare(nx+1:end); data.Tstart=1; plot(data_compare,data,'r--') xlabel('Time(sec)'); legend('compare','Nonlinear ARX Model block')

Моделируемые выходные данные одинаковы, поскольку при использовании было задано одно и то же начальное условие. compare и блок «Нелинейная модель ARX».
compare | Модель Хаммерстайна-Винера | Нелинейная модель ARX | Нелинейная серая модель | sim