Matlab窗函数法设计FIR-LP Filter

鹅毛在路上了
Matlab领域优质创作者
2023-06-19 22:56:02
clc,clear,close all;
fp = 200; fs = 250; FS = 2000;  %模拟域指标,单位Hz
%通带截止频率,阻带截止频率,采样频率
%数字频率w = 2*pi*f/Fs
wp = 2*pi*fp/FS; ws = 2*pi*fs/FS;  %数字域指标,单位rad
wc = (wp+ws)/2;  %3dB截止频率
N = 61; M = 60;  %窗长41(阶数60)
b1 = fir1(M,wc/pi,'low',boxcar(N));    %矩形窗设计低通FIR
b2 = fir1(M,wc/pi,'low',hanning(N));   %汉宁窗设计低通FIR
b3 = fir1(M,wc/pi,'low',hamming(N));   %海明窗设计低通FIR
b4 = fir1(M,wc/pi,'low',blackman(N));  %布拉克曼窗设计低通FIR
b5 = fir1(M,wc/pi,'low',kaiser(N));    %凯撒窗设计低通FIR
[h1,w1] = freqz(b1,1,-2*pi:pi/100:2*pi);  %freqz求解窗函数法设计FIR的幅频响应
[h2,w2] = freqz(b2,1,-2*pi:pi/100:2*pi); 
[h3,w3] = freqz(b3,1,-2*pi:pi/100:2*pi);  
[h4,w4] = freqz(b4,1,-2*pi:pi/100:2*pi); 
[h5,w5] = freqz(b5,1,-2*pi:pi/100:2*pi); 
subplot(511)
plot(w1/pi,20*log10(abs(h1)),'LineWidth',1.2)  %20log10(h)转化为dB
xlabel('归一化频率/\pi'); ylabel('幅度/db');
title('矩形窗幅频特性曲线 N=61') 
grid on
subplot(512)
plot(w2/pi,20*log10(abs(h2)),'LineWidth',1.2)
xlabel('归一化频率/\pi'); ylabel('幅度/db');
title('汉宁窗幅频特性曲线 N=61')
grid on
subplot(513)
plot(w3/pi,20*log10(abs(h3)),'LineWidth',1.2);
xlabel('归一化频率/\pi'); ylabel('幅度/db');
title('海明窗幅频特性曲线 N=61')
grid on
subplot(514)
plot(w4/pi,20*log10(abs(h4)),'LineWidth',1.2);
xlabel('归一化频率/\pi'); ylabel('幅度/db');
title('布拉克曼窗幅频特性曲线 N=61')
grid on
subplot(515)
plot(w4/pi,20*log10(abs(h5)),'LineWidth',1.2);
xlabel('归一化频率/\pi'); ylabel('幅度/db');
title('凯撒窗幅频特性曲线 N=61')
grid on

阶数对于矩形窗、广义余弦窗的影响:

汉宁窗以使用旁瓣互相抵消,消去高频干扰和漏能,从减小泄漏观点出发,汉宁窗优于矩形窗。但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降;
海明窗和汉宁窗函数的主瓣宽度是一样大,只是加权系数不同。海明窗加权的系数能使旁瓣达到更小;
这个窗函数和前两个窗函数很像,不过增加了升余弦的二次谐波分量,旁瓣峰值衰减增大。
 

 

...全文
345 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

183

社区成员

发帖
与我相关
我的任务
社区描述
欢迎加入Matlab编程社区,支持各专业领域有关Matlab的博文、编程知识、经验分享,感谢每一份支持,您的鹅毛在路上了~
matlab 个人社区 山东省·潍坊市
社区管理员
  • Wayne_Fine
  • 数学建模加油站
  • MATLAB码农
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