predict

Предсказать выход модели K-шага вперед

Описание

Это predict команда вычисляет K-ступенчатый выход идентифицированной модели, используя измеренные входно-выходные данные. Чтобы идентифицировать модель, вы сначала собираете все входно-выходные данные, а затем оцениваете параметры модели в автономном режиме. Чтобы выполнить онлайн-оценку состояния нелинейной системы с помощью данных в реальном времени, используйте predict Вместо этого команда для расширенных и сигма-точечных фильтров Калмана.

пример

yp = predict(sys,data,K) предсказывает выход идентифицированной модели sys, K шаги вперед с использованием измеренных входно-выходных данных.

predict команда предсказывает выход ответ на протяжении временного интервала измеренных данных. Напротив, forecast выполняет предсказание в будущее во временной области значений, выходящей за пределы последнего момента измеренных данных. Использовать predict для проверки sys за временной промежуток измеренных данных.

пример

yp = predict(sys,data,K,opt) использует набор опций opt задавать дополнительные опции предсказания, такие как обработка начальных условий и смещения данных.

пример

[yp,ic,sys_pred] = predict(___) также возвращает оцененные значения для начальных условий ic и модель предиктора sys_pred. Используйте этот синтаксис с любыми предыдущими комбинациями входных аргументов.

predict(sys,data,K,___) строит графики предсказанного выхода. Используйте с любыми предыдущими комбинациями входных аргументов. Чтобы изменить параметры отображения на графике, щелкните правой кнопкой мыши график, чтобы получить доступ к контекстному меню. Для получения дополнительной информации о меню смотрите Советы.

Можно также построить график предсказанной реакции модели с помощью compare команда. compare команда сравнивает результаты предсказания с наблюдаемыми данными и отображает количественное качество подгонки.

predict(sys,Linespec,data,K,___) использует Linespec для определения типа линии, символа маркера и цвета.

predict(sys1,...,sysN,data,K,___) строит графики предсказанных выходов для нескольких идентифицированных моделей. predict автоматически выбирает цвета и стили линии.

пример

predict(sys1,Linespec1,...,sysN,LinespecN,data,K,___) использует тип линии, символ маркера и цвет, заданный для каждой модели.

Примеры

свернуть все

Моделируйте данные timeseries.

init_sys = idpoly([1 -0.99],[],[1 -1 0.2]);
opt = simOptions('AddNoise',true);
u = iddata([],zeros(400,0),1);
data = sim(init_sys,u,opt);

data является iddata объект, содержащий симулированный отклик данные модели временных рядов.

Оцените модель ARMAX при помощи data в качестве данных оценки.

na = 1;
nb = 2;
sys = armax(data(1:200),[na nb]);

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

K = 4;
yp = predict(sys,data,K);

yp является iddata объект. Предсказанный выход возвращается в OutputData свойство объекта.

Сравните предсказанные и оцененные выходы.

plot(data(201:400),yp(201:400));
legend('Estimation data','Predicted data');

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent Estimation data, Predicted data.

В качестве альтернативы, чтобы построить график предсказанных данных отклика и оценки, используйте compare(sys,data,K).

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

load iddata1;
data = z1;

Оцените модель ARX порядка [2 2 1].

sys1 = arx(data,[2 2 1]);

Оцените передаточную функцию с 2 полюсами.

 sys2 = tfest(data,2);

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

opt = predictOptions('InitialCondition','z');

Постройте график предсказанных выходов для предполагаемых моделей. Используйте указанный набор опций предсказания, opt, и задайте горизонт предсказания как 10. Задайте стили линии для графического изображения прогнозируемых выходов каждой системы.

predict(sys1,'r--',sys2,'b',data,10,opt);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent data (y1), sys1, sys2.

Чтобы изменить параметры отображения, щелкните правой кнопкой мыши график, чтобы получить доступ к контекстному меню. Для примера, чтобы просмотреть данные оценки, выберите Показ Валидации Данные из контекстного меню. Чтобы просмотреть ошибку предсказания, выберите Prediction Error Plot.

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

