Вот мой код для двухтонного сигнала, где я использую полосу остановки для удаления более высокого тона, а затем нанёс график до (синим) и после (красным) в частотной области после свертывания моего сигнала с коэффициентами фильтра ,
Если вы поместите этот код в Matlab, вы ясно увидите, что более высокая частота была успешно удалена фильтром, но по какой-то причине амплитуда более низкой частоты была уменьшена вдвое, и чем больше я увеличиваю количество коэффициентов фильтра, чем больше это просто сглаживает всю мою кривую, почему это происходит? И как я могу предотвратить это, чтобы стоп-полоса не распространялась наружу? Вот изображение и код:
fSampling = 8000; tSampling = 1 / fSampling; t = 0: t Отбор проб: 0,005; F0 = 1000; F1 = 3000; xt = sin (2 * pi * F0 * t) + sin (2 * pi * F1 * t); ht = fir1 (40, .25, «стоп»); yt = conv (xt, ht); fAxis = -4000: 125: 4000-125; xF = fft (xt, 64); MagXF = fftshift (abs (xF)); участок (fAxis, MagXF); Оставайтесь на линии yF = fft (yt, 64); MagYF = fftshift (abs (yF)); участок (fAxis, MagYF, 'г')
Ответы:
Фильтры всегда имеют свой «спад» в своей частотной характеристике, потому что практически невозможно реализовать полосу пропускания, которая является идеальной прямоугольной функцией. Для фильтра нижних частот точка, в которой величина вашей частотной характеристики падает до -3 дБ, называется полосой пропускания, а все, что находится за ее пределами, называется полосой останова (технически все, что находится за пределами угловой частоты, но мы возьмем угловая частота должна быть на уровне -3 дБ). Как быстро ваша частотная характеристика ослабевает за пределами полосы пропускания, зависит от длины фильтра.
Если вы посмотрите на частотную характеристику вашего фильтра,
ht
вы увидите, что он падает до -6 дБ при 1000 Гц:Таким образом, имеет смысл, что после фильтрации мощность падает на 6 дБ, что вы видите на своем рисунке как уменьшение амплитуды вдвое.
Если бы вы посмотрели документацию по
fir1
функции, которую использовали, вы бы тоже это поняли (выделено мое):Теперь, чтобы создать более четкие фильтры с ответами, которые довольно близки к прямоугольнику, вам придется использовать фильтры IIR, которые имеют свои собственные проблемы со стабильностью и т. Д., Но, безусловно, вариант. Вы можете увидеть мой ответ здесь для некоторых идей по реализации дискретного БИХ-фильтра 2-го порядка, который дает очень острые углы. Здесь приведен пример для полосового фильтра, но вы можете прочитать документы об используемых там функциях и самостоятельно реализовать низкочастотную версию.
источник
Фильтру требуется время, чтобы «решить», находится ли сигнал только внутри или за пределами перехода фильтра. Одно из решений состоит в том, чтобы просто отодвинуть переход фильтра от любого интересующего сигнала, например, на полпути между вашими двумя тестовыми сигналами, когда в вашем тестовом случае очень мало сигналов для искажения из-за несовершенного решения.
источник
использование
вместо этого у вас будет очень низкое затухание в F0 и очень высокое затухание в F1.
источник