data2state

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

Описание

пример

X = data2state(sys,PastData) сопоставляет прошлые данные с состояниями пространства состояний или нелинейной модели ARX sysX содержит значения состояния в то время момент сразу после новой выборки данных в 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')

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

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)

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

свернуть все

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

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

  • 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