exponenta event banner

fircband

Equiripple FIR-фильтр с ограниченным диапазоном

Синтаксис

b = fircband(n,f,a,w,c)
b = fircband(n,f,a,s)
b = fircband(...,'1')
b = fircband(...,'minphase')
b = fircband(..., 'check')
b = fircband(...,{lgrid})
[b,err] = fircband(...)
[b,err,res] = fircband(...)

Описание

fircband является алгоритмом конструирования фильтров minimax, который используется для конструирования следующих типов реальных фильтров FIR:

  • Типы 1-4 линейной фазе

    • Тип 1 четный, симметричный

    • Тип 2 нечетный, симметричный

    • Тип 3 четный, антисимметричный

    • Тип 4 нечетный, антисимметричный

  • Минимальная фаза

  • Максимальная фаза

  • Минимальный порядок (четный или нечетный), дополнительная пульсация

  • Максимальная рябь

  • Ограниченная пульсация

  • Одноточечная полоса (выемка и пик)

  • Форсированный выигрыш

  • Фильтры кривой частотной характеристики произвольной формы

b = fircband(n,f,a,w,c) проектирует фильтры с ограниченными значениями ошибок (пульсациями). c - массив ячеек символьных векторов той же длины, что и w. Записи c должно быть либо "c' чтобы указать, что соответствующий элемент в w является ограничением (пульсация для этой полосы не может превышать это значение) илиw' указывая, что соответствующая запись в w является весом. Должна быть хотя бы одна неограниченная полоса - c должен содержать, по крайней мере, один w вход. Например, в примере «Design a Constrained Lowpass Filter» используется вес, равный единице в полосе пропускания, и ограничение пульсации полосы останова не превышает 0,2 (около 14 дБ).

Подсказка об использовании зависимых значений: если фильтр с ограничениями не касается ограничений, увеличьте вес ошибки, применяемый к неограниченным полосам.

Обратите внимание, что при работе с ограниченными полосами останова вводится ограничение в соответствии со стандартной формулой преобразования для мощности - результирующее ослабление фильтра или ограничение равно 20 * log (ограничение), где ограничение является значением, введенным в функцию. Например, чтобы задать 20 дБ ослабления, используйте значение ограничения, равное 0,1. Это относится только к ограниченным стопорным полосам.

b = fircband(n,f,a,s) используется для проектирования фильтров со специальными свойствами в определенных частотных точках. s является массивом ячеек символьных векторов и должен иметь ту же длину, что и f и a. Записи s должен быть одним из:

  • 'n' - точка нормальной частоты.

  • 's' - одноточечная полоса. Полоса частот задается одной точкой. Необходимо указать соответствующий коэффициент усиления в этой точке частоты в a.

  • 'f' - точка форсированной частоты. Заставляет коэффициент усиления в указанной полосе частот быть заданным значением.

  • 'i' - неопределенная частотная точка. Этот аргумент используется, когда области данных примыкают друг к другу (без переходной области).

b = fircband(...,'1') создает фильтр типа 1 (симметричный четного порядка). Можно также указать фильтры типа 2 (симметричные с нечетным порядком), типа 3 (антисимметричные с четным порядком) или типа 4 (антисимметричные с нечетным порядком). Обратите внимание, что существуют ограничения a в f = 0 или f = 1 для типов 2, 3 и 4.

b = fircband(...,'minphase') конструирует фильтр КИХ с минимальной фазой. Есть также 'maxphase'.

b = fircband(..., 'check') выдает предупреждение при наличии потенциальных аномалий переходной области в отклике фильтра.

b = fircband(...,{lgrid}), где {lgrid} - массив скалярных ячеек, содержащий целое число, управляет плотностью частотной сетки.

[b,err] = fircband(...) возвращает невзвешенные значения погрешности аппроксимации. err имеет один элемент для каждой независимой аппроксимационной ошибки.

[b,err,res] = fircband(...) возвращает структуру res необязательных результатов, вычисленных fircband, и содержит следующие поля:

Поле структуры

Содержание

res.fgrid

Вектор, содержащий частотную сетку, используемую при оптимизации конструкции фильтра

res.des

Требуемый ответ на fgrid

res.wt

Веса на fgrid

res.h

Фактическая частотная характеристика на частотной сетке

res.error

Ошибка в каждой точке (требуемый отклик - фактический отклик) частотной сетки

res.iextr

Вектор индексов в fgrid внешних частот

res.fextr

Вектор экстремальных частот

res.order

Порядок фильтрации

res.edgecheck

Проверка аномалии в области перехода. Один элемент на край полосы. Значения элементов имеют следующие значения: 1 = OK, 0 = вероятная аномалия переходной области, -1 = край не проверен. Вычисляется при указании 'check' параметр ввода в синтаксисе функции.

res.iterations

Количество итераций Remez для оптимизации

res.evals

Количество оценок функций для оптимизации

Примеры

свернуть все

Создайте фильтр нижних частот 12-го порядка с ограничением на отклик фильтра.

b = fircband(12,[0 0.4 0.5 1], [1 1 0 0], ...
[1 0.2], {'w' 'c'});

При использовании fvtool для отображения результата b отображается отклик разработанного фильтра.

fvtool(b)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

Спроектируйте два фильтра различного порядка с ограничением полосы останова 60 дБ. Используйте избыточный порядок (80) во втором фильтре для улучшения пульсации полосы пропускания.

b1 = fircband(60,[0 .2 .25 1],[1 1 0 0],...
[1 .001],{'w','c'});
b2 = fircband(80,[0 .2 .25 1],[1 1 0 0],...
[1 .001],{'w','c'});
hfvt = fvtool(b1,1,b2,1);
legend(hfvt,'Filter Order 60','Filter Order 80');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent Filter Order 60, Filter Order 80.

См. также

| | |

Представлен в R2011a