В этом примере показано, как создать одно вход и структуру модели серого ящика одно выхода, когда вы знаете отклонение шума измерения. Код в этом примере использует команду Control System Toolbox™ kalman
(Control System Toolbox) для вычисления Кальмана получает от известного и оцененного шумового отклонения.
Этот пример основан на дискретном, одно входе и одно выходе (SISO) система, представленная следующими уравнениями пространства состояний:
где w и e являются независимыми бело-шумовыми условиями с ковариационными матрицами R1 и R2, соответственно. R1=E {ww'} является матрицей 2 на 2, и R2=E {ee'} является скаляром. par1, par2, par3, и par4 представляют неизвестные значения параметров, которые будут оценены.
Примите, что вы знаете, что отклонение шума измерения R2 1. R1 (1,1) неизвестен и обработан как дополнительный параметр par5. Остающимися элементами R1, как известно, является нуль.
Можно представлять систему, описанную в Описании Системы SISO как idgrey
(серый ящик) использование модели функции. Затем можно использовать этот файл и greyest
команда, чтобы оценить параметры модели на основе начальных предположений параметра.
Чтобы запустить этот пример, необходимо загрузить набор данных ввода - вывода и представлять его как iddata
или idfrd
возразите названному data
. Для получения дополнительной информации об этой операции, смотрите, что Временной и частотный диапазон Представления Использует Объекты iddata или Представляет Данные Частотной характеристики Используя Объекты idfrd.
Оценить параметры модели серого ящика:
Создайте файл mynoise
это вычисляет матрицы пространства состояний в зависимости от пяти неизвестных параметров и вспомогательной переменной, которая представляет известное отклонение R2
. Начальные условия не параметрируются; они приняты, чтобы быть нулем во время этой оценки.
Примечание
R2
обработан как вспомогательная переменная, а не присвоил значение в файле, чтобы позволить вам изменить это значение непосредственно в командной строке и постараться не редактировать файл.
function [A,B,C,D,K] = mynoise(par,T,aux) R2 = aux(1); % Known measurement noise variance A = [par(1) par(2);1 0]; B = [1;0]; C = [par(3) par(4)]; D = 0; R1 = [par(5) 0;0 0]; [~,K] = kalman(ss(A,eye(2),C,0,T),R1,R2);
Задайте исходные предположения для неизвестных значений параметров и вспомогательного значения параметров R2
:
par1 = 0.1; % Initial guess for A(1,1) par2 = -2; % Initial guess for A(1,2) par3 = 1; % Initial guess for C(1,1) par4 = 3; % Initial guess for C(1,2) par5 = 0.2; % Initial guess for R1(1,1) Pvec = [par1; par2; par3; par4; par5] auxVal = 1; % R2=1
Создайте idgrey
модель с помощью mynoise
файл:
Minit = idgrey('mynoise',Pvec,'d',auxVal);
Третий входной параметр 'd'
задает систему дискретного времени.
Оцените значения параметра модели из данных:
opt = greyestOptions; opt.InitialState = 'zero'; opt.Display = 'full'; Model = greyest(data,Minit,opt)
greyest
| idgrey
| kalman
(Control System Toolbox)