信号实验三 用窗函数设计FIR滤波器Word格式.docx
《信号实验三 用窗函数设计FIR滤波器Word格式.docx》由会员分享,可在线阅读,更多相关《信号实验三 用窗函数设计FIR滤波器Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
![信号实验三 用窗函数设计FIR滤波器Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/12/1ac316d7-0aef-4a34-85d1-f6c359c3d9cc/1ac316d7-0aef-4a34-85d1-f6c359c3d9cc1.gif)
2.根据性能要求和N值,合理地选择单位脉冲响应h(n)有奇偶对称性,从而确定理想频率响应Hd(Ω)的幅频特性和相位特性。
3.用傅里叶反变换公式,求得理想单位脉冲响应hd(n)。
4.选择适当的窗函数W(n)根据式h(n)=hd(n)w(n)求得所设计的FIR滤波器单位脉冲响应。
5.用傅理叶变换求得其频率响应H(Ω),分析它的幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述过程,直至得到满意的结果。
2.生成四种窗函数:
矩形窗、三角窗、汉宁窗、海明窗,并观察其频率响应。
n=30;
%矩形窗及其频响
window1=rectwin(n);
[h1,w1]=freqz(window1,1);
subplot(4,2,1);
stem(window1);
title('
矩形窗'
);
subplot(4,2,2);
plot(w1/pi,20*log(abs(h1))/abs(h1
(1)));
矩形窗频响'
%三角窗及其频响
window2=triang(n);
[h2,w2]=freqz(window2,1);
subplot(4,2,3);
stem(window2);
三角窗'
subplot(4,2,4);
plot(w2/pi,20*log(abs(h2))/abs(h2
(1)));
三角窗频响'
%汉宁窗及其频响
window3=hann(n);
[h3,w3]=freqz(window3,1);
subplot(4,2,5);
stem(window3);
汉宁窗'
subplot(4,2,6);
plot(w3/pi,20*log(abs(h3))/abs(h3
(1)));
汉宁窗频响'
%汉明窗频响
window4=hamming(n);
[h4,w4]=freqz(window4,1);
subplot(4,2,7);
stem(window4);
汉明窗'
subplot(4,2,8);
plot(w4/pi,20*log(abs(h4))/abs(h4
(1)));
汉明窗频响'
3、
(1)用Hanning窗设计一个线性相位带通滤波器,其长度N=15,上下边带宽截止频率分别为ω1=0.3π,ω2=0.5π,求h(n),绘制它的幅频和相位特性曲线,观察它的实际3dB和3dB带宽。
如果N=45,重复这个设计,观察幅频和相位特性的变化,注意长度N变化对结果的影响。
答:
>
>
window=hanning(16);
b=fir1(15,[0.30.5],window);
freqz(b,1);
改变N=45:
window=hanning(46);
b=fir1(45,[0.30.5],window);
(2)改用矩形窗和Blackman窗,设计步骤
(1)中的带通滤波器,观察并记录窗函数对滤波器幅频和相位特性的影响,比较这三种窗函数的特点。
A、矩形窗:
window=boxcar(16);
window=boxcar(46);
B、Blackman窗:
window=blackman(16);
改变N=45:
window=blackman(46);
(3)用Kaiser窗设计一个专用的线性相位滤波器。
N=40,当β值分别为4,6,8时,设计相应的滤波器,比较它们的幅频和相位特性,观察并分析β值不
同的时候对结果有什么影响。
window=kaiser(41,4);
b=fir1(40,[0.20.4],window);
window=kaiser(41,6);
window=kaiser(41,8);
三、实验内容报告
1、用窗函数设计滤波器的步骤
(1)、根据阻带的衰减,选择合适的窗:
不同的窗有不同的性质:
不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。
(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;
布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)。
(2)、根据窗函数得到的序列经过fir1或fir2得到一个滤波器传输函数系数的序列。
a、fir1:
用来设计传统的低通,高通,带通,带阻,多频带FIR滤波器;
调用格式:
b=fir1(N,Wn);
b=fir1(N,Wn,‘high’);
b=fir1(N,Wn,‘stop’);
参数说明:
N:
阶次,滤波器长度为N+1;
Wn:
通带截止频率,其值在0~1之间,1对应Fs/2;
b:
滤波器系数。
在上述所有格式中,若不指定窗函数的类型,fir1自动选择Hamming窗。
b、fir2:
用来设计具有任意幅度响应的FIR滤波器。
b=fir2(N,F,M);
F是频率向量,其值在0~1之间;
M是和F相对应的所希望的幅频相应。
如同fir1,缺省时自动选用Hamming窗。
c、为了观测到设计出来的滤波器的特性,用freqz得到频率响应。
其中在画频率响应的时候我们分为幅度和相位画出。
又因为我们要观测的是衰减的大小程度,以dB为单位,所以我们在画幅度的时候纵坐标应该转换成dB。
d、为了观测是否滤除已知频率,用filter(b,1,a)函数来实现,对信号的滤波实验。
2、产生一个包含三个正弦成分(120hz,80hz,20hz)的信号,设计基于窗函数的FIR滤波器,去除120hz、20hz成分,保留80hz信号。
通带允许的最大衰减为0.25dB,阻带应达到的最小衰减为20dB。
滤波器的采样频率为500Hz。
MATLAB程序如下
clear;
clc;
fs=500;
t=(1:
250)/fs;
x=10*cos(2*pi*20*t)+cos(2*pi*80*t)+10*cos(2*pi*120*t);
L=length(x);
N=2^(nextpow2(L));
Hw=fft(x,N);
figure
(2);
subplot(2,1,1);
plot(t,x);
gridon;
滤波前信号x'
xlabel('
时间/s'
%原始信号
subplot(2,1,2);
plot((0:
N-1)*fs/L,abs(Hw));
%查看信号频谱
滤波前信号频谱图'
频率/Hz'
ylabel('
振幅|H(e^jw)|'
Ap=0.25;
As=20;
%定义通带及阻带衰减
dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];
%计算偏移量
mags=[0,1,0];
%带通
fcuts=[30,50,90,110];
%边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);
%估算FIR滤波器阶数
hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));
%FIR滤波器设计
[hn,w1]=freqz(hh2,1,512);
%求解数字滤波器的频率响应
figure(5)
stem(hh2)
hh2波形'
)
figure
(1)%绘图
plot(w1/pi,20*log10(abs(hn)))
grid
频率w'
幅度/db'
subplot(2,1,2)
plot(w1/pi,angle(hn))
相位/rad'
y=cos(2*pi*80*t);
y=filter(hh2,1,x);
%滤波
y(1:
ceil(N/2))=[];
%群延时N/2,删除无用信号部分
L=length(y);
Hw_2=fft(y,N);
figure(3);
plot(t(1:
L),y);
y=cos(2*pi*80*t)'
N-1)*fs/L,abs(Hw_2));
滤波后信号y频谱图'
四、思考题
1.定性的说明用本实验程序设计的FIR滤波器的3dB截止频率在什么位置?
它等于理想频率响应的截止频率吗?
答:
在0.3-0.5之间,等于理想频率响应的截止频率
2、如果没有给定h(n)长度N,而是给定了通带边缘截止频率ωs,阻带临界频率ωc,以及相应的衰减,你能根据这些条件用窗函数法设计线性相位FIR低通滤波器吗?
能,可以根据通带边缘截止频率Ws和阻带临界频率Wc与所选用的窗函数来大致判断长度N
3、频率取样方法和窗函数法各有什么特点?
简单说明?
频率采样法的优点是可以从频域直接处理,并且适合于最优化设计,它的缺点是频率控制点的位置受限于频率周上的N个采样点,因此滤波器的截止频率不易随意控制。
窗口法设计的主要优点是简单,使用起来方便。
窗口函数大多有封闭的公式可循,性能、参数都已有表格、资料可供参考,计算程序简便,所以很实用。