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

EngeeDSP.VariableBandwidthFIRFilter

КИХ-фильтр с переменной полосой пропускания.

Библиотека

EngeeDSP

Описание

Чтобы реализовать КИХ-фильтр с переменной полосой пропускания, который выполняет фильтрацию каждого канала входного сигнала, выполните следующие действия:

  1. Создайте объект EngeeDSP.VariableBandwidthFIRFilter и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • vbwFIR = EngeeDSP.VariableBandwidthFIRFilter() возвращает объект КИХ-фильтра vbwFIR с переменной полосой пропускания, который независимо фильтрует каждый канал (столбец) входного сигнала при последовательных вызовах алгоритма. Частоту среза фильтра можно настроить во время операции фильтрации. КИХ-фильтр с переменной полосой пропускания проектируется с использованием оконного метода.

  • vbwFIR = EngeeDSP.VariableBandwidthFIRFilter(Name=Value) возвращает объект КИХ-фильтра vbwFIR с указанным свойством Name, установленным на указанное значение Value. Вы можете указать дополнительные аргументы в виде пары имя-значение в любом порядке (Name1=Value1,…​,NameN=ValueN). Неуказанные свойства имеют значения по умолчанию.

Использование

  • y = vbwFIR(x) фильтрует входной сигнал x и выводит отфильтрованные значения y. Объект КИХ-фильтра с переменной полосой пропускания работает с каждым каналом, что означает, что объект фильтрует каждый столбец входного сигнала независимо при последовательных вызовах алгоритма.

Аргументы

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

x — входной сигнал
вектор | матрица

Details

Входной сигнал, заданный в виде вектора или матрицы. Этот системный объект поддерживает входные данные переменного размера. После блокировки объекта вы можете изменить размер каждого входного канала, но не можете изменить количество каналов.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

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

y — отфильтрованный выходной сигнал
вектор | матрица

Details

Отфильтрованный выходной сигнал, возвращаемый в виде вектора или матрицы. Размер, тип данных и комплексность выходного сигнала такие же, как у входного сигнала.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

Свойства

# FilterOrder — порядок КИХ-фильтра
30 (по умолчанию) | четный положительный скаляр

Details

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

Типы данных

Float32, Float64

# FilterType — тип характеристики фильтра
"Lowpass" (по умолчанию) | "Highpass" | "Bandpass" | "Bandstop"

Details

Тип характеристики фильтра, заданный как "Lowpass", "Highpass", "Bandpass" или "Bandstop".

# CutoffFrequency — частота среза фильтра
512 (по умолчанию) | положительный скаляр

Details

Частота среза фильтра в Гц или в нормализованных единицах частоты, заданная как положительный скаляр.

Если для свойства NormalizedFrequency установлено значение:

  • false — значение частоты среза указывается в Гц. Значение должно быть меньше половины значения свойства SampleRate.

  • true — значение частоты среза указывается в нормализованных единицах частоты. Значение должно быть положительным скаляром меньше 1.0.

Зависимости

Чтобы использовать это свойство, установите для свойства FilterType значение Lowpass или Highpass.

Типы данных

Float32, Float64

# Window — оконная функция
"Hann" (по умолчанию) | "Hamming" | "Chebyshev" | "Kaiser"

Details

Оконная функция для проектирования КИХ-фильтра, заданная как "Hann", "Hamming", "Chebyshev" или "Kaiser".

# KaiserWindowParameter — параметр окна Кайзера
0.5 (по умолчанию) | вещественный скаляр

Details

Параметр окна Кайзера, заданный как вещественный скаляр.

Зависимости

Чтобы использовать это свойство, установите для свойства Window значение Kaiser.

Типы данных

Float32, Float64

# CenterFrequency — центральная частота фильтра
11025 (по умолчанию) | положительный скаляр

Details

Центральная частота фильтра в Гц или в нормализованных единицах частоты, заданная как положительный скаляр.

Если для свойства NormalizedFrequency установлено значение:

  • false — значение центральной частоты указывается в Гц. Значение должно быть меньше половины значения свойства SampleRate.

  • true — значение центральной частоты указывается в нормализованных единицах частоты. Значение должно быть положительным скаляром меньше 1.0.

Зависимости

Чтобы использовать это свойство, установите для свойства FilterType значение Bandpass или Bandstop.

Типы данных

