fircband

Фильтр с ограниченной полосой конечной импульсной характеристики equiripple

Синтаксис

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 является алгоритмом минимаксного создания фильтра, который вы используете для разработки следующих типов фильтров real конечной импульсной характеристики:

  • Типы 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 * логарифмическому ограничению (ограничению), где ограничение является значением, которое вы вводите в функцию. Для примера, чтобы задать 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

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

res.evals

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

Примеры

свернуть все

Спроектируйте lowpass 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