opt = compareOptions('InitialCondition','z');
compare(data,sys1,'r--',sys2,'b',10,opt);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent data (y1), sys1: 54.31%, sys2: 70.57%.

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

Данные оценки нагрузки.

load iddata3 z3
data = z3;

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

sys = polyest(z3,[2 2 2 0 0 1]);

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

K = 4;
[yp,ic,sysp] = predict(sys,data,K);

yp - предсказанная реакция модели, ic содержит предполагаемые начальные условия, и sysp является моделью предиктора.

Симулируйте модель предиктора со входами [data.OutputData,data.InputData] и начальные условия ic.

opt = simOptions;
opt.InitialCondition = ic;
ys = sim(sysp,[data.OutputData,data.InputData],opt);

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

t = yp.SamplingInstants;
plot(t,yp.OutputData,'b',t,ys,'.r');
legend('Predicted Output','Simulated Output')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Predicted Output, Simulated Output.

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

Загрузите данные.

load iddata1ic z1i

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

estimOpt = armaxOptions('InitialCondition','estimate');

Оцените модель ARMAX и верните initialCondition ic объекта который инкапсулирует начальные условия в форме пространство состояний.

na = 2;
nb = 2;
nc = 2;
nk = 1;
[sys,ic] = armax(z1i,[na nb nc nk],estimOpt);

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

predictOpt = predictOptions('InitialCondition',ic);

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

y = predict(sys,z1i,predictOpt);
plot(z1i,y)
legend('Measured Data','Predicted Response')

Figure contains 2 axes. Axes 1 with title y1 contains 2 objects of type line. These objects represent Measured Data, Predicted Response. Axes 2 with title u1 contains an object of type line. This object represents Measured Data.

Измеренные и предсказанные отклики показывают хорошее согласие в начале предсказания.

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

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

load iddata7 z7

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

sys = n4sid(z7,5);

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

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

Предположим, что вы хотите вычислить 10-ступенчатое предсказание отклика идентифицированной системы на данные zB. Для начальных условий используйте значения сигналов в zA как историческая запись. То есть входные и выходные значения для времени, непосредственно предшествующего данным в zB.

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

Сгенерируйте 10-ступенчатое предсказание для zB данных использование заданных начальных условий и predict.

[yp,x0,Predictor] = predict(sys,zB,10,opt);

yp - предсказанная реакция модели, x0 являются ли начальные состояния, соответствующие модели предиктора Predictor. Можно симулировать Predictor использование x0 как начальные условия для воспроизведения yp.OutputData.

Теперь воспроизведите выход, вручную сопоставив исторические данные с начальными состояниями. Для этого минимизируйте 1-шаговые ошибки предсказания за временной промежуток zA.

x0est = data2state(sys,zA);

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

The Predictor имеет больше состояний, чем исходная система, из-за 10-шагового горизонта предсказания. Задайте дополнительные состояния, вызванные горизонтом, до нуля начальных значений, а затем добавьте x0est.

x0Predictor = zeros(order(Predictor),1);
x0Predictor(end-4:end) = x0est;

Симулируйте предиктор, используя [zB.OutputData,zB.InputData] как входной сигнал и x0Predictor в качестве начальных условий.

uData = [zB.OutputData,zB.InputData]; % signals required for prediction
[ysim,t,xsim] = lsim(Predictor,uData,[],x0Predictor);

Постройте график предсказанного выхода predict командная yp.OutputData и результаты, вычисленные вручную ysim.

plot(t,yp.OutputData,t,ysim, '.')

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

ysim то же, что и yp.OutputData.

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

свернуть все

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

  • Линейная модель - idpoly, idproc, idss, idtf, или idgrey

  • Нелинейная модель - idnlgrey, idnlhw, или idnlarx

    Когда sys является idnlhw или idnlgrey модель, предсказанный выход yp - то же самое, что и симулированный отклик, вычисленная с помощью data.InputData как вход.

