exponenta event banner

lowpass

Сигналы фильтра нижних частот

Описание

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

пример

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

y = lowpass(xt,fpass) lowpass-фильтрация данных в расписании xt с использованием фильтра с частотой полосы пропускания fpass герц. Функция независимо фильтрует все переменные в расписании и все столбцы в каждой переменной.

пример

y = lowpass(___,Name,Value) задает дополнительные параметры для любого из предыдущих синтаксисов с использованием аргументов пары имя-значение. Можно изменить затухание полосы останова, крутизну полосы перехода и тип импульсной характеристики фильтра.

пример

[y,d] = lowpass(___) также возвращает digitalFilter объект d используется для фильтрации входных данных.

lowpass(___) без выходных аргументов строит график входного сигнала и накладывает отфильтрованный сигнал.

Примеры

свернуть все

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

fs = 1e3;
t = 0:1/fs:1;

x = [1 2]*sin(2*pi*[50 250]'.*t) + randn(size(t))/10;

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

lowpass(x,150,fs)

Figure contains 2 axes. Axes 1 with title Lowpass Filtering (Fpass = 150 Hz) contains 2 objects of type line. These objects represent Original, Filtered. Axes 2 contains 2 objects of type line. These objects represent Original, Filtered.

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

fs = 2e3;
t = 0:1/fs:0.3-1/fs;

l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94];
m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88];
h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77];
note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t);

mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1;
acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1;

song = [];
for kj = 1:length(mel)
    song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)];
end
song = song/(max(abs(song))+0.1);

% To hear, type sound(song,fs)

pspectrum(song,fs,'spectrogram','TimeResolution',0.31, ...
    'OverlapPercent',0,'MinThreshold',-60)

Figure contains an axes. The axes with title Fres = 8.2798 Hz, Tres = 310 ms contains an object of type image.

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

long = lowpass(song,450,fs);

% To hear, type sound(long,fs)

lowpass(song,450,fs)

Figure contains 2 axes. Axes 1 with title Lowpass Filtering (Fpass = 450 Hz) contains 2 objects of type line. These objects represent Original, Filtered. Axes 2 contains 2 objects of type line. These objects represent Original, Filtered.

Постройте спектрограмму аккомпанемента.

figure
pspectrum(long,fs,'spectrogram','TimeResolution',0.31, ...
    'OverlapPercent',0,'MinThreshold',-60)

Figure contains an axes. The axes with title Fres = 8.2798 Hz, Tres = 310 ms contains an object of type image.

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

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

[y1,d1] = lowpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.5);
[y2,d2] = lowpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.8);
[y3,d3] = lowpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.95);

pspectrum([y1 y2 y3],fs)
legend('Steepness = 0.5','Steepness = 0.8','Steepness = 0.95')

Figure contains an axes. The axes with title Fres = 976.801 mHz contains 3 objects of type line. These objects represent Steepness = 0.5, Steepness = 0.8, Steepness = 0.95.

Вычислите и постройте график частотных характеристик фильтров.

[h1,f] = freqz(d1,1024,fs);
[h2,~] = freqz(d2,1024,fs);
[h3,~] = freqz(d3,1024,fs);

plot(f,mag2db(abs([h1 h2 h3])))
legend('Steepness = 0.5','Steepness = 0.8','Steepness = 0.95')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Steepness = 0.5, Steepness = 0.8, Steepness = 0.95.

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

свернуть все

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

Пример: sin(2*pi*(0:127)/16)+randn(1,128)/100 задает шумную синусоиду

Пример: [2 1].*sin(2*pi*(0:127)'./[16 64]) задает двухканальную синусоиду.

Типы данных: single | double
Поддержка комплексного номера: Да

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

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

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

Расписание ввода. xt должно содержать увеличивающееся, конечное и равномерно разнесенное время строки типа duration в секундах.

Если расписание имеет отсутствующие или повторяющиеся моменты времени, его можно исправить с помощью подсказок в «Чистом расписании» с «Отсутствующим», «Повторяющимся» или «Неуниформным временем».

Пример: timetable(seconds(0:4)',randn(5,1),randn(5,2)) содержит одноканальный случайный сигнал и двухканальный случайный сигнал, дискретизированный с частотой 1 Гц в течение 4 секунд.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'ImpulseResponse','iir','StopbandAttenuation',30 фильтрует вход с помощью фильтра БИХ минимального порядка, который ослабляет частоты выше, чем fpass на 30 дБ.

Тип импульсной характеристики фильтра, определяемый как разделенная запятыми пара, состоящая из 'ImpulseResponse' и 'fir', 'iir', или 'auto'.

  • 'fir' - Функция проектирует фильтр с конечной импульсной характеристикой (FIR) минимального порядка, линейной фазы. Для компенсации задержки функция добавляется к входному сигналу N/2 нули, где N - порядок фильтра. Затем функция фильтрует сигнал и удаляет первые N/2 выборки выходного сигнала.

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

  • 'iir' - Функция проектирует фильтр с бесконечной импульсной характеристикой (IIR) минимального порядка и использует filtfilt функция для выполнения нулевой фазовой фильтрации и компенсации задержки фильтра.

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

  • 'auto' - Функция проектирует фильтр FIR минимального порядка, если входной сигнал достаточно длинный, и фильтр IIR минимального порядка в противном случае. В частности, функция выполняет следующие шаги:

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

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

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

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

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

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

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

свернуть все

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

Фильтр нижних частот, используемый в операции фильтрации, возвращаемый как digitalFilter объект.

  • Использовать filter(d,x) для фильтрации сигнала x использование d.

  • Используйте FVTool для визуализации отклика фильтра.

  • Использовать designfilt для редактирования или формирования цифрового фильтра на основе характеристик частотного отклика.

Подробнее

свернуть все

Крутизна фильтра нижних частот

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

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

  • Частота Найквиста, fNyquist, является самой высокой частотной составляющей сигнала, которая может быть дискретизирована с заданной скоростью без наложения. fNyquist равен 1 (× δrad/sample), когда входной сигнал не имеет временной информации, иfs/ 2 герц, когда входной сигнал является расписанием или когда вы указываете частоту выборки.

  • Частота стоп-полосы фильтра fstop - это частота, за пределами которой ослабление равно или больше значения, заданного с помощью 'StopbandAttenuation'.

  • Ширина перехода фильтра, W, fstop - fpass.

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

При указании значения s для 'Steepness', функция вычисляет ширину перехода как

W = (1 - s) × (fNyquist - fpass).

  • Когда 'Steepness' равно 0,5, ширина перехода равна 50% от (fNyquist - fpass).

  • Как 'Steepness' приближается к 1, ширина перехода постепенно сужается, пока не достигнет минимального значения 1% (fNyquist - fpass).

  • Значение по умолчанию 'Steepness' 0,85, что соответствует ширине перехода, которая составляет 15% от (fNyquist - fpass).

См. также

Приложения

Функции

Представлен в R2018a