firls

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

Синтаксис

b = firls(n,f,a)
b = firls(n,f,a,w)
b = firls(n,f,a,ftype)
b = firls(n,f,a,w,ftype)

Описание

пример

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')

Следующее показывает, как разработать 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);

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

[H,F] = freqz(b,1);
plot(F,abs(H));
set(gca,'xlim',[0 pi])
legend('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