\sim

Моделируйте ответ идентифицированной модели

Синтаксис

y = sim(sys,udata)
y = sim(sys,udata,opt)
[y,y_sd] = sim(___)
[y,y_sd,x] = sim(___)
[y,y_sd,x,x_sd] = sim(___)
sim(___)

Описание

пример

y = sim(sys,udata) возвращает моделируемый ответ идентифицированной модели с помощью входных данных, udata. По умолчанию нулевые начальные условия используются для всех типов модели кроме idnlgrey, в этом случае начальные условия, сохраненные внутренне в модели, используются.

пример

y = sim(sys,udata,opt) использует набор опции, opt, чтобы сконфигурировать опцию симуляции, включая спецификацию начальных условий.

пример

[y,y_sd] = sim(___) возвращает предполагаемое стандартное отклонение, y_sd, моделируемого ответа.

пример

[y,y_sd,x] = sim(___) возвращает траекторию состояния, x, для моделей в пространстве состояний.

пример

[y,y_sd,x,x_sd] = sim(___) возвращает стандартное отклонение траектории состояния, x_sd, для моделей в пространстве состояний.

пример

sim(___) строит моделируемый ответ идентифицированной модели.

Примеры

свернуть все

Загрузите данные об оценке.

load iddata2 z2

Оцените модель в пространстве состояний третьего порядка.

sys = ssest(z2,3);

Моделируйте идентифицированную модель с помощью входных каналов от данных об оценке.

y = sim(sys,z2);

Загрузите данные и получите идентифицированную модель.

load iddata2 z2
sys = n4sid(z2,3);

sys является оцененным использованием модели в пространстве состояний третьего порядка метода подпространства.

Создайте набор опции симуляции, чтобы добавить шум в моделируемый образцовый ответ.

opt1 = simOptions('AddNoise',true);

Моделируйте модель.

y = sim(sys,z2,opt1);

Гауссов белый шум по умолчанию отфильтрован шумовой передаточной функцией модели и добавлен к моделируемому образцовому ответу.

Можно также добавить собственный шумовой сигнал, e, с помощью опции NoiseData.

e = randn(length(z2.u),1);
opt2 = simOptions('AddNoise',true,'NoiseData',e);

Моделируйте модель.

y = sim(sys,z2,opt2);

Загрузка данных.

load iddata1 z1

Задайте опцию оценки, чтобы оценить начальное состояние.

estimOpt = ssestOptions('InitialState','estimate');

Оцените модель в пространстве состояний и возвратите значение предполагаемого начального состояния.

[sys,x0] = ssest(z1,2,estimOpt);

Задайте начальные условия для симуляции

simOpt = simOptions('InitialCondition',x0);

Моделируйте модель и получите образцовый ответ и стандартное отклонение.

[y,y_sd] = sim(sys,z1,simOpt);

Загрузите данные об оценке и оцените модель в пространстве состояний.

load iddata1 z1
sys = ssest(z1,2);

Возвратите стандартное отклонение и утвердите траекторию.

[y,y_sd,x] = sim(sys,z1);

Загрузите данные об оценке и оцените модель в пространстве состояний.

load iddata1 z1
sys = ssest(z1,2);

Создайте набор опции симуляции и задайте начальные состояния.

opt = simOptions('InitialCondition',[1;2]);

Задайте ковариацию начальных состояний.

opt.X0Covariance = [0.1 0; 0 0.1];

Вычислите стандартные отклонения моделируемого ответа, y_sd, и утвердите траекторию, x_sd.

[y,y_sd,x,x_sd] = sim(sys,z1,opt);

Получите идентифицированную модель.

load iddata2 z2
sys = tfest(z2,3);

sys является моделью idtf, которая инкапсулирует передаточную функцию третьего порядка, оцененную для результатов измерений z2.

Моделируйте модель.

sim(sys,z2)

Моделируйте одно вход одно вывод нелинейная модель ARX вокруг известной точки равновесия с уровнем на входе 1 и уровнем на выходе 10.

Загрузите выборочные данные.

load iddata2

Оцените нелинейную модель ARX от данных.

