Сигналы заграждающего фильтра
y = bandstop(x,wpass)
y = bandstop(x,fpass,fs)
y = bandstop(xt,fpass)
y = bandstop(___,Name,Value)
[y,d] = bandstop(___)
bandstop(___)
фильтрует входной сигнал y
= bandstop(x
,wpass
)x
с помощью заграждающего фильтра с частотным диапазоном полосы задерживания, заданным двухэлементным векторным wpass
, и выразил в нормированных единицах рада/выборки π. bandstop
использует фильтр минимального заказа с затуханием полосы задерживания 60 дБ и компенсирует задержку, введенную фильтром. Если x
является матрицей, функция фильтрует каждый столбец независимо.
задает дополнительные опции для любого из предыдущих аргументов пары "имя-значение" использования синтаксисов. Можно изменить затухание полосы задерживания, крутизну полосы перехода и тип импульсного ответа фильтра.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)
Реализуйте основной синтезатор цифровой музыки и используйте его, чтобы проигрывать традиционную песню. Задайте частоту дискретизации 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)
Заграждающий фильтр сигнал разделить средний регистр от других двух. Задайте частоты полосы пропускания 230 Гц и 450 Гц. Постройте исходные и отфильтрованные сигналы во временном и частотном диапазоне.
bong = bandstop(song,[230 450],fs);
% To hear, type sound(bong,fs)
bandstop(song,[230 450],fs)
Постройте спектрограмму песни без среднего регистра.
figure pspectrum(bong,fs,'spectrogram','TimeResolution',0.31, ... 'OverlapPercent',0,'MinThreshold',-60)
Отфильтруйте белый шум, выбранный на уровне 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')
Вычислите и постройте частотные характеристики фильтров.
[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])
Сделайте фильтры асимметричными путем определения различных значений крутизны в ниже и более высокие частоты полосы пропускания.
[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)
Вычислите и постройте частотные характеристики фильтров.
[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])
x
Входной сигналВходной сигнал, заданный как вектор или матрица.
Пример: sin(2*pi*(0:127)/16)+randn(1,128)/100
задает шумную синусоиду
Пример: [2 1].*sin(2*pi*(0:127)'./[16 64])
задает двухканальную синусоиду.
Типы данных: single | double
Поддержка комплексного числа: Да
wpass
— Нормированный частотный диапазон полосы задерживанияНормированный частотный диапазон полосы задерживания, заданный как двухэлементный вектор с элементами в интервале (0, 1).
fpass
— Частотный диапазон полосы задерживанияfs
/2)Частотный диапазон полосы задерживания, заданный как двухэлементный вектор с элементами в интервале (0, fs
/2).
fs
— Частота дискретизацииЧастота дискретизации, заданная как положительный действительный скаляр.
xt
Введите расписаниеВведите расписание. 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
фильтрует вход с помощью БИХ-фильтра минимального заказа, который ослабляет на 30 дБ частоты от fpass(1)
до fpass(2)
.'ImpulseResponse'
— Тип импульсного ответа'auto'
(значение по умолчанию) | 'fir'
| 'iir'
Тип импульсного ответа фильтра, заданного как пара, разделенная запятой, состоящая из 'ImpulseResponse'
и 'fir'
, 'iir'
или 'auto'
.
'fir'
— Функция разрабатывает минимальный заказ, линейную фазу, фильтр конечного импульсного ответа (FIR). Чтобы компенсировать задержку, функция добавляет к входному сигналу N/2 нули, где N является порядком фильтра. Функция затем фильтрует сигнал и удаляет первый N/2 выборки вывода.
В этом случае входной сигнал должен быть, по крайней мере, в два раза длиннее, чем фильтром, который соответствует спецификациям.
'iir'
— Функция разрабатывает фильтр бесконечного импульсного ответа (IIR) минимального заказа и использует функцию filtfilt
, чтобы выполнить фильтрацию нулевой фазы и компенсировать задержку фильтра.
Если сигнал не по крайней мере в три раза более длинен, чем фильтр, который соответствует спецификациям, функция разрабатывает фильтр с меньшим порядком и таким образом меньшей крутизной.
'auto'
Функция разрабатывает КИХ-фильтр минимального заказа, если входной сигнал достаточно длинен, и БИХ-фильтр минимального заказа в противном случае. А именно, функция выполняет эти шаги:
Вычислите минимальный заказ, что КИХ-фильтру, должно быть, придется соответствовать спецификациям. Если сигнал является, по крайней мере, в два раза длиннее, чем необходимым порядком фильтра, проектом, и используйте тот фильтр.
Если сигнал не достаточно длинен, вычислите минимальный заказ, что БИХ-фильтру, должно быть, придется соответствовать спецификациям. Если сигнал по крайней мере в три раза более длинен, чем необходимый порядок фильтра, проект, и используйте тот фильтр.
Если сигнал не достаточно длинен, обрежьте порядок до одной трети длина сигнала и разработайте БИХ-фильтр того порядка. Сокращение по порядку происходит за счет крутизны полосы перехода.
Отфильтруйте сигнал и компенсируйте задержку.
'Steepness'
— Transition0.85
(значение по умолчанию) | скаляр в интервале [0.5, 1) | двухэлементный вектор с элементами в интервале [0.5, 1)Крутизна полосы перехода, заданная как пара, разделенная запятой, состоящая из 'Steepness'
и скалярного или двухэлементного вектора с элементами в интервале [0.5, 1). Когда крутизна увеличивается, ответ фильтра приближается к идеалу bandstop ответ, но получившаяся длина фильтра и вычислительная стоимость операции фильтрации также увеличиваются. Смотрите Крутизну Заграждающего фильтра для получения дополнительной информации.
'StopbandAttenuation'
— Отфильтруйте затухание полосы задерживания60
(значение по умолчанию) | положительная скалярная величина в дБОтфильтруйте затухание полосы задерживания, заданное как пара, разделенная запятой, состоящая из 'StopbandAttenuation'
и положительной скалярной величины в дБ.
y
Фильтрованный сигналФильтрованный сигнал, возвращенный как вектор, матрица или расписание с теми же размерностями как вход.
d
Заграждающий фильтрdigitalFilter
Заграждающий фильтр используется в операции фильтрации, возвращенной как объект digitalFilter
.
Используйте filter
(d,x)
, чтобы отфильтровать x
сигнала с помощью d
.
Используйте fvtool
(d)
, чтобы визуализировать ответ фильтра.
Используйте designfilt
, чтобы отредактировать или сгенерировать цифровой фильтр на основе спецификаций частотной характеристики.
Аргумент 'Steepness'
управляет шириной областей перехода фильтра. Чем ниже крутизна, тем шире область перехода. Чем выше крутизна, тем более узкий область перехода.
Чтобы интерпретировать крутизну фильтра, рассмотрите следующие определения:
Частота Найквиста, f Найквист, является самой высокой частотной составляющей сигнала, который может быть выбран на данном уровне без искажения. Найквисту f 1 год (×π рад/выборка), когда у входного сигнала нет времени информация и fs
/2 герц, когда входной сигнал является расписанием или когда вы задаете частоту дискретизации.
Более низкие и верхние частоты полосы задерживания фильтра, f stoplower и f stopupper, являются частотами, между которыми затухание равно или больше, чем значение, заданное с помощью 'StopbandAttenuation'
.
Центр области полосы задерживания является центром f = (f stoplower + f stopupper)/2.
Более низкой шириной перехода фильтра, W ниже, является f stoplower – fpass
ниже.
Верхней шириной перехода фильтра, верхний W, является верхний fpass
– f stopupper.
Большинство неидеальных фильтров также ослабляет входной сигнал через полосу пропускания. Максимальное значение этого зависимого частотой затухания называется пульсацией полосы пропускания. Каждый фильтр, используемый bandstop
, имеет пульсацию полосы пропускания 0,1 дБ.
Чтобы управлять шириной полос перехода, можно задать 'Steepness'
как любой двухэлементный вектор, [s ниже, s, верхний], или скаляр. Когда вы задаете 'Steepness'
как вектор, функцию:
Вычисляет более низкую ширину перехода как
W ниже = (1 – s ниже) × (центр f – fpass
ниже).
Когда первый элемент 'Steepness'
равен 0,5, ширина перехода составляет 50% (центр f – fpass
ниже).
Когда первый элемент 'Steepness'
приближается 1, ширина перехода прогрессивно становится более узкой, пока это не достигает минимального значения 1% (центр f – fpass
ниже).
Вычисляет верхнюю ширину перехода как
W, верхний = (1 – верхний s) × (верхний fpass
– центр f).
Когда второй элемент 'Steepness'
равен 0,5, ширина перехода составляет 50% (верхний fpass
– центр f).
Когда второй элемент 'Steepness'
приближается 1, ширина перехода прогрессивно становится более узкой, пока это не достигает минимального значения 1% (верхний fpass
– центр f).
Когда вы задаете 'Steepness'
как скаляр, функция разрабатывает фильтр с равными более низкими и верхними ширинами перехода. Значение по умолчанию 'Steepness'
0.85.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.