为什么我的阻带滤波器会衰减其他频率?


12

这是我的两色信号代码,其中我使用阻带去除较高的音调,然后在将信号与滤波器系数进行卷积后在频域中绘制前(蓝色)和后(红色) 。

如果将这段代码放入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,'stop');
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,'r')

1
带通/带阻滤波在本质上是不完善的,并且会始终影响您想单独留下的频谱区域。这是野兽的本质。
Daniel R Hicks

1
嗯...有什么方法可以抵消吗?还是另一个更简单的过滤器更适合?我对陷波滤波器了解不多,但是我知道它们实际上是窄带阻滤波器,并且Matlab可以为它们提供命令。
Zaubertrank

2
就像我说的,这是固有的。在优化某些参数时,设计滤波器始终是一个折衷,这是以牺牲其他参数为代价(并以牺牲成本为代价)的。
Daniel R Hicks

Answers:


12

滤波器在其频率响应中始终具有固有的“衰减”特性,因为您实际上无法实现一个完美的矩形函数的通带。对于低通滤波器,您的频率响应幅度下降至-3dB的点称为通带,超出范围的一切都称为阻带(从技术上讲,超出拐角频率的所有事物,但我们将采用拐角频率为-3dB级别)。频率响应衰减超过通带的速度取决于滤波器的长度。

如果您查看滤波器的频率响应ht,您会发现它在1000 Hz时降至-6dB:

在此处输入图片说明

因此,在滤波后,功率下降了6dB,这是合理的,您在图中将其视为振幅的一半。

如果您查看了所用fir1功能的文档,您也会意识到这一点(强调我的意思):

B = fir1(N,Wn)设计一个N'阶低通FIR数字滤波器,并在长度N+1向量中返回滤波器系数B。截止频率Wn必须介于之间0 < Wn < 1.01.0 对应于一半的采样率。该滤波器B是真实的,并且具有线性相位。 滤波器在Wn处的归一化增益为-6 dB。

现在,要创建更锐利的过滤器,并使响应非常接近矩形,您将不得不使用IIR过滤器,这些过滤器具有其自身的许多稳定性问题等,但绝对是一种选择。您可以在此处看到我的答案,以获取有关实现离散角2的二阶IIR滤波器的一些想法,这些滤波器给出了非常尖锐的拐角。这里有一个带通滤波器的示例,但是您可以阅读文档以了解那里使用的功能,并自己实现一个低通版本。


1

滤波器“决定”信号是在滤波器转换之内还是之外都需要时间。一种解决方案是仅使滤波器转换远离任何感兴趣的信号,例如在两个测试信号之间的中间位置,在您的测试案例中,几乎没有信号会因不完善的决策而失真。


0

ht = fir1(40,.5,'stop');

相反,您将在F0处具有非常低的衰减,而在F1处具有非常高的衰减。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.