M = nlarx(z2,[2 2 1],'treepartition');

Оцените текущие состояния основанных на модели на прошлых данных. Задайте столько же прошлых выборок, сколько существуют задержки в переменных ввода и вывода (2 здесь).

x0 = data2state(M,struct('Input',ones(2,1),'Output',10*ones(2,1)));

Моделируйте модель с помощью начальных состояний, возвращенных data2state.

opt = simOptions('InitialCondition',x0);
sim(M,z2,opt)

Продолжите симуляцию нелинейной модели ARX от конца предыдущей запущенной симуляции.

Оцените нелинейную модель ARX от данных.

load iddata2
M = nlarx(z2,[2 2 1],'treepartition');

Моделируйте модель с помощью первой половины входных данных z2. Запустите симуляцию с нулевых начальных состояний.

u1 = z2(1:200,[]); 
opt1 = simOptions('InitialCondition','zero');
ys1 = sim(M,u1,opt1);

Запустите другую симуляцию с помощью второй половины входных данных z2. Используйте те же состояния модели от конца первой симуляции.

u2 = z2(201:end,[]);

Установить начальные состояния для второй симуляции правильно, входа u1 пакета и вывода ys1 от первой симуляции в один объект iddata. Передайте эти данные как начальные условия для следующей симуляции.

firstSimData = [ys1,u1];
opt2 = simOptions('InitialCondition',firstSimData);
ys2 = sim(M,u2,opt2);

Проверьте эти две симуляции по сравнению с полной симуляцией с помощью всех входных данных z2. Во-первых, извлеките полный набор входных данных.

uTotal = z2(:,[]); 
opt3 = simOptions('InitialCondition','zero'); 
ysTotal = sim(M,uTotal,opt3);

Постройте эти три ответа ys1, ys2 и ysTotal., ys1 должен быть равен первой половине ysTotal. ys2 должен быть равен второй половине ysTotal.

plot(ys1,'b',ys2,'g',ysTotal,'k*')

График показывает, что эти три ответа ys1, ys2 и ysTotal накладываются как ожидалось.

Оцените начальные состояния модели M, таким образом, что, ответ лучше всего совпадает с выводом в наборе данных z2.

Загрузите выборочные данные.

load iddata2;

Оцените нелинейную модель ARX от данных.

M = nlarx(z2,[4 3 2],wavenet('NumberOfUnits',20));

Оцените, что начальные состояния M лучше всего приспосабливают z2.y в моделируемом ответе.

x0 = findstates(M,z2,Inf);

Моделируйте модель.

opt = simOptions('InitialCondition',x0);
ysim = sim(M,z2.u,opt);

Сравните моделируемый образцовый вывод ysim с выходным сигналом в z2.

time = z2.SamplingInstants;
plot(time,ysim,time,z2.y,'.')

Запустите симуляцию модели около устойчивого состояния, где входом, как известно, является 1, но вывод неизвестен.

Загрузите выборочные данные.

load iddata2

Оцените нелинейную модель ARX от данных.

M = nlarx(z2,[4 3 2],'wavenet');

Определите значения состояния равновесия для входа 1 и неизвестного целевого вывода.

x0 = findop(M,'steady',1, NaN);

Моделируйте модель с помощью начальных состояний x0.

opt = simOptions('InitialCondition',x0);
sim(M,z2.u,opt)

Загрузите выборочные данные.

load iddata2

Создайте модель Хаммерстайна-Винера.

M = nlhw(z2,[4 3 2],[],'pwlinear');

Вычислите установившиеся значения рабочей точки, соответствующие уровню на входе 1 и неизвестного уровня на выходе.

x0 = findop(M,'steady',1,NaN);

Моделируйте модель с помощью предполагаемых начальных состояний.

opt = simOptions('InitialCondition',x0);
sim(M,z2.u)

Серийные данные времени загрузки и оценка модель AR с помощью подхода наименьших квадратов.

load iddata9 z9
sys = ar(z9,6,'ls');

Для данных временных рядов задайте желаемую продолжительность симуляции, N = 200 использований набора входных данных N-0.

