使用MATLAB设计FIR低通滤波器

时间:2024-03-26 13:59:00

**

使用MATLAB设计FIR低通滤波器

**
关于现代通信原理作业。
https://blog.csdn.net/tanghonghanhaoli/article/details/100533581
这是老师给出的提示,里面有比较详细的讲解,下面写一些我的想法。

1. 为什么要设计低通滤波器
我们可以看到例子中给的m(t)在时域中已经是物理可实现的信号了,但是在频域上看这个信号的频谱是无限宽的,显然这用计算机是难以处理的,加上Sa信号旁瓣的影响并不是很大,所以我们考虑滤除旁瓣,即使用低通滤波器。

2. 关于如何设计低通滤波器的理论分析
对于例题中是想保留Sa信号±10Hz内的频率分量,即需要设计一个频率范围在±10Hz的低通滤波器h(t),也就是频域为一个方波信号H(f)。由信号与系统的知识可得,频域方波,时域则为Sa信号。时域h(t)如果为标准的Sa函数,则在t<0的时候,h(t)还会有值,这明显是物理不可实现的,所以这里考虑将h(t)进行一定的时移。

注意:这里并不会影响滤波器的功能,因为时域平移对应频域的相移,但是幅度没有改变,所以即使时域平移了,频域的幅频特性并不会改变,依然是在±10Hz通过信号。

3. 关于MATLAB的Filter Designer
在MATLAB的Filter Designer中就将中心移到了(N/2)*Ts,N就是对h(t)的抽样点个数。时域抽样点越多,对应的时域波形就越接近Sa信号,频域就越接近方波,即越接近我们要的低通滤波器。同时,如果抽样频率Fs不变,则Ts也不会改变,抽样点N增加,那么中心平移得就更多了,即时延就更多了;换个角度理解,抽样点更多,抽样时间间隔Ts不变,也就意味着对更高频的旁瓣也会被采样,则被采样的Sa信号更宽了,占用的时间也更多了,也能想象时延会更大。

但是在MATLAB中,N好像是由系统根据你设置的参数自动匹配的。我没有看到设置抽样个数N的选项,只有设置抽样频率Fs的选项,N会根据你设置的Fs进行自动匹配,就是设置完参数后点击Design Filter后,左上角看到的order的数值。Fs增加,即Ts减小,N会随之增加,在MATLAB中,我们可以看到两者的变化速率是一致的,所以中心始终在一个位置。(所以我在想是不是MATLAB关于Design Filter的系统设置就是只采样主瓣和相邻几个旁瓣的数值,这样也确实已经很接近一个Sa信号了,更高频的旁瓣其实幅度很小,近似为0应该也不会带来太多误差)
使用MATLAB设计FIR低通滤波器

本人学生,难免学艺不精,若有疏漏错误之处,敬请指正!