Можно оценить линейные модели серого ящика в дискретном времени и в непрерывном времени для произвольных обыкновенных дифференциальных или разностных уравнений, используя данные с одним выводом и несколькими выводами во временной области или данные с timeseries (только вывод).
Вы должны представлять свои системные уравнения в форме пространство состояний. Модели в пространстве состояний используют переменные состояния x (t), чтобы описать систему как набор дифференциальных уравнений первого порядка, а не одним или несколькими дифференциальными уравнениями n-го порядка.
Первый шаг в сером ящике - это написание функции, которая возвращает матрицы пространства состояний как функцию от пользовательских параметров и информации о модели.
Используйте следующий формат, чтобы реализовать линейную модель серого ящика в файле:
[A,B,C,D] = myfunc(par1,par2,...,parN,Ts,aux1,aux2,...)
где выходными аргументами являются матрицы пространства состояний и myfunc
- имя файла. par1,par2,...,parN
являются N параметрами модели. Каждая запись может быть скаляром, вектором или матрицей Ts.
- шаг расчета. aux1,aux2,...
являются ли необязательными входными параметрами, которые myfunc
использует, чтобы вычислить матрицы пространства состояний в дополнение к параметрам и шагу расчета. aux
содержит вспомогательные переменные в вашей системе. Вы используете вспомогательные переменные, чтобы варьировать системные параметры на входе в функцию и избегать редактирования файла.
Можно записать содержимое myfunc
параметризация модели пространства состояний в непрерывном времени или в дискретном времени, или и того, и другого. Когда вы создаете линейную модель серый ящик с помощью myfunc
, можно задать характер выходных аргументов myfunc
. Модель пространства состояний в непрерывном времени имеет вид:
В непрерывном времени описание пространства состояний имеет следующую форму:
где, A, B, C и D являются матрицами, которые параметризованы параметрами par1,par2,...,parN
. Матрица шума K и вектор начального состояния, x0, не параметризованы myfunc
. В некоторых приложениях можно хотеть выразить K и x0 как величины, которые параметризованы выбранными параметрами, так же как A, B, C и D матрицы. Для обработки таких случаев можно записать файл ODE, myfunc
, для возврата K и x0 в качестве дополнительных выходных аргументов:
[A,B,C,D,K,x0] = myfunc(par1,par2,...,parN,Ts,aux1,aux2,...)
par1,par2,...,parN
. Чтобы сконфигурировать обработку начальных состояний, x0 и компонента нарушения порядка, K во время оценки используйте greyestOptions
набор опций.В дискретном времени описание пространства состояний имеет сходную форму:
где A, B, C и D теперь являются матрицами дискретного времени, которые параметризованы параметрами par1,par2,...,parN
. K и x0 не параметризованы непосредственно, но могут быть оценены, если требуется, путем конфигурирования соответствующих опций оценки.
После создания функции или файла MEX со структурой модели, вы должны задать idgrey
объект модели.
В этом примере показано, как представлять структуру следующей модели в непрерывном времени:
Это уравнение представляет электродвигатель, где - угловое положение вала мотора, и является скоростью вращения. Параметр является обратной временной константой двигателя и является статическим усилением от входа до скорости вращения.
Двигатель находится в состоянии покоя в t
= 0, но его угловое положение неизвестно. Предположим, что приблизительные номинальные значения неизвестных параметров, и. Для получения дополнительной информации об этом примере смотрите раздел о моделях пространства состояний в Система Идентификации: Theory for the User, Second Edition, Lennart Ljung, Prentice Hall PTR, 1999.
Структура модели пространства состояний в непрерывном времени определяется следующим уравнением:
Если вы хотите оценить ту же модель с помощью структурированного представления пространства состояний, см. «Оценка структурированных моделей пространства состояний непрерывного времени».
Чтобы подготовить эту модель к оценке:
Создайте следующий файл, чтобы представлять структуру модели в этом примере:
function [A,B,C,D,K,x0] = myfunc(par,T)
A = [0 1; 0 par(1)];
B = [0;par(2)];
C = eye(2);
D = zeros(2,1);
K = zeros(2,2);
x0 = [par(3);0];
Сохраните файл так, чтобы он находился в пути поиска файлов MATLAB ®.
Используйте следующий синтаксис, чтобы задать idgrey
объект модели на основе myfunc
файл:
par = [-1; 0.25; 0]; aux = {}; T = 0; m = idgrey('myfunc',par,'c',aux,T);
где par
представляет вектор всех пользовательских параметров и содержит их номинальные (начальные) значения. В этом примере все скалярные параметры сгруппированы в par
вектор. Скалярные параметры также могли быть рассмотрены как независимые входные параметры в функцию ODE myfunc
. 'c'
задает, что базовая параметризация находится в непрерывном времени. aux
представляет необязательные аргументы. Как myfunc
не имеет дополнительных аргументов, используйте aux = {}
. T
задает шаг расчета; T = 0
указывает модель в непрерывном времени.
Загрузите данные оценки.
load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata')); data = iddata(y,u,0.1);
Использование greyest
для оценки значений параметров серого ящика:
m_est = greyest(data,m);
где data
- данные оценки и m
является инициализацией оценки idgrey
модель. m_est
является оценочным idgrey
модель.