firpm

Создание оптимального КИХ-фильтра Parks-McClellan

Описание

пример

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

пример

b = firpm(n,f,a,w) использует w для взвешивания интервалов частоты.

b = firpm(n,f,a,ftype) использует тип фильтра, заданный как 'ftype'.

b = firpm(n,f,a,lgrid) использует целое число lgrid для управления плотностью частотной сетки.

[b,err] = firpm(___) возвращает максимальную высоту пульсации в err. Вы можете использовать это с любым из предыдущих входных синтаксисов.

[b,err,res] = firpm(___) возвращает характеристики частотной характеристики как структуру res.

b = firpm(n,f,fresp,w) возвращает конечную импульсную характеристику фильтр, характеристики которого лучше всего аппроксимируют характеристику, возвращаемую указателем на функцию fresp.

b = firpm(n,f,fresp,w,ftype) разрабатывает антисимметричные (нечетные) фильтры, где ftype задает фильтр как дифференциатор или трансформатор Гильберта. Если вы не задаете ftype, выполняется вызов на fresp для определения свойства симметрии по умолчанию.

Примеры

свернуть все

Используйте алгоритм Паркса-Макклеллана, чтобы спроектировать полосно-пропускающий фильтр конечную импульсную характеристику порядка 17. Задайте нормированные частоты диапазона остановок 0.3π и 0.7π рад/выборка и нормированные частоты полосы пропускания 0.4π и 0.6π рад/образец. Постройте график идеальных и фактических величин реакций.

f = [0 0.3 0.4 0.6 0.7 1];
a = [0 0 1 1 0 0];
b = firpm(17,f,a);

[h,w] = freqz(b,1,512);
plot(f,a,w/pi,abs(h))
legend('Ideal','firpm Design')
xlabel 'Radian Frequency (\omega/\pi)', ylabel 'Magnitude'

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Ideal, firpm Design.

Проектируйте lowpass с частотой отключения полосы пропускания 1500 Гц и частотой отключения полосы пропускания 2000 Гц. Задайте частоту дискретизации 8000 Гц. Требуйте максимальную амплитуду полосы упора 0,01 и максимальную ошибку полосы пропускания (пульсацию) 0,001. Получите необходимый порядок фильтра, нормированные ребра полосы частот, амплитуды полосы частот и веса с помощью firpmord.

[n,fo,ao,w] = firpmord([1500 2000],[1 0],[0.001 0.01],8000);
b = firpm(n,fo,ao,w);
fvtool(b,1)

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.

Используйте алгоритм Паркса-Макклеллана, чтобы создать полосовой фильтр конечной импульсной характеристики 50-го порядка для использования с сигналами, дискретизированными на частоте 1 кГц.

N = 50;
Fs = 1e3;

Указать, что диапазон пропускания охватывает частоты между 200 Гц и 300 Гц и что переходная область с каждой стороны полосы пропускания имеет ширину 50 Гц.

Fstop1 = 150;
Fpass1 = 200;
Fpass2 = 300;
Fstop2 = 350;

Проектируйте фильтр так, чтобы оптимизация подгонки взвешивала низкочастотную полосу стопора с весом 3, полосу пропускания с весом 1 и высокочастотную полосу стопора с весом 100. Отобразите величину ответ фильтра.

Wstop1 = 3;
Wpass = 1;
Wstop2 = 100;

b = firpm(N,[0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2), ...
    [0 0 1 1 0 0],[Wstop1 Wpass Wstop2]);

fvtool(b,1)

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.

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

свернуть все

Порядок фильтра, заданный как действительная положительная скалярная величина.

Нормированные частотные точки, заданные как действительный вектор. Аргумент должен находиться в области значений [0, 1], где 1 соответствует частоте Найквиста. Количество элементов в векторе всегда кратно 2. Частоты должны быть в порядке возрастания.

Желаемые амплитуды в точках, заданных в f, заданный как вектор. f и a должна быть одинаковой длины. Длина должна быть четным числом.

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

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

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

Тип фильтра для линейно-фазовых фильтров с нечетной симметрией (тип III и тип IV), заданный как 'hilbert' или 'differentiator':

  • 'hilbert' - Выходные коэффициенты в b подчиниться отношению b (k ) = - b ( n + 2 - k) , k = 1,.. ., n + 1. Этот класс фильтров включает трансформатор Гильберта, который имеет желаемую амплитуду 1 по всей полосе.

    Для примера,

    h = firpm(30,[0.1 0.9],[1 1],'hilbert');
    

    проектирует приблизительную конечную импульсную характеристику трансформатора Гильберта длиной 31.

  • 'differentiator' - Для ненулевых полос амплитуды фильтр взвешивает ошибку в 1/ f раза, так что ошибка на низких частотах намного меньше, чем на высоких частотах. Для конечной импульсной характеристики дифференциаторов, которые имеют амплитудную характеристику, пропорциональную частоте, эти фильтры минимизируют максимальную относительную погрешность (максимальное отношение ошибки к желаемой амплитуде).

Управляйте плотностью частотной сетки, которая имеет примерно (lgrid*n)/(2*bw) частотные точки, где bw - доля общего интервала полосы частот [0,1], покрытая f. Увеличение lgrid часто приводит к фильтрам, которые более точно соответствуют фильтру equiripple, но для вычисления которых требуется больше времени. Значение по умолчанию 16 - минимальное значение, которое должно быть задано для lgrid.

