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

EngeeDSP.NotchPeakFilter

Настраиваемый режекторный и узкополосный БИХ-фильтр второго порядка.

Библиотека

EngeeDSP

Блок

Notch-Peak Filter

Описание

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

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

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

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

Синтаксис

Создание

  • npFilter = EngeeDSP.NotchPeakFilter() возвращает режекторный и узкополосный БИХ-фильтр второго порядка, который независимо фильтрует каждый канал входного сигнала во времени, используя заданную центральную частоту и полосу пропускания 3 дБ.

  • npFilter = EngeeDSP.NotchPeakFilter(Specification="Quality factor and center frequency") указывается добротность (Q-фактор) режекторного или узкополосного фильтра вместо полосы пропускания 3 дБ.

  • npFilter = EngeeDSP.NotchPeakFilter(Specification="Coefficients") указываются значения коэффициентов, которые напрямую влияют на полосу пропускания и центральную частоту, а не параметры проектирования в Гц. Это исключает необходимость тригонометрических вычислений при настройке характеристик.

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

    Пример:

    npFilter = EngeeDSP.NotchPeakFilter(CenterFrequency=5000,Bandwidth=500)

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

  • Yn = npFilter(x) фильтрует каждый канал (столбец) входного сигнала x, создавая выходной сигнал режекторного фильтра Yn.

  • Yn, Yp = npFilter(x) фильтрует каждый канал (столбец) входного сигнала x, создавая выходной сигнал режекторного фильтра Yn и выходной сигнал узкополосного фильтра Yp.

Аргументы

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

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

Details

Входной сигнал, заданный в виде вектора или матрицы.

Типы данных

Float32, Float64

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

Да

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

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

Details

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

Типы данных

Float32, Float64

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

Да

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

Details

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

Типы данных

Float32, Float64

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

Да

Свойства

# Specification — характеристики фильтра
"Bandwidth and center frequency" (по умолчанию) | "Quality factor and center frequency" | "Coefficients"

Details

Укажите свойства, которые блок использует для проектирования фильтра:

# Bandwidth — полоса пропускания 3 дБ, в Гц
2205 (по умолчанию) | положительный скаляр

Details

Полоса пропускания 3 дБ фильтра, заданная в виде положительного скаляра в Гц.

Зависимости

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

# NormalizedBandwidth — полоса пропускания 3 дБ, в нормализованных единицах
0.1 (по умолчанию) | положительный скаляр меньше 1.0

Details

Полоса пропускания 3 дБ фильтра, заданная в виде положительного скаляра меньше 1.0 в нормализованных единицах.

Если при создании объекта для свойства NormalizedFrequency установлено значение true и не задана полоса пропускания, то объект автоматически установит полосу пропускания по умолчанию в нормализованных единицах частоты, используя частоту дискретизации по умолчанию 44100 Гц.

npFilter = EngeeDSP.NotchPeakFilter(NormalizedFrequency = true)
NotchPeakFilter:
    Specification=Bandwidth and center frequency
    NormalizedBandwidth=0.1
    NormalizedCenterFrequency=0.5
    SampleRate=44100
    NormalizedFrequency=true
    FilterOutput=NotchAndPeak

Если для свойства NormalizedFrequency установлено значение true после создания объекта, то необходимо указать ширину полосы пропускания в нормализованных единицах перед запуском алгоритма объекта.

npFilter = EngeeDSP.NotchPeakFilter()
NotchPeakFilter:
    Specification=Bandwidth and center frequency
    Bandwidth=2205
    CenterFrequency=11025
    SampleRate=44100
    NormalizedFrequency=false
    FilterOutput=NotchAndPeak

Чтобы указать нормализованное значение частоты, установите для свойства NormalizedFrequency значение true и вручную преобразуйте значение частоты в Гц в нормализованное значение, используя половину частоты дискретизации входного сигнала в Гц. Например, если входная частота дискретизации составляет 44100 Гц, то соответствующее значение полосы пропускания в нормализованных единицах равно .

npFilter.NormalizedFrequency = true
npFilter.NormalizedBandwidth = 2205/(44100/2)
npFilter
NotchPeakFilter:
    Specification=Bandwidth and center frequency
    NormalizedBandwidth=0.1
    NormalizedCenterFrequency=0.5
    SampleRate=44100
    NormalizedFrequency=true
    FilterOutput=NotchAndPeak

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Bandwidth and center frequency", а для свойства NormalizedFrequency значение true.

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

Details

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

Зависимости

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

# NormalizedCenterFrequency — центральная частота режекторного или узкополосного фильтра, в нормализованных единицах
0.5 (по умолчанию) | положительный скаляр меньше 1.0

Details

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

