firls

Проект КИХ-фильтра линейной фазы наименьшего квадрата

Описание

пример

b = firls(n,f,a) возвращает вектор-строку b содержа n+1 коэффициенты порядка n КИХ-фильтр. Этот фильтр имеет амплитудные частотой характеристики, приблизительно совпадающие с данными векторами, f и a.

b = firls(n,f,a,w) использует веса в векторном w, взвешивать ошибку.

пример

b = firls(n,f,a,ftype) задает тип фильтра где ftype :

  • 'hilbert'

  • 'differentiator'

b = firls(n,f,a,w,ftype) использует веса в векторном w взвешивать ошибку. Это также задает тип фильтра где ftype :

  • 'hilbert'

  • 'differentiator'

Примеры

свернуть все

Следующее иллюстрирует, как спроектировать фильтр lowpass порядка 225 с полосой перехода.

Создайте частоту и амплитудные векторы, f и a.

f = [0 0.25 0.3 1]
f = 1×4

         0    0.2500    0.3000    1.0000

a = [1 1 0 0]
a = 1×4

     1     1     0     0

Используйте firls получить n+1 коэффициенты порядка n КИХ-фильтр lowpass.

b = firls(255,f,a);

Покажите импульсную характеристику фильтра

fvtool(b,'impulse')

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

Следующее показывает, как спроектировать 24-й порядок антисимметричный фильтр с кусочными линейными полосами пропускания и построить желаемые и фактические амплитудные ответы.

Создайте частоту и амплитудные векторы, f и a.

f = [0 0.3 0.4 0.6 0.7 0.9];
a = [0 1 0 0 0.5 0.5];

Используйте firls получить 25 коэффициентов фильтра.

b = firls(24,f,a,'hilbert');

Постройте идеальный амплитудный ответ наряду с областями перехода.

plot(f.*pi,a,'o','markerfacecolor',[1 0 0]);
hold on;
plot(f.*pi,a,'r--','linewidth',2);

Figure contains an axes. The axes contains 2 objects of type line.

Используйте freqz получить частотную характеристику спроектированного фильтра и построить ответ величины фильтра.

[H,F] = freqz(b,1);
plot(F,abs(H));
set(gca,'xlim',[0 pi])
legend('Filter Specification','Transition Regions','Magnitude Response')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Filter Specification, Transition Regions, Magnitude Response.

Входные параметры

свернуть все

Порядок фильтра в виде целочисленного скаляра. Для нечетных порядков частотная характеристика на частоте Найквиста обязательно 0. Поэтому firls всегда использует ровного порядка фильтра для настроек с полосой пропускания на частоте Найквиста. Если вы задаете n с нечетным знаком, firls шаг это 1.

Пример 8

Типы данных: int8 | int16 | int32 | int64

Пары частоты указывают в виде вектора из значений, располагающихся между 0 и 1, где 1 соответствует частоте Найквиста. Частоты должны быть в увеличивающемся порядке, и дублирующиеся точки частоты позволены. Можно использовать дублирующиеся точки частоты, чтобы спроектировать фильтры точно как возвращенные fir1 и fir2 функции с прямоугольным (rectwin) окно.

f и a та же длина. Эта длина должна быть четным числом.

Пример: [0 0.3 0.4 1]

Типы данных: double | single

Амплитудные значения функции на каждой частоте указывают в виде вектора из той же длины как f. Эта длина должна быть четным числом.

Желаемая амплитуда на частотах между парами точек (f (k)f (k+1)) для нечетного k, линейный сегмент, соединяющий точки (f (k)(k)) и (f (k+1)(k+1)).

Желаемая амплитуда на частотах между парами точек (f (k)f (k+1)) для k даже не задана. Это переход, или “не заботятся” об областях.

Пример: 1:100

Типы данных: double | single

Веса, чтобы взвесить пригодное для каждого диапазона частот в виде вектора из длины половина длины f и a, таким образом, существует точно один вес на полосу. w указывает сколько акцента, чтобы поставить минимизацию интегральной квадратичной невязки в каждой полосе, относительно других полос.

