data2state

Сопоставьте прошлые данные с состояниями пространственно-нелинейных моделей ARX

Описание

пример

X = data2state(sys,PastData) преобразует прошлые данные в состояния пространства состояний или нелинейной модели ARX sys. X содержит значения состояний в момент времени сразу после последней выборки данных в PastData. Программа вычисляет оценки состояния путем минимизации ошибки предсказания на 1 шаг вперед между предсказанным откликом и выходным сигналом в PastData.

data2state используется для продолжения симуляции модели. То есть предположим, что вы моделировали модель до определенного момента времени и хотели бы затем моделировать модель для будущих входов. Использовать data2state оценить состояния модели в начале второй симуляции.

пример

[X,XCov] = data2state(sys,PastData) возвращает предполагаемую ковариацию, XCov, из текущих состояний.

Примеры

свернуть все

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

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

load iddata3 z3

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

sys = ssest(z3,2);

Симулируйте модель, используя весь входной сигнал в z3.

Input = z3(:,[],:); % |iddata| object containing only the input signal
y_all = sim(sys,Input);

sim использует нулевые начальные условия для вычисления y_all.

Теперь симулируйте модель, используя только первую половину входного сигнала.

Input1 = Input(1:150);
y_1 = sim(sys,Input1);

Продолжите симуляцию со второй половиной входного сигнала таким образом, чтобы результаты не показали разрывности из-за переходных процессов, вызванных начальным условием. Для этого сначала создайте прошедший набор данных, содержащий вход и моделируемый выход из первой половины входного сигнала. Затем вычислите значения состояния, соответствующие началу второй половины входного сигнала (t = 151).

PastData = [y_1,Input1];
X = data2state(sys,PastData);

X содержит значения состояний в момент времени сразу после последней выборки данных в PastData. Эта временная точка также является началом будущих данных (вторая половина входного сигнала).

FutureData = Input(151:end);

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

opt = simOptions('InitialCondition',X);
y_2 = sim(sys,FutureData,opt);

Проверьте, что y_2 соответствует второй половине y_all.

plot(y_all,y_2,'r.')
legend('Simulation using all input data',...
    'Separate simulation of second-half of input data')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent Simulation using all input data, Separate simulation of second-half of input data.

Загрузите прошлые данные.

load iddata1 z1
PastData = z1;

Оцените модель ARX.

sys = arx(PastData,[1 1 0]);

Преобразуйте модель в модель пространства состояний.

sys2 = idss(sys);

Вычислите отображенные состояния и ковариацию состояний, используя PastData.

[X,XCov] = data2state(sys2,PastData);

X - значение состояния в момент времени сразу после последней выборки данных в PastData.

Загрузите свои данные и создайте объект данных.

load motorizedcamera;  
z = iddata(y,u,0.02,'Name','Motorized Camera','TimeUnit','s');

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

mw1 = nlarx(z,[ones(2,2),ones(2,6),ones(2,6)],'wavenet');

Предполагаемая модель имеет шесть входов и два выхода.

Определите порядок модели, nx.

nx = order(mw1);

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

PastData = struct('Input', z.u(1:nx,:),'Output',z.y(1:nx,:));

Вычислите сопоставленные состояния модели.

X = data2state(mw1,PastData);

X - значение состояния в момент времени сразу после последней выборки данных в PastData.

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

InputSignal = z.u(nx+1:end,:);
opt = simOptions;
opt.InitialCondition = X;
sim(mw1,InputSignal,opt)

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

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

свернуть все

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

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

  • iddata объект - Количество выборок должно быть больше или равно порядку модели. Чтобы определить порядок модели, используйте order.

    X - значение состояний модели во времени PastData.SamplingInstants(end) + PastData.Ts.

    Когда sys является непрерывное время, задайте PastData как iddata объект. X затем соответствует дискретизированному (c2d) версия модели, где метод дискретизации сохранен в InterSampleсвойство PastData.

  • Структура - задается как структура со следующими полями:

    • Вход - Прошедшие входные данные, заданные как N -by - Nu матрица, где N велико или равно порядку модели.

    • Выход - Прошлые выходные данные, заданные как N -by - Ny матрица, где N велико или равно порядку модели.

    Задайте PastData как структура только когда sys является моделью в дискретном времени.

Выборки данных в PastData должно быть в порядке увеличения времени. То есть последняя строка PastData должно соответствовать последнему времени.

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

свернуть все

Отображенные состояния модели, возвращенные как вектор-строка размера, равная количеству состояний. X содержит значение состояния в момент времени сразу после последней выборки данных в PastData. То есть, если PastData является iddata объект, X - значение состояния во время t = PastData.SamplingInstants(end)+PastData.Ts.

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

XCov пуст, если sys является нелинейной моделью ARX.

Введенный в R2008a