Частотная характеристика, заданная как указатель на функцию. Функция вызывается изнутри firpm с помощью этого синтаксиса:

[dh,dw] = fresp(n,f,gf,w)

Аргументы аналогичны аргументам для firpm:

  • n - порядок фильтра.

  • f - вектор нормированных ребер полосы частот, которые появляются монотонно между 0 и 1, где 1 является частотой Найквиста.

  • gf является вектором точек сетки, которые были линейно интерполированы в каждом заданной полосе частот firpm. gf определяет сетку частот, на которой должна быть оценена функция отклика, и содержит те же данные, возвращенные cfirpm в fgrid поле opt структура.

  • w - вектор действительных, положительных весов, по одному на полосу, используемых во время оптимизации. w опционально при вызове firpm; если не задано, перед передачей в fresp устанавливается взвешивание единиц.

  • dh и dw являются ли желаемые векторы комплексной частотной характеристики и полосы веса, соответственно, оцененными на каждой частоте в сетке gf.

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

свернуть все

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

Максимальная высота пульсации, возвращаемая как скаляр.

Характеристики частотной характеристики, возвращенные как структура. Структура res имеет следующие поля:

res.fgrid

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

res.des

Желаемая частотная характеристика для каждой точки в res.fgrid

res.wt

Взвешивание для каждой точки в opt.fgrid

res.H

Фактическая частотная характеристика для каждой точки в res.fgrid

res.error

Ошибка в каждой точке res.fgrid (res.des-res.H)

res.iextr

Вектор индексов в res.fgrid для экстремальных частот

res.fextr

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

Совет

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

Если ваше создание фильтра не сходится и полученное создание фильтра не верно, попробуйте одно или несколько из следующих:

  • Увеличьте порядок фильтра.

  • Расслабьте создание фильтра путем уменьшения ослабления в полосах стопоров и/или расширения переходных областей.

Алгоритмы

firpm проектирует КИХ-фильтр линейной фазы с помощью алгоритма Паркса-Макклеллана [2]. Алгоритм Паркса-Макклеллана использует алгоритм обмена Ремеза и теорию приближения Чебышёва для разработки фильтров с оптимальной подгонкой между желаемой и фактической частотными характеристиками. Фильтры оптимальны в том смысле, что максимальная ошибка между желаемой частотной характеристикой и фактической частотной характеристикой минимизирована. Фильтры, разработанные таким образом, показывают поведение equiripple в своих частотных характеристиках и иногда называются фильтрами equiripple. firpm проявляет разрывы в голове и хвосте своей импульсной характеристики из-за этого свойства равновесия.

Это тип I (n нечетный) и тип II (n четные) линейно-фазовые фильтры. Векторы f и a задайте частотно-амплитудные характеристики фильтра:

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

  • a - вектор, содержащий необходимую амплитуду в точках, заданных в f.

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

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

  • f и a имеют одинаковую длину. Эта длина должна быть четным числом.

Рисунок ниже иллюстрирует связь между f и a векторы в определении желательной амплитудной характеристики.

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

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

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

Тип I

Даже

четные:

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

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

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

Тип II

Странный

четные:

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

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

H (1 )  =0

firpm увеличивает порядок фильтра на 1, если вы пытаетесь создать фильтр типа II с ненулевым диапазоном пропускания на частоте Найквиста.

Тип III

Даже

нечетные:

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

H (0 )  =0

H (1 )  =0

Тип IVСтранный

нечетные:

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

H (0 )  =0

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

Можно также использовать firpm чтобы записать функцию, которая задает необходимую частотную характеристику. Предопределенный указатель на функцию частотной характеристики для firpm является @firpmfrf, который проектирует КИХ-фильтр линейной фазы.

Примечание

b = firpm(n,f,a,w) эквивалентно b = firpm(n,f,{@firpmfrf,a},w), где, @firpmfrf является предопределенным указателем на функцию частотной характеристики для firpm. При желании можно написать собственную функцию ответа. Использование help private/firpmfrf и см. «Создание указателя на функцию» для получения дополнительной информации.

Ссылки

[1] Комитет по цифровой обработке сигналов Общества акустики, речи и обработки сигналов IEEE, eds. Выбранные документы в цифровой обработке сигналов. Vol. II. New York: IEEE Press, 1976.

[2] Комитет по цифровой обработке сигналов Общества акустики, речи и обработки сигналов IEEE, eds. Программы для цифровой обработки сигналов. Нью-Йорк: IEEE Press, 1979, алгоритм 5.1.

[3] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. Верхний Седл-Ривер, Нью-Джерси: Prentice Hall, 1999, с. 486.

[4] Parks, Thomas W., and C. Sidney Burrus. Создание цифровых фильтров. Нью-Йорк: Джон Уайли и сыновья, 1987, стр. 83.

[5] Рабинер, Лоуренс Р., Джеймс Х. Макклеллан и Томас В. Паркс. Конечная импульсная характеристика Создания цифровых фильтров техники с использованием взвешенных чебышевских Приближений. Материалы IEEE®. Том 63, № 4, 1975, стр. 595-610.

Расширенные возможности

.
Представлено до R2006a