data = iddata([],zeros(200,0),z9.Ts);

Установите начальные условия, чтобы использовать начальные выборки временных рядов как исторические выходные выборки.

IC = struct('Input',[],'Output',z9.y(1:6));
opt = simOptions('InitialCondition',IC);

Моделируйте модель.

sim(sys,data,opt)

Используйте исторические данные ввода - вывода в качестве прокси для начальных условий при симуляции модели. Вы сначала моделируете использование команды sim и задаете исторические данные с помощью набора опции simOptions. Вы затем воспроизводите моделируемый вывод путем ручного отображения исторических данных с начальными состояниями.

Загрузите 2D вход, набор данных с одним выходом.

load iddata7 z7

Идентифицируйте модель в пространстве состояний пятого порядка с помощью данных.

sys = n4sid(z7,5);

Разделите набор данных в две части.

zA = z7(1:15);
zB = z7(16:end);

Моделируйте модель с помощью входного сигнала в zB.

uSim = zB;

Симуляция требует начальных условий. Значения сигналов в zA являются историческими данными, то есть, они - значения ввода и вывода в течение времени, сразу предшествующего данным в zB. Используйте zA в качестве прокси для необходимых начальных условий.

IO = struct('Input',zA.InputData,'Output',zA.OutputData);
opt = simOptions('InitialCondition',IO);

Моделируйте модель.

ysim = sim(sys,uSim,opt);

Теперь воспроизведите вывод путем ручного отображения исторических данных с начальными состояниями sys. Для этого используйте команду data2state.

xf = data2state(sys,zA);

xf содержит значения состояния sys в то время момент сразу после новой выборки данных в zA.

Моделируйте систему с помощью xf в качестве начальных состояний.

opt2 = simOptions('InitialCondition',xf);
ysim2 = sim(sys,uSim,opt2);

Постройте вывод команды sim ysim и вручную вычисленные результаты ysim 2.

plot(ysim,'b',ysim2,'--r')

ysim2 совпадает с ysim.

Входные параметры

свернуть все

Идентифицированная модель, заданная как один из следующих объектов модели:

 Тип моделиОбъект модели
Идентифицированная линейная модельПолиномиальная модельidpoly
Модель процессаidproc
Модель в пространстве состоянийidss
Модель передаточной функцииidtf
Линейная модель серого поляidgrey
Идентифицированная нелинейная модельНелинейная модель ARXidnlarx
Нелинейная модель Хаммерстайна-Винераidnlhw
Нелинейная модель серого поляidnlgrey

Входные данные симуляции, заданные как объект iddata или матрица. sim использует входные каналы от этого объекта как входные параметры симуляции. Для симуляции временного интервала систем дискретного времени можно также задать udata как матрицу со столбцами, которые соответствуют каждому входному каналу.

Если sys является линейной моделью, можно использовать или временной интервал или данные частотного диапазона. Если sys является нелинейной моделью, можно только использовать данные временного интервала.

Если sys является моделью timeseries, которая является моделью без входных параметров, задайте udata как Ns-by-0 сигнал, где Ns является требуемым количеством симуляции выходные выборки. Например, чтобы моделировать 100 выборки вывода, задайте udata можно следующим образом.

udata = iddata([],zeros(100,0),Ts);

Если у вас нет данных из эксперимента, используйте idinput, чтобы сгенерировать сигналы с различными характеристиками.

Опции симуляции, заданные как набор опции simOptions для установки следующих опций:

  • Начальные условия

  • Смещения ввода/вывода

  • Аддитивный шум

Выходные аргументы

свернуть все

Моделируемый ответ для sys, возвращенного как объект iddata или матрица, в зависимости от того, как вы задаете udata. Например, если udata является объектом iddata, то так y.

Если udata представляет данные временного интервала, то y является моделируемым ответом для временного вектора, соответствующего udata.

Если udata представляет данные частотного диапазона, U (ω), то y содержит преобразование Фурье соответствующего выбранного выходного сигнала временного интервала. Этот сигнал является продуктом частотной характеристики sys, G (ω) и U (ω).

