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)

Figure Estimated using TFEST contains an axes object. The axes object with title Simulated output #1: y1 contains an object of type line. This object represents y1.

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

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

load iddata2

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

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

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

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

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

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

Figure Estimated using NLARX with prediction focus contains an axes object. The axes object with title Simulated output #1: y1 contains an object of type line. This object represents y1.

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

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

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

Симулируйте модель с помощью первой половины входных данных 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*')

Figure contains an axes object. The axes object with title y1 contains 3 objects of type line. These objects represent ys1, ys2, ysTotal.

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

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

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

load iddata2;

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

M = nlarx(z2,[4 3 2],idWaveletNetwork('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,'.')

Figure contains an axes object. The axes object contains 2 objects of type line.

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

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

load iddata2

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

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

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

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

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

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

Figure Estimated using NLARX with prediction focus contains an axes object. The axes object with title Simulated output #1: y1 contains an object of type line. This object represents y1.

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

load iddata2

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

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

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

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

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

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

Figure Estimated using NLHW contains an axes object. The axes object with title Simulated output #1: y1 contains an object of type line. This object represents y1.

Серийные данные времени загрузки и оценка модель 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)

Figure Estimated using AR contains an axes object. The axes object with title Simulated output #1: y1 contains an object of type line. This object represents y1.

Используйте исторические данные ввода - вывода в качестве прокси для начальных условий при симуляции модели. Вы сначала симулируете использование 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 и вручную вычисленные результаты ysim2.

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

Figure contains an axes object. The axes object with title y1 contains 2 objects of type line. These objects represent ysim, ysim2.

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 сгенерировать сигналы с различными характеристиками.

Опции симуляции в виде a 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) является дополнительным шумовым сигналом. Добавьте шум в свою симуляцию путем создания a simOptions набор опции и установка AddNoise опция к true. Кроме того, можно изменить шумовой сигнал по умолчанию путем определения NoiseData опция.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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