Float32, Float64

# Bandwidth — полоса пропускания фильтра
7680 (по умолчанию) | положительный скаляр

Details

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

Если для свойства NormalizedFrequency установлено значение:

  • false — значение полосы пропускания указывается в Гц. Значение должно быть меньше половины значения свойства SampleRate.

  • true — значение полосы пропускания указывается в нормализованных единицах частоты. Значение должно быть положительным скаляром меньше 1.0.

Зависимости

Чтобы использовать это свойство, установите для свойства FilterType значение Bandpass или Bandstop.

Типы данных

Float32, Float64

# SidelobeAttenuation — затухание боковых лепестков окна Чебышева
60 (по умолчанию) | положительный скаляр

Details

Затухание боковых лепестков окна Чебышева в дБ, заданное как положительный скаляр.

Зависимости

Чтобы использовать это свойство, установите для свойства Window значение Chebyshev.

Типы данных

Float32, Float64

# NormalizedFrequency — указание частот в нормализованных единицах
false (по умолчанию) | true

Details

Если вы установите для этого свойства значение:

  • true — частота полосы пропускания фильтра, центральная частота и ширина полосы пропускания фильтра должны быть заданы в нормализованных единицах частоты и их значение должно быть меньше 1.0.

  • false — частота полосы пропускания фильтра, центральная частота и ширина полосы пропускания фильтра должны быть заданы в Гц. Вы можете указать частоту дискретизации входного сигнала с помощью свойства SampleRate.

Типы данных

Bool

# SampleRate — частота дискретизации входного сигнала
44100 (по умолчанию) | положительный скаляр

Details

Частота дискретизации входного сигнала в Гц, заданная как положительный скаляр.

Зависимости

Чтобы использовать это свойство, установите для свойства NormalizedFrequency значение false.

Типы данных

Float32, Float64

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Алгоритмы

КИХ-преобразования

Details

Все преобразования предполагают наличие фильтра нижних частот длиной .

От фильтра нижних частот к фильтру нижних частот

Рассмотрим идеальный фильтр нижних частот типа «кирпичная стена» с нормированной частотой среза . Выполнив обратное дискретное преобразование Фурье идеальной частотной характеристики и ограничив полученную последовательность длиной , получим импульсную характеристику

  • для :

  • для :

где — вектор окна. Установим коэффициенты фильтра нижних частот на новую частоту среза следующим образом:

  • для :

  • для :

Нет необходимости пересчитывать размер окна каждый раз при настройке частоты среза.

От фильтра нижних частот к фильтру верхних частот

Предположим, что фильтр нижних частот имеет нормированную частоту среза , равную 6 дБ. Фильтр верхних частот с той же частотой среза можно получить, дополнив частотную характеристику фильтра нижних частот:

Взяв обратное дискретное преобразование Фурье от указанной выше характеристики, получим следующие коэффициенты фильтра верхних частот:

  • для :

  • для :

От фильтра нижних частот к полосовому фильтру

Получим полосовой фильтр с центральной частотой , сдвинув частотную характеристику фильтра нижних частот:

Ширина полосы пропускания результирующего полосового фильтра составляет , измеренная между двумя частотами среза полосового фильтра. Эквивалентные коэффициенты полосового фильтра тогда будут следующими:

что можно переписать как

От фильтра нижних частот к заграждающему фильтру

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

В результате получаются следующие коэффициенты:

  • для :

  • для :

Обобщенное преобразование

Вы можете комбинировать эти преобразования, чтобы преобразовать фильтр нижних частот в фильтр нижних частот, фильтр верхних частот, полосовой фильтр или заграждающий фильтр с произвольными частотами среза.

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

Чтобы получить полосовой фильтр с центральной частотой и полосой пропускания , сначала применяется преобразование из фильтра нижних частот в фильтр нижних частот, чтобы перейти от фильтра нижних частот с частотой среза к фильтру нижних частот с частотой среза , а затем применяется преобразование из фильтра нижних частот в полосовой фильтр, чтобы получить желаемый полосовой фильтр. Аналогичный подход можно использовать и для заграждающего фильтра.

Литература

  1. Jarske, P.,Y. Neuvo, and S. K. Mitra, A simple approach to the design of linear phase FIR digital filters with variable characteristics. Signal Processing. Vol. 14, Issue 4, June 1988, pp. 313–326.