窗函数法设计FIR数字滤波器

设计要求:

1.用海明窗设计一个线性低通滤波器,截止频率wc=0.25pi,要求在N=15和N=33的两种窗口长度的要求下,分别求出h(n),输出相应的幅频特性和相频特性。

2.用四种窗函数设计线性相位低通滤波器,绘制相应的幅频特性,比较四种窗函数对滤波器特性的影响。

实现代码:
 

实现理想低通滤波器的函数:

function hd = ideal_lp(wc,N)
%N为奇数 理想低通滤波器的脉冲响应
alpha = (N-1)/2;
n = 0:1:N-1;
m = n - alpha;
hd = sin(wc*m)./(pi*m);
hd(alpha + 1) = wc/pi;

实现设计: 

clear all;
close all;
figure;
N =15;
wc = 0.25*pi;
n = 0:1:N-1;
hd = ideal_lp(wc,N);
subplot(221);stem(n,hd);title('理想单位脉冲响应');
w_ham = (hamming(N))';
h = hd.*w_ham;
subplot(223);stem(n,h);title('实际单位脉冲响应');
[H w] = freqz(h);
mag = abs(H);
db = 20*log10((mag+eps)/max(mag));
pha = angle(H);
subplot(222);plot(w/pi,mag);title('实际的幅度响应');
subplot(224);plot(w/pi,pha);title('实际的相位响应');
 w1 = w;
% plot(w/pi,db);title('实际的幅度响应');

db1 = 20*log10((mag+eps)/max(mag));
figure;
N =33;
wc = 0.25*pi;
n = 0:1:N-1;
hd = ideal_lp(wc,N);
subplot(221);stem(n,hd);title('理想单位脉冲响应');
w_ham = (hamming(N))';
h = hd.*w_ham;
subplot(223);stem(n,h);title('实际单位脉冲响应');
[H w] = freqz(h);
mag = abs(H);
db = 20*log10((mag+eps)/max(mag));
pha = angle(H);
subplot(222);plot(w/pi,mag);title('实际的幅度响应');
subplot(224);plot(w/pi,pha);title('实际的相位响应');
figure;
plot(w1/pi,db1);
hold on;
plot(w/pi,db);
hold on;
line([0,1],[-3,-3],'Color','g');
hold on;
line([0,1],[-20,-20],'Color','g');
title('实际的幅度db响应,(15)蓝色 (33)红色');

%% 不同的窗口对滤波器的影响
N =33;
wc =0.25*pi;
hd = ideal_lp(wc,N);
w_box = (boxcar(N))';
h_box = hd .*w_box;

w_han = (hanning(N))';
h_han = hd .*w_han;

w_ham = (hamming(N))';
h_ham = hd .*w_ham;

w_bla = (blackman(N))';
h_bla = hd .*w_bla;

[H w] = freqz(h_box);
subplot(221);plot(w/pi,20*log10(abs(H)));title('由矩形窗设计的filter幅度响应');

[H w] = freqz(h_han);
subplot(222);plot(w/pi,20*log10(abs(H)));title('由汉宁窗设计的filter幅度响应');

[H w] = freqz(h_ham);
subplot(223);plot(w/pi,20*log10(abs(H)));title('由海明窗设计的filter幅度响应');

[H w] = freqz(h_bla);
subplot(224);plot(w/pi,20*log10(abs(H)));title('由二阶升余弦设计的filter幅度响应');


绘图:

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值