exponenta event banner

bandstop

Сигналы полосового фильтра

Описание

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

пример

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

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

пример

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

пример

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

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

Примеры

свернуть все

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

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

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

bandstop(x,[100 200],fs)

Figure contains 2 axes. Axes 1 with title Bandstop Filtering (Fpass = [100 200] 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.

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

bong = bandstop(song,[230 450],fs);

% To hear, type sound(bong,fs)

bandstop(song,[230 450],fs)

Figure contains 2 axes. Axes 1 with title Bandstop Filtering (Fpass = [230 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(bong,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 кГц, с использованием полосового фильтра с бесконечной импульсной характеристикой с шириной полосы останова 100 Гц. Используйте различные значения крутизны. Постройте график спектров отфильтрованных сигналов.

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

[y1,d1] = bandstop(x,[ 50 150],fs,'ImpulseResponse','iir','Steepness',0.5);
[y2,d2] = bandstop(x,[200 300],fs,'ImpulseResponse','iir','Steepness',0.8);
[y3,d3] = bandstop(x,[350 450],fs,'ImpulseResponse','iir','Steepness',0.95);

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

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', ...
    'Location','north')
ylim([-120 20])

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

Сделать фильтры асимметричными путем задания различных значений крутизны на более низких и более высоких частотах полосы пропускания.

[y1,d1] = bandstop(x,[ 50 150],fs,'ImpulseResponse','iir','Steepness',[0.5 0.8]);
[y2,d2] = bandstop(x,[200 300],fs,'ImpulseResponse','iir','Steepness',[0.5 0.8]);
[y3,d3] = bandstop(x,[350 450],fs,'ImpulseResponse','iir','Steepness',[0.5 0.8]);

pspectrum([y1 y2 y3],fs)

Figure contains an axes. The axes with title Fres = 976.801 mHz contains 3 objects of type line.

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

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

plot(f,mag2db(abs([h1 h2 h3])))
ylim([-120 20])

Figure contains an axes. The axes contains 3 objects of type line.

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

свернуть все

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

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

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

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

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

Диапазон частот Stopband, заданный как двухэлементный вектор с элементами в интервале (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 фильтрует вход с помощью фильтра БИХ минимального порядка, который ослабляет на 30 дБ частоты от fpass(1) кому fpass(2).

Тип импульсной характеристики фильтра, определяемый как разделенная запятыми пара, состоящая из '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 герц, когда входной сигнал является расписанием или когда вы указываете частоту выборки.

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

    Центр области стоп-полосы - fcenter = (fstoplower + fstopupper )/2.

  • Нижняя ширина перехода фильтра, Wlower, равна fstoplower - fpassниже.

  • Верхняя ширина перехода фильтра, Wupper, равна fpassверхний - fstopupper.

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

Для управления шириной областей перехода можно указать 'Steepness' либо как двухэлементный вектор, [медленнее, ужин], либо как скаляр. При указании'Steepness' в качестве вектора функция:

  • Вычисляет меньшую ширину перехода как

    Wlower = (1 - медленнее) × (fccenter - fpassниже).

    • Когда первый элемент 'Steepness' равно 0,5, ширина перехода равна 50% от (fccenter - fpassниже).

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

  • Вычисляет верхнюю ширину перехода как

    Вуппер = (1 - ужин) × (fpassверхний - fccenter).

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

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

При указании 'Steepness' в качестве скаляра функция создает фильтр с равной шириной нижнего и верхнего переходов. Значение по умолчанию 'Steepness' составляет 0,85.

См. также

Приложения

Функции

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