Если модель недоступна, оцените sys от data использование таких команд, как ar, armax, tfest, nlarx, и ssest.

Измеренные входно-выходные данные, заданные как одно из следующего:

  • iddata объект - Используйте наблюдаемые входные и выходные сигналы, чтобы создать iddata объект. Для данного timeseries (без входов) задайте как iddata объект без входов iddata(output,[]).

  • Матрица двойников - Для моделей с Nu входами и Ny выходами задайте data как матрица N -by- (Ny + Nu). Где, N количество наблюдений.

    Для данных временных рядов задайте как N -by - Ny матрицу.

Горизонт предсказания, заданный как один из следующих:

  • Положительное целое число - Выходные yp вычисляется K шаги в будущее, где K представляет собой кратное data Шаг расчета.

    Значение выхода в момент времени t вычисляется с использованием ранее измеренных выходов до времени t-K и вводит до моментального времени t.

  • Inf - Никакие предыдущие выходы не используются в расчетах, и predict возвращает тот же результат, что и симуляция с использованием sim команда.

Для моделей Output-Error нет различия между K опережающие предсказания и моделируемый выход. Это связано с тем, что модели Output-Error используют только прошлые входы для предсказания будущих выходов.

Примечание

Для тщательной валидации модели, предсказание с одним шагом вперед (K = 1) обычно не является хорошим тестом для валидации модели sys за временной промежуток измеренных данных. Даже тривиальный один шаг вперед предиктор, y^(t)=y(t1), может дать хорошие предсказания. Таким образом, плохая модель может хорошо выглядеть для одноэтапного предсказания данных, которые имеют небольшой шаг расчета. Предсказание с K = Inf, что аналогично выполнению симуляции с sim команда может привести к расхождению выходов, потому что подчеркнуты низкочастотные нарушения порядка в данных, особенно для моделей с интегрированием. Использование K значение между 1 и Inf для захвата среднего частотного поведения измеренных данных.

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

Стиль линии, цвет и маркер задается как вектор символов. Для примера, 'b' или 'b+:'.

Для получения дополнительной информации о настройке Linespec, см. Аргумент Linespec plot.

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

свернуть все

Предсказанный выходной ответ, возвращенный как один из следующих:

  • iddata объект - Когда data является iddata объект. The OutputData свойство yp сохраняет значения предсказанного выхода. Временная переменная принимает значения в области значений, представленной data.SamplingInstants.

  • Матрица двойников - Когда data является матрицей двойников.

Значение выхода в момент времени t вычисляется с использованием ранее измеренных выходов до времени t-K и вводит до моментального времени t. Другими словами, предсказанный ответ в момент времени r данные измерений хранятся в r+K-1 выборка yp. Обратите внимание, что во время r, будущие входы u(r+1), u(r+2)..., u(r+K) требуемые для предсказания приняты известными. Для мультиэкспериментальных данных, yp содержит предсказанный набор данных для каждого эксперимента. Период времени предсказанных выходов совпадает с периодом времени наблюдаемых данных.

Когда sys задается с помощью idnlhw или idnlgrey модель, yp - то же самое, что и симулированный отклик, вычисленная с помощью data.InputData как вход.

Предполагаемые начальные условия, соответствующие модели предиктора sys_pred, возвращенный как вектор-столбец, initialCondition объект или массив ячеек.

  • Если sys является линейной передаточной функцией или полиномиальной моделью, затем ic является initialCondition объект. The initialCondition объект инкапсулирует свободный ответ sys, в форме пространства состояний, с соответствующим начальным вектором состояний.

  • Если sys - любой другой тип линейной или нелинейной динамической модели, затем ic является начальным вектором состояния, возвращаемым как вектор-столбец размера, равная количеству состояний.

  • Если data содержит мультиэксперентные данные, затем ic - массив ячеек размера Ne, где Ne - количество экспериментов.

Чтобы воспроизвести результаты предсказания, можно моделировать sys_pred использование ic как начальные условия. Для получения примера смотрите Воспроизведение результатов предсказания по Симуляции.

