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

lowpass

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

Сигналы после фильтра низких частот.

Библиотека

EngeeDSP

Синтаксис

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

  • y = lowpass(x,wpass) — фильтрует входной сигнал x с помощью фильтра низких частот с нормированной частотой полосы пропускания wpass в единицах рад/отсчет. Функция lowpass использует фильтр минимального порядка с затуханием в полосе пропускания 60 дБ и компенсирует задержку, вносимую фильтром. Если x — матрица, то функция фильтрует каждый столбец независимо.

  • y = lowpass(x,fpass,fs) — использует частоту дискретизации fs в Гц входного сигнала x, fpass — частота полосы пропускания фильтра в Гц.

  • y = lowpass(___, Name,Value) — задает дополнительные опции для любого из предыдущих синтаксисов одним или несколькими аргументами Name,Value.

  • y = lowpass(___; out=:plot) — строит график входного сигнала и накладывает отфильтрованный сигнал.

Аргументы

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

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

Details

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

Типы данных

Float32, Float64

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

Да

# wpass — нормированная частота полосы пропускания
скаляр в интервале (0, 1)

Details

Нормированная частота полосы пропускания, заданная в виде скаляра в интервале (0, 1).

# fpass — частота полосы пропускания, Гц
скаляр в интервале (0, fs/2)

Details

Частота полосы пропускания, заданная в виде скаляра в интервале (0, fs/2) в Гц.

# fs — частота дискретизации
скаляр

Details

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

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в формате Name, Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.

Используйте запятые для разделения имени и значения, а Name заключите в кавычки.

Пример: f=lowpass(x, 200, fs, "StopbandAttenuation",30).

# ImpulseResponse — тип импульсной характеристики
"auto" (по умолчанию) | "fir" | "iir"

Details

Тип импульсной характеристики фильтра, заданный как "fir", "iir" или "auto":

  • "fir" — функция проектирует фильтр минимального порядка, линейно-фазовый, с конечной импульсной характеристикой (КИХ). Чтобы компенсировать задержку, функция добавляет к входному сигналу нулей, где — порядок фильтра. Затем функция фильтрует сигнал и удаляет первые отсчетов на выходе.

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

  • "iir" — функция проектирует фильтр минимального порядка с бесконечной импульсной характеристикой (БИХ) и использует функцию filtfilt для выполнения фильтрации с нулевой фазой и компенсации задержки фильтра.

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

  • "auto" — функция проектирует КИХ-фильтр минимального порядка, если входной сигнал достаточно длинный, и БИХ-фильтр минимального порядка в противном случае. В частности, функция выполняет следующие шаги:

    • Вычисляет минимальный порядок, который должен иметь КИХ-фильтр, чтобы соответствовать спецификациям. Если сигнал как минимум вдвое длиннее требуемого порядка фильтра, проектирует и использует этот фильтр.

    • Если сигнал недостаточно длинный, вычислите минимальный порядок, который должен иметь КИХ-фильтр, чтобы соответствовать спецификациям. Если длина сигнала по крайней мере в три раза превышает требуемый порядок фильтра, проектирует и использует этот фильтр.

    • Если длина сигнала недостаточна, урезает порядок до одной трети длины сигнала и проектирует БИХ-фильтр такого порядка. Уменьшение порядка происходит за счет крутизны спада переходной полосы.

    • Фильтрует сигнал и компенсирует задержку.

# Steepness — крутизна спада переходной полосы
0.85 (по умолчанию) | скаляр в интервале [0.5, 1)

Details

Крутизна спада переходной полосы, заданная как скаляр в интервале [0.5, 1). По мере увеличения крутизны импульсная характеристика фильтра приближается к идеальной импульсной характеристике фильтра низких частот, но при этом увеличивается и результирующая длина фильтра, а также вычислительные затраты на операцию фильтрации. Дополнительную информацию см. в разделе Крутизна спада фильтра низких частот.

# StopbandAttenuation — затухание в полосе задерживания фильтра
60 (по умолчанию) | положительный скаляр в дБ

Details

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

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

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

Details

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

Примеры

Низкочастотная фильтрация тонов

Details

Сгенерируем сигнал, дискретизированный с частотой 1 кГц в течение 1 секунды. Сигнал содержит два тона, один с частотой 50 Гц, а другой с частотой 250 Гц, к которым добавлен гауссовский белый шум с дисперсией 1/100. Амплитуда высокочастотного тона вдвое больше амплитуды низкочастотного тона.

import EngeeDSP.Functions: lowpass, randn

fs = 1e3
t = 0:1/fs:1
x = [1 2] * sin.(2π * [50; 250] .* reshape(t, 1, :)) + randn(1, length(t)) / 10

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

lowpass(x,150,fs; out=:plot)

lowpass 1

Крутизна спада фильтра низких частот

Details

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

import EngeeDSP.Functions: randn, lowpass, pspectrum

fs = 1000;
x = randn(20000,1);

y1 = lowpass(x,200,fs,"ImpulseResponse","iir","Steepness",0.5)
y2 = lowpass(x,200,fs,"ImpulseResponse","iir","Steepness",0.8)
y3 = lowpass(x,200,fs,"ImpulseResponse","iir","Steepness",0.95);

pspectrum([y1 y2 y3],fs,out=:plot)

lowpass 2

Дополнительно

Крутизна спада фильтра низких частот

Details

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

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

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

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

  • Переходная полоса фильтра , где — заданная частота полосы пропускания fpass.

  • Большинство неидеальных фильтров также ослабляют входной сигнал в полосе пропускания. Максимальное значение этого частотно-зависимого ослабления называется пульсациями в полосе пропускания. Каждый фильтр, используемый в lowpass имеет пульсации в полосе пропускания 0.1 дБ.

lowpass ru

Когда для Steepness указано значение , lowpass вычисляет ширину перехода как

  • Когда Steepness равно 0.5, ширина перехода составляет 50% от .

  • По мере приближения Steepness к 1 ширина перехода постепенно уменьшается, пока не достигнет минимального значения в 1% от .

По умолчанию значение Steepness равно 0.85, что соответствует ширине перехода, составляющей 15.7% от .