数字信号处理实验报告二.docx
《数字信号处理实验报告二.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告二.docx(18页珍藏版)》请在冰豆网上搜索。
数字信号处理实验报告二
数字信号处理
第二次实验报告
学院:
信息工程学院
班级:
2012级电子信息工程*班
姓名:
学号:
20125507**
指导老师:
实验四:
IIR数字滤波器设计及软件实现
一、实验目的
1、熟悉双线性变换设计IIR滤波器的原理与方法
2、掌握IIR滤波器的MATLAB实现方法
二、实验原理简述
IIR数字滤波器间接法基本设计过程:
1、将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;
2、设计过渡模拟滤波器;
3、将过渡模拟滤波器系统函数转换成数字滤波器的系统函数
三、程序与图形
1、%-----------------信号产生函数mstg---------------
functionst=mstg%功能函数的写法
%产生信号序列向量st,并显示st的时域波形和频谱
%st=mstg返回三路调幅信号相加形成的混合信号,长度N=1600
N=1600%N为信号st的长度。
Fs=10000;T=1/Fs;Tp=N*T;%采样频率Fs=10kHz,Tp为采样时间
t=0:
T:
(N-1)*T;k=0:
N-1;f=k/Tp;
fc1=Fs/10;%第1路调幅信号的载波频率fc1=1000Hz,
fm1=fc1/10;%第1路调幅信号的调制信号频率fm1=100Hz
fc2=Fs/20;%第2路调幅信号的载波频率fc2=500Hz
fm2=fc2/10;%第2路调幅信号的调制信号频率fm2=50Hz
fc3=Fs/40;%第3路调幅信号的载波频率fc3=250Hz,
fm3=fc3/10;%第3路调幅信号的调制信号频率fm3=25Hz
xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);%产生第1路调幅信号
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调幅信号
st=xt1+xt2+xt3;%三路调幅信号相加
fxt=fft(st,N);%计算信号st的频谱
%-------绘制st的时域波形和幅频特性曲线-----
subplot(2,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(2,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('幅度')
2、%-------实验4-2---------
clearall;closeall
Fs=10000;T=1/Fs;%采样频率
%调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st
st=mstg;
fp=280;fs=450;%下面wp,ws,为fp,fs的归一化值范围为0-1
wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60;%DF指标(低通滤波器的通、阻带边界频)
[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord计算椭圆DF阶数N和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp);%调用ellip计算椭圆带通DF系统函数系数向量B和A
[h,w]=freqz(B,A);
y1t=filter(B,A,st);%滤波器软件实现
figure
(2);subplot(2,1,1);
plot(w,20*log10(abs(h)));
axis([0,1,-80,0])
subplot(2,1,2);
t=0:
T:
(length(y1t)-1)*T;
plot(t,y1t);
%axis([0,1,-80,0])
3、%-------实验4-3---------
fpl=440;fpu=560;fsl=275;fsu=900;
wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/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
[h,w]=freqz(B,A);
y2t=filter(B,A,st);
figure(3);subplot(2,1,1);
plot(w,20*log10(abs(h)));
axis([0,1,-80,0])
subplot(2,1,2);
t=0:
T:
(length(y2t)-1)*T;
plot(t,y2t);
4、%-------实验4-4---------
fp=900;fs=550;
wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60;%DF指标(低通滤波器的通、阻带边界频)
[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord算椭圆DF阶数N通带截止频率
[B,A]=ellip(N,rp,rs,wp,'high');%调用ellip计算椭圆带通DF系统函数系数向量B和A
[h,w]=freqz(B,A);
y3t=filter(B,A,st);
figure(4);subplot(2,1,1);
plot(w,20*log10(abs(h)));
axis([0,1,-80,0])
subplot(2,1,2);
t=0:
T:
(length(y3t)-1)*T;
plot(t,y3t);
四、实验结果分析
由图可见,三个分离滤波器指标参数选取正确,损耗函数曲线达到所给指标。
分离出的三路信号y1(n)、y2(n)、y3(n)的波形是抑制载波的单频调幅波。
同时,值得注意的是,Ellipord函数的调用:
[n,Wp]=ellipord(Wp,Ws,Rp,Rs)
用于计算满足指标的椭圆数字滤波器的最低阶数N和通带边界频率wp,其中wp,ws,rp,rs为四个基本指标,需要注意的是wp,ws应为归一化之后的值。
五、思考题简答
1、请阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。
答:
第1路调幅信号的载波频率fc1=1000Hz,调制信号频率fm1=100Hz
第2路调幅信号的载波频率fc2=500Hz,调制信号频率fm2=50Hz
第3路调幅信号的载波频率fc3=250Hz,调制信号频率fm3=25Hz
2、信号产生函数mstg中采样点数N=800,对st进行N点FFT可以得到6根理想谱线。
如果取N=1000,可否得到6根理想谱线?
为什么?
N=2000呢?
请改变函数mstg中采样点数N的值,观察频谱图验证您的判断是否正确。
答:
,s(t)的每个频率成分都是25Hz的整数倍。
采样频率Fs=10kHz=25×400Hz,即在25Hz的正弦波的1个周期中采样400点。
所以,当N为400的整数倍时一定为s(t)的整数个周期。
因此,采样点数N=1800时,对s(t)进行N点FFT不能得到6根理想谱线。
如果取N=2000,能得到6根理想谱线。
实验五:
FIR数字滤波器设计与软件实现
一、实验目的
1、掌握窗函数设计FIR数字滤波器的方法与原理
2、掌握用等波纹最佳逼近法设计FIR数字滤波器的原理与方法
3、学会调用MATLAB函数设计FIR数字滤波器
二、实验原理简述
窗函数法设计线性相位低通滤波器设计步骤:
1、选择窗函数的类型,并估计窗口长度N
2、构造希望逼近的频率响应函数()
3、计算(n)
4、加窗得到设计结果:
h(n)=(n)w(n)
三、程序与图形
1、%--------------------信号产生函数------------------------
functionxt=xtg
%信号x(t)产生,并a显示信号的幅频特性曲线
%xt=xtg(N)产生一个长度为N,有加性高频噪声的单频调幅信号xt,采样频率Fs=1000Hz
%载波频率fc=Fs/10=100Hz,调制正弦波频率f0=fc/10=10Hz.
N=1000;Fs=1000;T=1/Fs;Tp=N*T;
t=0:
T:
(N-1)*T;
fc=Fs/10;f0=fc/10;%载波频率fc=Fs/10,单频调制信号频率为f0=Fc/10;
mt=cos(2*pi*f0*t);%产生单频正弦波调制信号mt,频率为f0
ct=cos(2*pi*fc*t);%产生载波正弦波信号ct,频率为fc
xt=mt.*ct;%相乘产生单频调制信号xt
nt=2*rand(1,N)-1;%产生随机噪声nt
%----------设计高通滤波器hn------------
fp=150;fs=200;Rp=0.1;As=70;%滤波器指标
fb=[fp,fs];m=[0,1];%计算remezord函数所需参数f,m,dev
dev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];
[n,fo,mo,W]=remezord(fb,m,dev,Fs);%确定remez函数所需参数
hn=remez(n,fo,mo,W);%调用remez函数进行设计,用于滤除噪声nt中的低频成分
yt=filter(hn,1,10*nt);%滤除随机噪声中低频成分,生成高通噪声yt
xt=xt+yt;%噪声加信号
fst=fft(xt,N);k=0:
N-1;f=k/Tp;
subplot(2,1,1);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)');
axis([0,Tp/5,min(xt),max(xt)]);title('(a)信号加噪声波形')
subplot(2,1,2);plot(f,abs(fst)/max(abs(fst)));grid;title('(b)信号加噪声的频谱')
axis([0,Fs/2,0,1.2]);xlabel('f/Hz');ylabel('幅度')
2、%-------实验5-2---------
clearall
xt=xtg;
N=1000;Fs=1000;T=1/Fs;Tp=N*T;
k=0:
N-1;f=k/Tp;
t=0:
T:
(N-1)*T;
fp=120;fs=150;Rp=0.1;As=60;Fs=1000;
wc=(fp+fs)/Fs;
B=2*pi*(fs-fp)/Fs;
M=ceil(11*pi/B);
hn=fir1(M-1,wc,blackman(M));
Hw=abs(fft(hn,N));
ywt=fftfilt(hn,xt,N);
figure;
subplot(2,1,1);
plot(f,20*log10(Hw)/max(Hw));gridon
xlabel('f/Hz');ylabel('幅度(dB)');
title('(a)低通滤波器的幅频特性')
axis([0,500,-160,5]);
subplot(2,1,2);
plot(t,ywt);gridon
xlabel('t/s');ylabel('y_1(t)');