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 object and other objects of type uitoolbar, uimenu. The axes object 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 object. The axes object 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 object. The axes object 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