Симуляция и предсказание в командной строке

Команды симуляции и предсказания

Примечание

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

КомандаОписаниеПример
compare

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

Графики моделировали или предсказывали выход одной или нескольких моделей поверх измеренного результата. Вы должны использовать независимый набор данных валидации в качестве входных данных для модели.

Чтобы построить пятиэтапный предсказанный выход модели mod по данным валидации data, используйте следующую команду:

compare(data,mod,5)

Примечание

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

sim

Симулируйте и постройте график только выходов модели.

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

sim(model,data)
predict

Спрогнозируйте и постройте график только выхода модели.

Чтобы выполнить одноэтапное предсказание отклика для модели model и входных данных data, используйте следующую команду:

predict(model,data,1)

Используйте следующий синтаксис для вычисления k- предварительное предсказание выходного сигнала с помощью модели m:

yhat = predict(m,[y u],k)

predict вычисляет результаты предсказания только во временной области значений data. Он не прогнозирует результаты за пределами доступной области значений данных.

forecast

Прогнозируйте временные ряды в будущее.

Чтобы предсказать значение временных рядов в произвольном количестве шагов в будущее, используйте следующую команду:

forecast(model,past_data,K)

Здесь, model является моделью временных рядов, past_data является записью наблюдаемых значений временных рядов, и K - горизонт прогнозирования.

Начальные условия в симуляции и предсказании

Процесс вычисления моделируемых и предсказанных откликов в временной области значений начинается с использования начальных условий для вычисления первых нескольких выходных значений. sim, forecast, и predict команды обеспечивают опции и настройки по умолчанию для обработки начальных условий.

Симуляция: Начальные условия по умолчанию равны нулю для всех типов модели, кроме idnlgrey модель, начальными условиями по умолчанию которой являются начальные состояния внутренней модели (свойство модели x0). Можно задать другие начальные условия, используя InitialCondition опция симуляции. Для получения дополнительной информации об опциях симуляции см. simOptions.

Используйте compare команда для проверки моделей путем симуляции, потому что его алгоритм оценивает начальные состояния модели, чтобы оптимизировать подгонку модели заданному набору данных. Вы также можете использовать compare чтобы вернуть предполагаемые начальные условия для последующей симуляции и сравнения с тем же набором данных. Эти начальные условия могут быть в форме начального вектора состояний (модели в пространстве состояний) или initialCondition объект (передаточная функция или полиномиальные модели.)

Если вы используете sim чтобы подтвердить качество идентифицированной модели, необходимо использовать входной сигнал из валидации набора данных, а также принять во внимание начальные эффекты условия. Моделируемое и измеренные отклики отличаются в первых нескольких выборках, если выход набора данных валидации содержит начальные эффекты условия, которые не захватываются при симуляции модели. Чтобы минимизировать это различие, оцените начальные значения состояния или initialCondition моделировать из данных используя либо findstates (модели пространства состояний) или compare (все модели LTI) и задайте эти начальные состояния используя InitialCondition опция симуляции (см. simOptions). Например, вычислите начальные состояния, которые оптимизируют подгонку модели m к выходу данным в z:

% Estimate the initial states
X0est = findstates(m,z);
% Simulate the response using estimated initial states
opt = simOptions('InitialCondition',X0est);
sim(m,z.InputData,opt)

Для примера получения и использования initialCondition модели, см. Применение начальных условий при симуляции идентифицированных линейных моделей.

Предсказание: Начальные условия по умолчанию зависят от типа модели. Можно задать другие начальные условия, используя InitialCondition опция (см. predictOptions). Например, вычислите начальные состояния, которые оптимизируют 1-ступенчатый предсказанный ответ модели m к выходу данных z:

opt = predictOptions('InitialCondition','estimate');
[Yp,IC] = predict(m,z,1,opt);

Эта команда возвращает предполагаемые начальные условия в качестве выходного аргумента IC. Для получения информации о других способах задания начальных состояний смотрите predictOptions страница с описанием.

Симулируйте модель пространства состояний непрерывного времени

Этот пример показывает, как симулировать модель пространства состояний в непрерывном времени с помощью случайного двоичного входного сигнала u и шаг расчета 0.1 s.

Рассмотрим следующую модель пространства состояний:

x˙=[-11-0.50]x+[10.5]u+[0.50.5]ey=[10]x+e

где e - Гауссов белый шум с отклонением 7.

Создайте модель пространства состояний в непрерывном времени.

A = [-1 1; -0.5 0];
B = [1;0.5]; 
C = [1 0];
D = 0;
K = [0.5;0.5];
% Ts = 0 indicates continuous time
model_ss = idss(A,B,C,D,K,'Ts',0,'NoiseVariance',7);

Создайте случайный двоичный вход.

u = idinput(400,'rbs',[0 0.3]);

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

data = iddata([],u);
data.ts = 0.1;

Симулируйте выход с помощью модели

opt = simOptions('AddNoise',true); 
y = sim(model_ss,data,opt);

Симулируйте выход модели с шумом

В этом примере показано, как можно создать входные данные и модель, а затем использовать данные и модель для симуляции выходных данных.

В этом примере вы создаете следующую модель ARMAX с Гауссовым шумом e:

y(t)-1.5y(t-1)+0.7y(t-2)=u(t-1)+0.5u(t-2)+e(t)-e(t-1)+0.2e(t-1)

Затем вы моделируете выходные данные со случайным двоичным входом u.

Создайте модель ARMAX.

m_armax = idpoly([1 -1.5 0.7],[0 1 0.5],[1 -1 0.2]);

Создайте случайный двоичный вход.

u = idinput(400,'rbs',[0 0.3]);

Симулируйте выходные данные.

opt = simOptions('AddNoise',true);
y = sim(m_armax,u,opt);

The 'AddNoise' опция задает включение в симуляцию Гауссова e шума присутствует в модели. Установите эту опцию равной false (поведение по умолчанию), чтобы симулировать ответ без шума на вход u , что эквивалентно установке e в нуль.

См. также

| | |

Похожие примеры

Подробнее о