highpass

Highpass-фильтрация сигналов

Описание

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

пример

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

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

пример

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

пример

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

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

Примеры

свернуть все

Создайте сигнал, дискретизированный с частотой 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;

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

highpass(x,150,fs)

Figure contains 2 axes. Axes 1 with title Highpass 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.

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

hong = highpass(song,450,fs);

% To hear, type sound(hong,fs)

highpass(song,450,fs)

Figure contains 2 axes. Axes 1 with title Highpass 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(hong,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] = highpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.5);
[y2,d2] = highpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.8);
[y3,d3] = highpass(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')
ylim([-130 10])

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)) задает случайную переменную, дискретизированную с частотой дискретизации 1 Гц в течение 4 секунд.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фильтрация затухания в полосе задерживания, заданная как разделенная запятой пара, состоящая из 'StopbandAttenuation' и a положительной скалярной величины в дБ.

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

свернуть все

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

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

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

  • Используйте FVTool, чтобы визуализировать ответ фильтра.

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

Подробнее о

свернуть все

Крутизна фильтра Highpass

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

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

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

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

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

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

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

W = (1 – s) × <reservedrangesplaceholder0>.

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

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

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

См. также

Приложения

Функции

Введенный в R2018a