Оцените общие модели вход-выход с использованием рекурсивного метода минимизации ошибок предсказания
thm = rpem(z,nn,adm,adg) [thm,yhat,P,phi,psi] = rpem(z,nn,adm,adg,th0,P0,phi0,psi0)
rpem
несовместим с MATLAB® Coder™ или MATLAB Compiler™. Для особых случаев моделей ARX, AR, ARMA, ARMAX, Box-Jenkins и Output-Error, используйте recursiveARX
, recursiveAR
, recursiveARMA
, recursiveARMAX
, recursiveBJ
, и recursiveOE
, соответственно.
Параметры общей линейной структуры модели
оцениваются с помощью рекурсивного метода предсказания ошибки.
Входно-выходные данные содержатся в z
, который является либо iddata
объект или матрица z = [y u]
где y
и u
являются векторы-столбцы. (В случае с несколькими входами u
содержит по одному столбцу для каждого входа.) nn
дается как
nn = [na nb nc nd nf nk]
где na
, nb
, nc
, nd
, и nf
являются порядками модели, и nk
- задержка. Для систем с несколькими входами, nb
, nf
, и nk
Векторы-строки дают порядки и задержки каждого входа. Смотрите, что такое полиномиальные модели? для точного определения порядков.
Предполагаемые параметры возвращаются в матрицу thm
. The k
первая строка thm
содержит параметры, сопоставленные со временем k
; то есть они основаны на данных в строках до строки включительно k
в z
. Каждая строка thm
содержит предполагаемые параметры в следующем порядке.
thm(k,:) = [a1,a2,...,ana,b1,...,bnb,... c1,...,cnc,d1,...,dnd,f1,...,fnf]
Для систем с несколькими входами часть B в вышеописанном выражении повторяется для каждого входного сигнала перед началом части C, и часть F также повторяется для каждого входного сигнала. Это то же упорядоченное расположение, что и в m.par
.
yhat
- предсказанное значение выхода, согласно текущей модели; то есть строка k
от yhat
содержит предсказанное значение y(k)
на основе всех прошлых данных.
Фактический алгоритм выбирается с двумя аргументами adg
и adm
:
adm = 'ff'
и adg
= lam
задайте алгоритм забывающего коэффициента с коэффициентом забываемости =lam
. Этот алгоритм также известен как рекурсивный метод наименьших квадратов (RLS). В этом случае матрица P
имеет следующую интерпретацию: R2 /2
* P
приблизительно равен ковариационной матрице предполагаемых параметров. R2 - отклонение нововведений (истинные ошибки предсказания e (t)).
adm ='ug'
и adg = gam
задайте неормализованный алгоритм градиента с усилением gamma = gam
. Этот алгоритм также известен как нормализованные наименьшие средние квадраты (LMS).
adm ='ng'
и adg
= gam
задайте нормированный градиент или нормализованный алгоритм наименьших средних квадратов (NLMS). В этих случаях P
не применяется.
adm ='kf'
и adg =R1
задайте алгоритм, основанный на фильтре Калмана, с R2 = 1
и R1 = R1
. Если отклонение нововведений e (t) не единство, а R2; затем R2 * P
- ковариационная матрица оценок параметров, в то время как R1 = R1
/ R2 - ковариационная матрица изменений параметров.
Входной параметр th0
содержит начальное значение параметров, вектор-строку, соответствующее строкам thm
. Значение по умолчанию th0
это все нули.
Аргументы P0
и P
- начальное и окончательное значения, соответственно, масштабированной ковариационной матрицы параметров. Значение по умолчанию P0
равен 104 умножение на единичную матрицу. Аргументы phi0
, psi0
, phi
, и psi
содержат начальное и окончательное значения вектора данных и вектора градиента, соответственно. Размеры этих параметров зависят от выбранных порядков моделей. Нормальный выбор phi0
и psi0
- использовать выходы от предыдущего вызова, чтобы rpem
с теми же порядками моделей. (Этот вызов может быть фиктивным вызовом с входными параметрами по умолчанию.) Значения по умолчанию phi0
и psi0
все нули.
Обратите внимание, что функция требует, чтобы задержка nk
быть больше 0
. Если хотите nk = 0
, соответствующим образом сдвиньте входную последовательность и используйте nk = 1
.
Задайте порядок и задержки структуры полиномиальной модели.
na = 2; nb = 1; nc = 1; nd = 1; nf = 0; nk = 1;
Загрузите данные оценки.
load iddata1 z1
Оцените параметры с помощью алгоритма забывания коэффициента с коэффициентом забывания 0.99.
EstimatedParameters = rpem(z1,[na nb nc nd nf nk],'ff',0.99);
Получите последний набор предполагаемых параметров.
p = EstimatedParameters(end,:);
Создайте полиномиальную модель с предполагаемыми параметрами.
sys = idpoly([1 p(1:na)],... % A polynomial [zeros(1,nk) p(na+1:na+nb)],... % B polynomial [1 p(na+nb+1:na+nb+nc)],... % C polynomial [1 p(na+nb+nc+1:na+nb+nc+nd)]); % D polynomial sys.Ts = z1.Ts;
Сравните предполагаемый выход с измеренными данными.
compare(z1,sys);
Реализован общий алгоритм рекурсивного предсказания ошибки (11.44) Ljung (1999). Смотрите также Рекурсивные Алгоритмы для Онлайн Оценки Параметра.
nkshift
| recursiveAR
| recursiveARMA
| recursiveARMAX
| recursiveARX
| recursiveBJ
| recursiveOE
| rplr