firpm
Проектирование оптимального КИХ-фильтра методом Паркса-Макклеллана.
| Библиотека |
|
Синтаксис
Вызов функции
-
b, err, res = firpm(n, f, a)— возвращает вектор-строкуb, содержащуюn+1коэффициентов КИХ-фильтра порядкаn, максимальное отклонение амплитудной характеристики от желаемойerrи частотную характеристику в виде структурыres. Частотные и амплитудные характеристики полученного фильтра соответствуют векторамfиa.
Аргументы
Входные аргументы
#
n —
порядок фильтра
положительное целое число
Details
Порядок фильтра, заданный как положительное целое число.
| Типы данных |
|
#
f —
нормированные значения частоты
вектор | матрица
Details
Нормированные значения частоты, заданные как вектор или матрица размерностью на 1. Значения должны находиться в диапазоне [0, 1], где 1 соответствует частоте Найквиста. Количество элементов вектора всегда кратно 2. Частоты должны быть расположены в порядке возрастания.
| Типы данных |
|
#
a —
желаемая амплитудная характеристика
вектор | матрица
Details
Желаемая амплитуда в соответствующих точках f, заданная как вектор или матрица размерностью на 1. Размерности a и f должны совпадать. Размерность должна быть четным числом.
-
На отрезках с нечетным индексом интерполяция линейная.
-
На отрезках с четным индексом поведение не определено (переходные зоны).
| Типы данных |
|
#
w —
весовые коэффициенты
вектор | матрица
#
ftype —
тип фильтра
"hilbert" | "differentiator" | "multiband" | "lowpass" | "highpass" | "bandpass" | "bandstop" | "invsinc"
Details
Тип фильтра для расчета линейно-фазовых фильтров с нечетной симметрией (тип III или IV):
-
"hilbert"— фильтр Гильберта: ;Пример расчета приближенного КИХ трансформатора Гильберта длинной
31:h = firpm(30,[0.1; 0.9],[1; 1],"hilbert") -
"differentiator"— производный фильтр с весами, обратно пропорциональными частоте; -
"multiband"— многополосный фильтр; -
"lowpass"— фильтр низких частот (ФНЧ); -
"highpass"— фильтр высоких частот (ФВЧ); -
"bandpass"— полосовой фильтр; -
"bandstop"— режекторный (заграждающий) фильтр; -
"invsinc"— инверсный sinc-фильтр.
| Типы данных |
|
#
lgrid —
плотность частотной сетки
16 (по умолчанию) | скаляр
Details
Плотность частотной сетки, которая содержит примерно (lgrid*n)/(2*bw) точек, где bw — это доля общего интервала частотного диапазона [0, 1], охватываемая f. Увеличение lgrid часто приводит к получению фильтров, которые точнее соответствуют фильтрам с характеристикой с равномерным уровнем пульсаций, но требуют больше времени для вычисления. Значение по умолчанию 16 — это минимальное значение, которое следует указывать для lgrid.
| Типы данных |
|
#
fresp —
частотная характеристика
функция
Details
Используется, чтобы задать желаемую амплитуду как функцию, а не как набор значений.
Функция firpm вызывает fresp следующим образом:
dh, dw = fresp(n, f, gf, w)
Входные аргументы
-
n— порядок фильтра; -
f— вектор границ полос, значения от0до1(где1— это частота Найквиста); -
gf— сетка частот, на которой необходимо вычислить желаемую характеристику; -
w— вектор весовых коэффициентов, по одному на каждую полосу (если не указан, тоw = ones(…)).
Выходные аргументы
-
dh— желаемая частотная характеристика, рассчитанная на частотной сеткеgf; -
dw— вектор весовых коэффициентов, соответствующихgf, обычно повторяющийwна соответствующих участках.
Пример функции fresp:
function fresp(
n::Int,
f::AbstractArray{<:Real},
gf::AbstractArray{<:Real},
w::AbstractArray{<:Real}
)
dh = Float64.((gf .>= f[1]) .& (gf .<= f[2])) # The frequency response is equal to 1 in the band [f[1], f[2]]
dw = ones(length(gf)) .* w[1] # The weight is the same across the band
return dh, dw
end
Выходные аргументы
#
err —
максимальное отклонение амплитудной характеристики от желаемой
вещественный скаляр
Details
Максимальное отклонение амплитудной характеристики от желаемой, возвращаемое в виде скаляра.
#
res —
частотная характеристика
структура
Details
Частотная характеристика, возвращаемая в виде структуры. Структура res имеет следующие поля:
-
res.fgrid— вектор частотной сетки, используемый для оптимизации конструкции фильтра; -
res.des— желаемая частотная характеристика для каждой точкиres.fgrid; -
res.wt— весовые коэффициенты в каждой точкеres.fgrid; -
res.H— полученная частотная характеристика для каждой точкиres.fgrid; -
res.error— ошибка для каждой точкиres.fgrid(res.des-res.H); -
res.iextr— вектор индексов экстремальных частот вres.fgrid; -
res.fextr— вектор экстремальных частот.
Советы
Если фильтр не сходится, возможно, он спроектирован неправильно. Верифицируйте правильность расчета, проверив частотную характеристику.
Если фильтр не сходится и полученный результат неверен, попробуйте выполнить одно или несколько из следующих действий:
-
Увеличьте порядок фильтра.
-
Смягчите расчет фильтра, уменьшив затухание в полосах задерживания и/или расширив переходные области.
Алгоритмы
Функция firpm проектирует КИХ-фильтр с линейной фазовой характеристикой, используя алгоритм Паркса-Макклеллана [2]. Алгоритм Паркса-Макклеллана использует алгоритм замены Ремеза и теорию приближений Чебышева для проектирования фильтров с оптимальным соответствием между желаемой и фактической частотными характеристиками. Фильтры оптимальны в том смысле, что максимальная ошибка между желаемой и фактической частотными характеристиками минимизирована. Фильтры, разработанные таким образом, демонстрируют частотную характеристику с равномерным уровнем пульсаций. Функция firpm демонстрирует разрывы в начале и конце своей импульсной характеристики из-за одного уровня пульсации.
Это фильтры с линейной фазовой характеристикой типа I (n нечетное) и типа II (n четное). Векторы f и a задают частотно-амплитудные характеристики фильтра:
-
f— вектор пар частотных точек, заданных в диапазоне от0до1, где1соответствует частоте Найквиста. Частоты должны быть расположены в порядке возрастания. -
a— вектор, содержащий искомую амплитуду в точках, указанных вf.Искомая функция амплитуды на частотах между парами точек при нечетном — это отрезок прямой, соединяющий точки и .
Искомая функция амплитуды на частотах между парами точек при четном не определена. Это переходные или не имеющие значения области.
-
fиaимеют одинаковую длину. Эта длина должна быть четным числом.
Функция firpm всегда использует четный порядок фильтра для конфигураций с четной симметрией и ненулевой полосой пропускания на частоте Найквиста. Причина четного порядка фильтра заключается в том, что для импульсных характеристик с четной симметрией и нечетными порядками частотная характеристика на частоте Найквиста обязательно равна 0. Если указано нечетное значение n, то firpm увеличивает его на 1.
Функция firpm проектирует фильтры с линейной фазовой характеристикой типов I, II, III и IV. Типы I и II используются по умолчанию для четного и нечетного n соответственно, в то время как типы III (n четное) и IV (n нечетное) задаются с помощью аргумента ftype с использованием "hilbert" или "differentiator" соответственно. Различные типы фильтров имеют различную симметрию и определенные ограничения на свои частотные характеристики. (Подробнее см. [3]).
| Тип фильтра с линейной фазовой характеристикой | Порядок фильтра | Симметрия коэффициентов | (Найквист) | |
|---|---|---|---|---|
Тип I |
Четный |
Четные: |
Нет ограничений |
Нет ограничений |
Тип II |
Нечетный |
Четные: |
Нет ограничений |
Функция |
Тип III |
Четный |
Нечетные: |
|
|
Тип IV |
Нечетный |
Нечетные: |
|
Нет ограничений |
Литература
-
Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Selected Papers in Digital Signal Processing. Vol. II. New York: IEEE Press, 1976.
-
Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979, algorithm 5.1.
-
Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999, p. 486.
-
Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987, p. 83.
-
Rabiner, Lawrence R., James H. McClellan, and Thomas W. Parks. «FIR Digital Filter Design Techniques Using Weighted Chebyshev Approximation.» Proceedings of the IEEE®. Vol. 63, Number 4, 1975, pp. 595–610.