rpem

Оцените общие модели вход-выход с использованием рекурсивного метода минимизации ошибок предсказания

Синтаксис

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, соответственно.

Параметры общей линейной структуры модели

A(q)y(t)=B1(q)F1(q)u1(tnk1)+...+Bnu(q)Fnu(q)unu(tnknu)+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. 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);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent z1 (y1), sys: 68.4%.

Алгоритмы

Реализован общий алгоритм рекурсивного предсказания ошибки (11.44) Ljung (1999). Смотрите также Рекурсивные Алгоритмы для Онлайн Оценки Параметра.

Представлено до R2006a