stmcb

Вычислите линейную модель с помощью итерации Steiglitz-McBride

Синтаксис

[b,a] = stmcb(h,nb,na)
[b,a] = stmcb(y,x,nb,na)
[b,a] = stmcb(h,nb,na,niter)
[b,a] = stmcb(y,x,nb,na,niter)
[b,a] = stmcb(h,nb,na,niter,ai)
[b,a] = stmcb(y,x,nb,na,niter,ai)

Описание

Итерация Steiglitz-McBride является алгоритмом для нахождения БИХ-фильтра с предписанной импульсной характеристикой временного интервала. Это имеет приложения и в создании фильтра и в системе идентификации (параметрическое моделирование).

[b,a] = stmcb(h,nb,na) находит коэффициенты b и a из системы b (z)/a (z) с аппроксимированной импульсной характеристикой h, точно nb нули, и точно na полюса.

[b,a] = stmcb(y,x,nb,na) находит системные коэффициенты b и a из системы это, учитывая x как введено, имеет y как выведено. x и y должна быть та же длина.

[b,a] = stmcb(h,nb,na,niter) и

[b,a] = stmcb(y,x,nb,na,niter) используйте niter итерации. Значение по умолчанию для niter 5.

[b,a] = stmcb(h,nb,na,niter,ai) и

[b,a] = stmcb(y,x,nb,na,niter,ai) используйте векторный ai как первоначальная оценка коэффициентов знаменателя. Если ai не задан, stmcb использует выходной аргумент от  [b,ai] = prony(h,0,na) как векторный ai.

stmcb возвращает БИХ-коэффициенты фильтра в длине nb+1 и na+1 векторы-строки b и a. Коэффициенты фильтра упорядочены в убывающих степенях z.

H(z)=B(z)A(z)=b(1)+b(2)z1++b(nb+1)znba(1)+a(2)z1++a(na+1)zna

Примеры

свернуть все

Аппроксимируйте импульсную характеристику БИХ-фильтра с системой низшего порядка.

Задайте 6-й порядок Фильтр Баттерворта с нормированной частотой на 3 дБ 0.2π рад/выборка.

d = designfilt('lowpassiir','FilterOrder',6, ...
    'HalfPowerFrequency',0.2,'DesignMethod','butter');

Используйте итерацию Steiglitz-McBride, чтобы аппроксимировать фильтр системой 4-го порядка.

h = impz(d);
[bb,aa] = stmcb(h,4,4);

Постройте частотные характеристики этих двух систем.

hfvt = fvtool(d,bb,aa,'Analysis','freq');
legend(hfvt,'Butterworth','Steiglitz-McBride')

Диагностика

Если x и y имейте различные длины, stmcb производит это сообщение об ошибке:

Input signal X and output signal Y must 
have the same length.

Алгоритмы

stmcb попытки минимизировать квадратичную невязку между импульсной характеристикой h b (z) /a (z) и входным сигналом x.

mina,bi=0|x(i)h(i)|2

stmcb выполняет итерации использования двух шагов:

  1. Это предварительные фильтры h и x использование 1/a (z).

  2. Это решает систему линейных уравнений для b и a использование \.

stmcb повторения этот процесс niter \times. Никакая проверка не сделана, чтобы видеть если b и a коэффициенты сходились в меньше, чем niter итерации.

Ссылки

[1] Steiglitz, K. и Л. Э. Макбрайд. “Метод для Идентификации Линейных систем”. IEEE® Transactions на Автоматическом управлении. Издание AC-10, 1965, стр 461–464.

[2] Ljung, Lennart. System Identification: Теория для Пользователя. 2-й Выпуск. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999, p. 354.

Смотрите также

| | |

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