实验四IIR和FIR数字滤波器设计及软件实现实验报告

.

图 具有加性噪声的信号x(t)及其频谱如图

(3)请设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。先观察xt的频谱,确定滤波器指标参数。

(4)根据滤波器指标选择合适的窗函数,计算窗函数的长度N,调用MATLAB函数fir1设计一个FIR低通滤波器。并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt的滤波。绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。

(4)重复(3),滤波器指标不变,但改用等波纹最佳逼近法,调用MATLAB函数remezord和remez设计FIR数字滤波器。并比较两种设计方法设计的滤波器阶数。

提示:○1MATLAB函数fir1和fftfilt的功能及其调用格式请查阅本书第7章和第8章;

.

.

2采样频率Fs=1000Hz,采样周期T=1/Fs; ○

3根据图10.6.1(b)和实验要求,可选择滤波器指标参数:通带○

截止频率fp=120Hz,阻带截至频率fs=150Hz,换算成数字频率,通带截止频率?p?2?fp??0.24?,通带最大衰为0.1dB,阻带截至频率

?s?2?fs??0.3?,阻带最小衰为

60dB。]

4实验程序框图如图10.5.2所示,供读者参考。 ○

Fs=1000,T=1/Fs xt=xtg 产生信号xt, 并显示xt及其频谱 用窗函数法或等波纹最佳逼近法 设计FIR滤波器hn 对信号xt滤波:yt=fftfilt(hn,xt) 1、计算并绘图显示滤波器损耗函数 2、绘图显示滤波器输出信号yt End

四、Matlab源代码、实验结果图像和结果分析

(实验4_1)

实验代码(函数部分单独分出来): (mstg函数):

.

.

function st=mstg

%产生信号序列变量st,并显示st的时域波形和频谱

%st=mstg返回三路调幅信号相加形成的混合信号,长度N=1600 N=1600;

Fs=10000;T=1/Fs;Tp=N*T; t=0:T:(N-1)*T;k=0:N-1;f=k/Tp; fc1=Fs/10; fm1=fc1/10; fc2=Fs/20; fm2=fc2/10; fc3=Fs/40; fm3=fc3/10;

xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t); % xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t); xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t); st=xt1+xt2+xt3; fxt=fft(st,N); %

subplot(3,1,1);

plot(t,st);grid;xlabel('t/s');ylabel('s(t)');

axis([0,Tp/8,min(st),max(st)]);title('(a) s(t)的波形'); subplot(3,1,2);

.

.

stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b) s(t)的频谱');

axis([0,Fs/5,0,1.2]);

xlabel('f/Hz');ylabel('幅度'); (myplot函数): function myplot(B,A) %时域离散系统损耗函数绘图 %B为系统函数分子多项式系数向量 %A为系统函数分母多项式系数向量 [H,W]=freqz(B,A,1000); m=abs(H);

plot(W/pi,20*log10(m/max(m)));grid on; xlabel('\\omega/\\pi');ylabel('幅度(dB)') axis([0,1,-150,50]);title('损耗函数曲线'); (tplot函数):

function tplot(xn,T,yn) %时域序列连续曲线绘图函数

% xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) % T为采样间隔

n=0:length(xn)-1;t=n*T; plot(t,xn);

xlabel('t/s');ylabel(yn);

.

.

axis([0,t(end),min(xn),1.2*max(xn)]) (实验4_1源代码):

% IIR数字滤波器设计及软件实现 clear all;close all

Fs=10000;T=1/Fs; %采样频率

%调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st st=mstg;

%低通滤波器设计与实现

========================================= fp=280;fs=450;

wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; ?指标(低通滤波器的通、阻带边界频)

[N,wp]=ellipord(wp,ws,rp,rs); %调用ellipord计算椭圆DF阶数N和通带截止频率wp

[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A

y1t=filter(B,A,st); %滤波器软件实现 % 低通滤波器设计与实现绘图部分 figure(5); subplot(2,1,1);

myplot(B,A); %调用绘图函数myplot绘制损耗函数曲线

.

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4