lowpass

Lowpass-отфильтруйте сигналы

Синтаксис

y = lowpass(x,wpass)
y = lowpass(x,fpass,fs)
y = lowpass(xt,fpass)
y = lowpass(___,Name,Value)
[y,d] = lowpass(___)
lowpass(___)

Описание

y = lowpass(x,wpass) фильтрует входной сигнал x с помощью фильтра lowpass с нормированной частотой полосы пропускания 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;

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

lowpass(x,150,fs)

Реализуйте основной синтезатор цифровой музыки и используйте его, чтобы проигрывать традиционную песню. Задайте частоту дискретизации 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)

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

long = lowpass(song,450,fs);

% To hear, type sound(long,fs)

lowpass(song,450,fs)

Постройте спектрограмму сопровождения.

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

Отфильтруйте белый шум, выбранный на уровне 1 кГц с помощью бесконечного импульсного ответа lowpass фильтр с частотой полосы пропускания 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')

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

[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')

Входные параметры

свернуть все

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

Пример: 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 в секундах.

Если расписание имеет пропавших без вести или дублирующиеся моменты времени, можно зафиксировать его с помощью советов в Чистом Расписании с Пропавшими без вести, Копией, или Неоднородные Времена (MATLAB).

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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' Функция разрабатывает КИХ-фильтр минимального заказа, если входной сигнал достаточно длинен, и БИХ-фильтр минимального заказа в противном случае. А именно, функция выполняет эти шаги:

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

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

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

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

Крутизна полосы перехода, заданная как пара, разделенная запятой, состоящая из 'Steepness' и скаляра в интервале [0.5, 1). Когда крутизна увеличивается, ответ фильтра приближается к идеалу lowpass ответ, но получившаяся длина фильтра и вычислительная стоимость операции фильтрации также увеличиваются. См. Крутизну Фильтра Lowpass для получения дополнительной информации.

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

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

свернуть все

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

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

  • Используйте filter (d,x), чтобы отфильтровать x сигнала с помощью d.

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

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

Больше о

свернуть все

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

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

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

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

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

  • Ширина перехода фильтра, W, является остановкой ffpass.

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

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

W = (1 – s) × (f Найквистfpass).

  • Когда 'Steepness' равен 0,5, ширина перехода составляет 50% (f Найквистfpass).

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

  • Значение по умолчанию 'Steepness' 0.85, который соответствует ширине перехода, которая составляет 15% (f Найквистfpass).

Смотрите также

Приложения

Функции

Введенный в R2018a