Для данных мультиэксперимента y является соответствующим объектом iddata мультиэксперимента.

Предполагаемое стандартное отклонение моделируемого ответа для линейных моделей или нелинейных моделей серого поля, возвращенных как Ns-by-Ny матрица, где Ns является количеством выборок и Ny, является количеством выходных параметров. Программное обеспечение вычисляет стандартное отклонение путем принятия во внимание ковариации параметра модели, ковариации начального состояния и аддитивной шумовой ковариации. Аддитивная шумовая ковариация хранится в свойстве NoiseVariance модели.

y_sd выведен с помощью факторов чувствительности первого порядка (Формула приближения гаусса).

Для нелинейных моделей y_sd является [].

Предполагаемая траектория состояния для моделей в пространстве состояний, возвращенных как Ns-by-Nx матрица, где Ns является количеством выборок и Nx, является количеством состояний.

x только релевантен, если sys является idss, idgrey или модель idnlgrey. Если sys не является моделью в пространстве состояний, x возвращен как [].

Предполагаемое стандартное отклонение траектории состояния для моделей в пространстве состояний, возвращенных как Ns-by-Nx матрица, где Ns является количеством выборок и Nx, является количеством состояний. Программное обеспечение вычисляет стандартное отклонение путем принятия во внимание ковариации параметра модели, ковариации начального состояния и аддитивной шумовой ковариации. Аддитивная шумовая ковариация хранится в свойстве NoiseVariance модели.

x_sd только релевантен, если sys является idss, idgrey или модель idnlgrey. Если sys не является моделью в пространстве состояний, x_sd возвращен как [].

Советы

  • Когда начальные условия предполагаемой модели и системы, которая измерила набор данных валидации, отличаются, моделируемые и измеренные ответы могут также отличаться, особенно в начале ответа. Чтобы минимизировать это различие, оцените значения начального состояния с помощью findstates и используйте ориентировочные стоимости, чтобы установить опцию InitialCondition с помощью simOptions. Для примера смотрите Ответ Модели Соответствия на Выходные данные.

Алгоритмы

Симуляция означает вычислять образцовый ответ с помощью входных данных и начальных условий. sim моделирует следующую систему:

Здесь,

  • u (t) является входными данными симуляции, udata.

  • y (t) является моделируемым выходным ответом.

  • G является передаточной функцией от входа до вывода и задан в sys. Начальные условия симуляции, как задано использование simOptions, устанавливают начальное состояние G.

  • e (t) является дополнительным шумовым сигналом. Добавьте шум в свою симуляцию путем создания набора опции simOptions и установки опции AddNoise на true. Кроме того, можно изменить шумовой сигнал по умолчанию путем определения опции NoiseData.

  • H является шумовой передаточной функцией и задан в sys.

  • δu является дополнительным входным смещением, вычтенным из входного сигнала, u (t), прежде чем вход будет использоваться, чтобы моделировать модель. Задайте вход, смещенный путем установки опции InputOffset с помощью simOptions.

  • δy является дополнительным выходным смещением, добавленным к выходному ответу, y (t), после симуляции. Задайте вывод, смещенный путем установки опции OutputOffset с помощью simOptions.

Для получения дополнительной информации об определении начальных условий симуляции смещения ввода и вывода и шумовые данные сигнала, видят simOptions. Для данных о мультиэксперименте можно задать эти опции отдельно для каждого эксперимента.

Альтернативы

  • Используйте simsd для метода Монте-Карло вычисления стандартного отклонения ответа.

  • sim расширяет lsim, чтобы упростить дополнительные функции, относящиеся к идентифицированным моделям:

    • Симуляция нелинейных моделей

    • Симуляция с аддитивным шумом

    • Объединение смещений сигнала

    • Вычисление стандартного отклонения ответа (только линейные модели)

    • Симуляция частотного диапазона (только линейные модели)

    • Симуляции с помощью различного междемонстрационного поведения для различных входных параметров

    Чтобы получить моделируемый ответ без любой из предыдущих операций, используйте lsim.

Представлено до R2006a