Пример: [0.5 1]

Типы данных: double | single

Отфильтруйте тип в виде любого 'hilbert' или 'differentiator'.

Пример: 'Гильберт'

Типы данных: char

Выходные аргументы

свернуть все

Отфильтруйте коэффициенты, возвращенные как числовой вектор из n+1 значения, где n порядок фильтра.

b = firls(n,f,a) проектирует фильтр линейной фазы типа I (n нечетный) и тип II (n). Выходные коэффициенты или “касания”, в b выполните отношение:

b (k) = b (n+2-k), k = 1..., n + 1

b = firls(n,f,a,'hilbert') проектирует фильтр линейной фазы с нечетной симметрией (тип III и IV типа). Выходные коэффициенты или “касания”, в b выполните отношение:

b (k) = –b (n+2-k), k = 1..., n + 1

b = firls(n,f,a,'differentiator') тип III проектов и фильтры IV типа, с помощью специального метода взвешивания. Для ненулевых амплитудных полос интегрированная квадратичная невязка имеет вес (1/f) 2. Это взвешивание заставляет ошибку в низких частотах быть намного меньшей, чем на высоких частотах. Для КИХ-дифференциаторов, которые имеют амплитудную характеристику, пропорциональную частоте, фильтры минимизируют интегрированную квадратичную невязку родственника. Это значение является интегралом квадрата отношения ошибки к желаемой амплитуде.

Больше о

свернуть все

Диагностика

Сообщения об ошибке и предупреждающие сообщения

Одно из следующих диагностических сообщений отображено, когда неправильный аргумент используется:

F must be even length.
F and A must be equal lengths.
Requires symmetry to be 'hilbert' or 'differentiator'.
Requires one weight per band.
Frequencies in F must be nondecreasing.
Frequencies in F must be in range [0,1].

Более серьезное предупреждающее сообщение

Warning: Matrix is close to singular or badly scaled.

Это имеет тенденцию происходить, когда продукт длины фильтра и ширины перехода становится большим. В этом случае коэффициенты фильтра b не могут представлять желаемый фильтр. Можно проверять фильтр путем рассмотрения его частотной характеристики.

Алгоритмы

firls проектирует КИХ-фильтр линейной фазы. Этот фильтр минимизирует взвешенную, интегрированную квадратичную невязку между идеальной кусочной линейной функцией и ответом величины фильтра по набору желаемых диапазонов частот.

Ссылка [1] описывает теоретический подход позади firls. Функция решает систему линейных уравнений, включающих матрицу скалярного произведения размера примерно n/2 использование MATLAB® \оператор.

Эта функция проектирует тип I, II, III и фильтры линейной фазы IV. Тип I и II является значениями по умолчанию для n, четного и нечетного соответственно. 'hilbert' и 'differentiator' флаги производят тип III (n даже) и IV (n нечетный) фильтры. Различные типы фильтра имеют различные симметрии и ограничения на их частотные характеристики (см. [2] для деталей).

Линейный тип фильтра фазыПорядок фильтраСимметрия коэффициентовОтвет H (f), f = 0Ответ H (f), f = 1 (Найквист)

Тип I

Даже

b (k) = b (n+2-k), k=1..., n+1

Никакое ограничение

Никакое ограничение

Тип II

Нечетный

b (k) = b (n+2-k), k=1..., n+1

Никакое ограничение

H (1) = 0

Тип III

Даже

b (k) = –b (n+2-k), k=1..., n+1

H (0) = 0

H (1) = 0

Введите IV

Нечетный

b (k) = –b (n+2-k), k=1..., n+1

H (0) = 0

Никакое ограничение

Ссылки

[1] Парки, T.W., и К.С. Беррус, Создание цифровых фильтров, John Wiley & Sons, 1987, стр 54-83.

[2] Оппенхейм, A.V., и Р.В. Шафер, Обработка сигналов Дискретного времени, Prentice Hall, 1989, стр 256-266.

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

| | |

Введенный в R2011a