内容发布更新时间 : 2024/12/24 7:49:08星期一 下面是文章的全部内容请认真阅读。
.
图 具有加性噪声的信号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绘制损耗函数曲线
.