exponenta event banner

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 object - количество выборок должно быть больше или равно порядку модели. Для определения порядка модели используйте order.

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

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

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

    • Вход (Input) - предыдущие входные данные, определенные как матрица N-by-Nu, где N больше или равно порядку модели.

    • Output (Вывод) - выходные данные, заданные в виде матрицы 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