Если sys является idnlarx модель, ic возвращается пустым.

Модель предиктора, возвращенная как динамическая системная модель. Для мультиэкспериментальных данных, sys_pred является массивом моделей с одной записью для каждого эксперимента. Можно использовать модель предиктора sys_pred и предполагаемые начальные условия ic для воспроизведения результатов предсказания:

  • Если sys является линейной моделью, модель предиктора возвращается как модель того же типа, что и sys или как версию модели в пространстве состояний (idss). Чтобы воспроизвести результаты предсказания, моделируйте sys_pred использование [data.OutputData data.InputData] как вход и ic как начальные условия. Выход симуляции аналогичен предсказанному выходу yp.OutputData. Для получения примера смотрите Воспроизведение результатов предсказания по Симуляции.

  • Когда sys - нелинейная модель серого ящика (idnlgrey) или модель Гаммерштейна-Винера (idnlhw), шумовая составляющая модели тривиальна, и поэтому предикторная модель та же, что и модель. sys_pred возвращается пустым. Чтобы воспроизвести результаты предсказания, моделируйте sys использование начальных условий ic. Для определения состояний idnlhw модели, см. Определение состояний idnlhw.

  • Если sys является нелинейной моделью ARX (idnlarx), sys_pred и ic возвращаются пустыми. Вы не можете воспроизвести результаты предсказания путем симуляции.

Для данных в дискретном времени, которые являются данными во временной или частотной областях с шагом расчета Ts больше нуля, sys_pred является моделью в дискретном времени, даже если sys является моделью в непрерывном времени.

Совет

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

    • Systems - выберите системы, чтобы просмотреть предсказанный ответ. По умолчанию строится график отклика всех систем.

    • Data Experiment - только для данных нескольких экспериментов. Переключение между данными из различных экспериментов.

    • Characteristics - Просмотр следующих характеристик данных:

      • Peak Value - Просмотр абсолютного пикового значения данных. Применяется только для данных во временной области.

      • Peak Response - Просмотр максимальной чувствительности данных. Применяется только для данных частотной характеристики.

      • Mean Value - Просмотрите среднее значение данных. Применяется только для данных во временной области.

    • Show - только для частотных диапазонов области и частотной характеристики.

      • Magnitude - Просмотрите величину частотной характеристики системы.

      • Phase - Просмотр фазы частотной характеристики системы.

    • Show Validation Data - Стройте графики данных, используемых для предсказания отклика модели.

    • I/O Grouping - для наборов данных, содержащих более одного входного или выходного канала. Выберите группировку входа и выходных каналов на графике.

      • None - Стройте графики каналов ввода-вывода в собственных отдельных осях.

      • All - Группируйте все входные каналы вместе и все выходные каналы вместе.

    • I/O Selector - для наборов данных, содержащих более одного входного или выходного канала. Выберите подмножество входного и выходного каналов для построения графика. По умолчанию все выходные каналы построены.

    • Grid - добавить сетки на график.

    • Normalize - Нормализуйте шкалу Y всех данных на графике.

    • Full View - Вернуться к полному представлению. По умолчанию график масштабируется до полного вида.

    • Prediction Horizon - Установите горизонт предсказания или выберите симуляцию.

    • Initial Condition - Определение обработки начальных условий. Не применяется для данных частотной характеристики.

      Задайте как одно из следующих:

      • Estimate - Обрабатывайте начальные условия как параметры оценки.

      • Zero - Установите все начальные условия на нуль.

      • Absorb delays and estimate - Поглощает ненулевые задержки в коэффициенты модели и обрабатывает начальные условия как параметры оценки. Используйте эту опцию только для моделей в дискретном времени.

    • Predicted Response Plot - Постройте график предсказанной характеристики модели. По умолчанию отображается график отклика.

    • Prediction Error Plot - постройте график ошибки между ответом модели и данными предсказания.

    • Properties - Откройте диалоговое окно «Property Editor», чтобы настроить атрибуты графика.

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