Оценка общих моделей ввода-вывода с использованием метода минимизации ошибок рекурсивного прогнозирования
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соответственно.
Параметры общей структуры линейной модели
t − nknu) + C (q) D (q) e (t)
оцениваются с использованием метода рекурсивного предсказания ошибок.
Данные ввода-вывода содержатся в 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. 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 задать алгоритм ненормализованного градиента с гаммой усиления = 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