数字信号处理 实验三 FIR数字滤波器的设计.doc
文本预览下载声明
实验三 FIR数字滤波器的设计
2.窗函数法的设计步骤
窗函数设计FIR数字滤波器是从时域出发的,把理想滤波器的单位取样响应 用合适的窗函数截短成为有限长度的,使得h(n)逼近理想的。以实现所设计的滤波器的频率响应 逼近于理想滤波器的频率响应 。一
个有限长的序列,如果满足频率采样定理的条件,可以通过频谱的有限个采样点的值准确地恢复。频率抽样法正是采用这种思想来设计FIR数字滤波器。
a.给定希望逼近的频率响应函数Hd (ejw)。
b.求单位脉冲响应
c.由过渡带宽及阻带最小衰减的要求,可选定窗形状,并估计窗口长度N。
原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣窄的窗函数。
d. 计算所设计的FIR滤波器的单位脉冲响应
e.由h(n)求FIR滤波器的系统函数
3.MATLAB提供了fir1函数,以实现线性相位FIR滤波器。
调用格式如下:
hn=fir1(N, wc, ‘ftype’, window)
参数:
N:阶数
wc:归一化的数字频率,0≤wc≤1。
ftype:滤波器类型,如高通、带阻等。当ftype=high时,设计高通FIR滤波器;当ftype=stop时,设计带阻FIR滤波器。应当注意,在设计高通和带阻滤波器时,阶数N只能取偶数(h(n)长度N+1为奇数)。不过,当用户将N设置为奇数时,fir1会自动对N加1。window:应用的窗函数类型,默认为hamming窗。
(二)实验项目
用窗函数法设计一个FIR低通滤波器,性能指标如下:
通带截止频率 wp=0.2π
阻带截止频率 ws=0.3π
通带衰减不大于 3 dB
阻带衰减不小于 40dB
采样频率 1 HZ
代码:
FS=1;
wp=0.2*pi;
ws=0.3*pi;
B=ws-wp; %计算过渡带的宽度
N=ceil(6.2*pi/B); % 计算阶数N,ceil(x)取大于等于x的整数
M=N-1;
wc=(wp+B/2)/pi;
hn=fir1(M,wc,hanning(N));
H=1024;
hk=fft(hn,H); %求h(n)的FFT变换
n=0:N-1;
figure(1);
subplot(2,2,1);
stem(n,hn,.); %绘制h(n)的火柴杆图
xlabel(n); ylabel( h(n));grid on
k=1:H/2+1;
w=2*(0:H/2)/H;
subplot(2,2,2);
plot(w,20*log10(abs(hk(k)))); %绘制h(n)的频谱图
xlabel(ω/π);
ylabel(20lg|Hg(ω)|);grid on
wf=0:pi/511:pi;
HK=freqz(hn,wf);
wHz=wf*FS/(2*pi); % 转化为Hz
subplot(2,2,3);
plot(wHz,20*log10(abs(HK)));grid on %绘制Hz频谱
xlabel(频率(Hz));ylabel(幅度);
FS=1;
H=1024;
t=[0:1/FS:H/FS];
S=2+3*cos(2*pi*0.08*t+pi*(-50)/180)+2*sin(2*pi*0.3*t+pi*50/180)+5*cos(2*pi*0.35*t); %测试信号
figure(2);
subplot(2,2,1);
plot(S);title(滤波前的信号);
Y = fft(S,H);
Axx = (abs(Y));
Axx=Axx/(H/2);
Axx(1)=Axx(1)/2;
F=([1:H]-1)*FS/H;
subplot(2,2,2);
plot(F(1:H/2),Axx(1:H/2));
title(滤波前信号的频谱);
wp=0.2*pi;
ws=0.3*pi;
B=ws-wp; %计算过渡带的宽度
N=ceil(6.2*pi/B); % 计算阶数N,ceil(x)取大于等于x的整数
M=N-1;
wc=(wp+B/2)/pi;
hn=fir1(M,wc,hanning(N));
Hk=fft(hn,H);
Yk=Y.*Hk;
y=ifft(Yk);
subplot(2,2,3);
f=0:2*pi/100:2*pi;
plot(f,y(1:101));title(滤波后的信号);
Ayy = (abs(Yk));
Ayy=Ayy/(H/2);
Ayy(1)=Ayy(1)/2;
F=([1:H]-1)*FS/H;
subplot(2,2
显示全部