Документация Engee

fir1

Страница в процессе разработки.

Расчет коэффициентов КИХ-фильтра c использованием различных окон.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • b = fir1(n, Wn) — использует окно Хэмминга для проектирования низкочастотного, полосового или многополосного КИХ-фильтра n-го порядка с линейной фазой. Тип фильтра зависит от количества элементов Wn.

  • b = fir1(n, Wn, ftype) — проектирует фильтр нижних частот, верхних частот, полосовой, режекторный или многополосный фильтр в зависимости от значения ftype и количества элементов Wn.

  • b = fir1(___, window) — проектирует фильтр, используя вектор, указанный в window, и любые аргументы из предыдущих синтаксисов.

  • b = fir1(___, scaleopt) — дополнительно указывает, нормализована ли амплитудно-частотная характеристика фильтра.

Используйте функцию fir2 для оконных фильтров с произвольной частотной характеристикой.

Аргументы

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

# n — порядок фильтра
скаляр

Details

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

Для фильтров верхних частот и режекторных фильтров функция fir1 всегда использует четный порядок фильтра. Порядок должен быть четным, поскольку симметричные КИХ-фильтры нечетного порядка должны иметь нулевое усиление на частоте Найквиста. Если для фильтра верхних частот или заграждающего фильтра указано нечетное n, то функция fir1 увеличивает n на 1.

Типы данных

Int64

# Wn — частота среза
скаляр | двухэлементный вектор | многоэлементный вектор

Details

Частота среза, заданная как скаляр, двухэлементный вектор или многоэлементный вектор.

Все элементы Wn должны находиться в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста. Частота Найквиста равна половине частоты дискретизации, или рад/отсчет.

  • Если Wn — скаляр, то функция fir1 проектирует фильтр нижних или верхних частот с частотой среза Wn. Частота среза — это частота, на которой передаточное соотношение составляет -6 дБ.

  • Если Wn — двухэлементный вектор [W1 W2], где W1 < W2, то fir1 проектирует полосовой или режекторный фильтр с нижней частотой среза W1 и верхней частотой среза W2.

  • Если Wn — многоэлементный вектор [W1 W2 …​ Wn], где W1 < W2 < …​ < Wn, то fir1 проектирует многополосный фильтр n-го порядка с полосами 0 < < W1, W1 < < W2,…​, Wn < < 1.

Типы данных

Float64

# window — окно
вектор

Details

Вектор для оконной обработки импульсной характеристики. Вектор окна должен содержать n + 1 элемент. По умолчанию функция fir1 использует окно Хэмминга. Список доступных окон:

  • "bartlett" — окно Бартлетта;

  • "blackman" — окно Блэкмана;

  • "chebyshev" — окно Чебышева;

  • "hamming" — окно Хэмминга;

  • "hann" — окно Ханна;

  • "kaiser" — окно Кайзера;

  • "triangular" — треугольное окно;

Для окон Кайзера и Чебышева можно указать опциональные параметры.

Примеры:

Использование окна Кайзера с параметром beta = 4.0:

b = fir1(N, Wn, window("kaiser", N+1, 4.0))

Использование окна Чебышева с 65.0 дБ относительного ослабления боковых лепестков:

b = fir1(N, Wn, window("chebyshev", N+1, 65.0), "high")
Типы данных

Float64

# ftype — тип фильтра
"low" | "high" | "bandpass" | "stop" | "DC-0" | "DC-1"

Details

Тип фильтра:

  • "low" определяет фильтр нижних частот с частотой среза Wn, "low" — значение по умолчанию для скалярной функции Wn.

  • "high" определяет фильтр верхних частот с частотой среза Wn.

  • "bandpass" определяет полосовой фильтр, если Wn — двухэлементный вектор, "bandpass" — значение по умолчанию, если Wn состоит из двух элементов.

  • "stop" определяет режекторный фильтр, если Wn — двухэлементный вектор.

  • "DC-0" определяет, что первая полоса многополосного фильтра является полосой задерживания, "DC-0" — значение по умолчанию, если Wn состоит более чем из двух элементов.

  • "DC-1" определяет, что первая полоса многополосного фильтра является полосой пропускания.

# scaleopt — масштабирование фильтра
"scale" (по умолчанию) | "noscale"

Details

Масштабирование фильтра:

  • "scale" масштабирует коэффициенты таким образом, чтобы амплитудно-частотная характеристика фильтра в центре полосы пропускания была равна 1 (0 дБ).

  • "noscale" не масштабирует коэффициенты.

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

# b — коэффициенты фильтра

Details

Коэффициенты фильтра возвращаются в виде вектора-строки длиной n + 1. Коэффициенты сортируются по убыванию степеней переменной Z-преобразования :

Алгоритмы

Функция fir1 использует приближение наименьших квадратов для вычисления коэффициентов фильтра, а затем сглаживает импульсную характеристику с помощью window.

Литература

  1. 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.2.