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. The axes 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],'treepartition');

Оцените текущие состояния модели на основе прошлых данных. Задайте столько прошлых выборок, сколько лагов в переменных входах и выходе (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. The axes 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],'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*')

Figure contains an axes. The axes 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],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,'.')

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

Начните симуляцию модели около устойчивого состояния, где, как известно, вход 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)

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

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

load iddata2

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

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

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

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

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

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

Figure Estimated using NLHW contains an axes. The axes 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-by-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. The axes with title Simulated output #1: y1 contains an object of type line. This object represents y1.

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

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

load iddata7 z7

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

sys = n4sid(z7,5);

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

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

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

uSim = zB;

Симуляция требует начальных условий. The значений сигналов in 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. The axes 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 для формирования сигналов с различными характеристиками.

Опции симуляции, заданные как 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