Если при создании объекта для свойства NormalizedFrequency установлено значение true и не задана центральная частота, то объект автоматически установит центральную частоту по умолчанию в нормализованных единицах частоты, используя частоту дискретизации по умолчанию 44100 Гц.

npFilter = EngeeDSP.NotchPeakFilter(NormalizedFrequency = true)
NotchPeakFilter:
    Specification=Bandwidth and center frequency
    NormalizedBandwidth=0.1
    NormalizedCenterFrequency=0.5
    SampleRate=44100
    NormalizedFrequency=true
    FilterOutput=NotchAndPeak

Если для свойства NormalizedFrequency установлено значение true после создания объекта, то необходимо указать центральную частоту в нормализованных единицах перед запуском алгоритма объекта.

npFilter = EngeeDSP.NotchPeakFilter()
NotchPeakFilter:
    Specification=Bandwidth and center frequency
    Bandwidth=2205
    CenterFrequency=11025
    SampleRate=44100
    NormalizedFrequency=false
    FilterOutput=NotchAndPeak

Чтобы указать нормализованное значение частоты, установите для свойства NormalizedFrequency значение true и вручную преобразуйте значение частоты в Гц в нормализованное значение, используя половину частоты дискретизации входного сигнала в Гц. Например, если входная частота дискретизации составляет 44100 Гц, то соответствующее значение центральной частоты в нормализованных единицах равно .

npFilter.NormalizedFrequency = true
npFilter.NormalizedCenterFrequency = 11025/(44100/2)
npFilter
NotchPeakFilter:
    Specification=Bandwidth and center frequency
    NormalizedBandwidth=0.1
    NormalizedCenterFrequency=0.5
    SampleRate=44100
    NormalizedFrequency=true
    FilterOutput=NotchAndPeak

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Bandwidth and center frequency" или "Quality factor and center frequency", а для свойства NormalizedFrequency значение true.

# QualityFactor — добротность режекторного или узкополосного фильтра
5 (по умолчанию) | положительный скаляр

Details

Добротность (Q-фактор) режекторного или узкополосного фильтра, заданная в виде вещественного положительного скаляра. Добротность определяется как отношение центральной частоты к ширине полосы пропускания. Чем больше добротность, тем уже полоса подавления или пропускания.

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Quality factor and center frequency".

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

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Bandwidth and center frequency" или "Quality factor and center frequency", а для свойства NormalizedFrequency значение false.

# BandwidthCoefficient — коэффициент пропускной способности
0.726554 (по умолчанию) | вещественный скаляр в диапазоне [−1, 1]

Details

Коэффициент, определяющий полосу пропускания 3 дБ, заданный в виде скаляра в диапазоне от −1 до 1:

  • −1 соответствует максимальной полосе пропускания 3 дБ (одна четвертая частоты дискретизации входного сигнала);

  • 1 соответствует минимальной полосе пропускания (0 Гц, т.е. частотно-независимый фильтр).

Зависимости

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

# CenterFrequencyCoefficient — коэффициент пропускной способности
0.0 (по умолчанию) | вещественный скаляр в диапазоне [−1, 1]

Details

Коэффициент, определяющий центральную частоту фильтра, заданный в виде скаляра в диапазоне от −1 до 1:

  • −1 соответствует минимальной центральной частоте (0 Гц);

  • 1 соответствует максимальной центральной частоте (половина частоты дискретизации входного сигнала).

Зависимости

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

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

Details

Опция задания частот в нормализованных единицах:

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

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

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Bandwidth and center frequency" или "Quality factor and center frequency".

# FilterOutput — выбор фильтра для вывода данных
"NotchAndPeak" (по умолчанию) | "Notch" | "Peak"

Details

Выбор выходных данных:

  • "NotchAndPeak" — выходной сигнал после прохождения режекторного и узкополосного фильтра;

  • "Notch" — выходной сигнал после прохождения режекторного фильтра;

  • "Peak" — выходной сигнал после прохождения узкополосного фильтра.

Методы

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

step!

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

release!

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

reset!

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

Алгоритмы

Уравнение для проекта узкополосного фильтра выглядит следующим образом:

Уравнение для проекта режекторного фильтра выглядит следующим образом:

В этих уравнениях

где

  • — центральная частота в Гц;

  • — частота дискретизации в Гц;

  • — полоса пропускания 3 дБ в Гц.

Обратите внимание, что эти два фильтра дополняют друг друга:

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

где — частотно-независимый фильтр второго порядка:

Фильтр реализован следующим образом:

notch peak filter 1

На рисунке:

Обратите внимание, что зависит только от центральной частоты, а — только от полосы пропускания 3 дБ.

Литература

  1. Orfanidis, Sophocles J. Introduction to Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1996.