data2state

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

Синтаксис

X = data2state(sys,PastData)
[X,XCov] = data2state(sys,PastData)

Описание

пример

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')

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

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