实验四IIR数字滤波器设计及软件实现实验报告
(c)高通滤波器损耗函数及其分离出的调幅信号y3(t)
图104. 实验4程序exp4.m运行结果
八、思考题简答
(1)请阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。 (2)信号产生函数mstg中采样点数N=800,对st进行N点FFT可以得到6根理想谱线。如果取N=1000,可否得到6根理想谱线?为什么?N=2000呢?请改变函数mstg中采样点数N的值,观察频谱图验证您的判断是否正确。
(3)修改信号产生函数mstg,给每路调幅信号加入载波成分,产生调幅(AM)信号,重复本实验,观察AM信号与抑制载波调幅信号的时域波形及其频谱的差别。
答:分析发现,st的每个频率成分都是25Hz的整数倍。采样频率Fs=10kHz=25×400Hz,即在25Hz的正弦波的1个周期中采样400点。所以,当N为400的整数倍时一定为st的整数个周期。因此,采样点数N=800和N=2000时,对st进行N点FFT可以得到6根理想谱线。如果取N=1000,不是400的整数倍,不能得到6根理想谱线
12页 第6页共
实验四IIR数字滤波器设计及软件实现实验报告
Matlab的IIR滤波器
描述清楚iir滤波器的设计建模过程,程序注释,以及对不同设计方案的说明比较等。
Iir1 :
低通巴特沃斯模拟滤波器设计。
通带截至频率 3400 Hz , 通带最大衰减 3dB 阻带截至频率 4000 Hz , 阻带最小衰减 40dB Iir2 :
模拟低通滤波器转换为数字低通滤波器 , 脉冲响应不变法和双线性变换法。 Iir3 :
切比雪夫二型低通数字滤波器设计
通带边界频率 0.2π , 通带最大衰减 1dB 阻带截至频率 0.4π , 阻带最小衰减 80dB Iir4 :
椭圆带通数字滤波器设计 Iir5 :
高通和带通巴特沃思数字滤波器设计 双线性变换
% 低通巴特沃斯模拟滤波器设计 clear; close all
fp=3400; fs=4000; Rp=3; As=40; [N,fc]=buttord(fp,fs,Rp,As,'s') [B,A]=butter(N,fc,'s'); [hf,f]=freqs(B,A,1024);
plot(f,20*log10(abs(hf)/abs(hf(1)))) grid, xlabel('f/Hz'); ylabel('幅度(dB)') axis([0,4000,-40,5]); line([0,4000],[-3,-3]); line([3400,3400],[-90,5])
% 用脉冲响应不变法和双线性变换法将模拟滤波器离散化 clear; close all
b=1000;a=[1,1000]; w=[0:1000*2*pi]; [hf,w]=freqs(b,a,w);
subplot(2,3,1); plot(w/2/pi,abs(hf)); grid;
xlabel('f(Hz)'); ylabel('幅度'); title('模拟滤波器频响特性')
12页 第7页共
实验四IIR数字滤波器设计及软件实现实验报告
Fs0=[1000,500]; for m=1:2
Fs=Fs0(m)
[d,c]=impinvar(b,a,Fs)
[f,e]=bilinear(b,a,Fs)
wd=[0:512]*pi/512;
hw1=freqz(d,c,wd);
hw2=freqz(f,e,wd);
subplot(2,3,2); plot(wd/pi,abs(hw1)/abs(hw1(1))); grid on; hold on
title('脉冲响应不变法')
subplot(2,3,3); plot(wd/pi,abs(hw2)/abs(hw2(1))); grid on; hold on
title('双线性变换法') end
% 切比雪夫Ⅱ型低通数字滤波器设计 clear; close all
wp=0.2; ws=0.4; Rp=1; Rs=80; [N,wc]=cheb2ord(wp,ws,Rp,Rs) [B,A]=cheby2(N,Rs,wc) freqz(B,A)
% 直接设计带通数字椭圆滤波器 clear; close all
Wp=[0.25,0.45]; Ws=[0.15,0.55]; Rp=0.1; Rs=60;
[N,wc]=ellipord(Wp,Ws,Rp,Rs) [b,a]=ellip(N,Rp,Rs,wc) [hw,w]=freqz(b,a);
subplot(2,1,1); plot(w/pi,20*log10(abs(hw))); grid axis([0,1,-80,5]); xlabel('w/π'); ylabel('幅度(dB)') subplot(2,1,2); plot(w/pi,angle(hw)); grid
axis([0,1,-pi,pi]); xlabel('w/π'); ylabel('相位(rad)')
% 用双线性变换法设计数字高通和带通滤波器
12页 第8页共
实验四IIR数字滤波器设计及软件实现实验报告
clear; close all T=1; wch=pi/2;
wlc=0.35*pi; wuc=0.65*pi;
B=1; A=[1,2.6131,3.4142,2.6131,1]; [h,w]=freqz(B,A,512);
subplot(2,2,1); plot(w,20*log10(abs(h))); grid
%axis([0,10,-90,0]); xlabel('w/π'); title('模拟低通幅度(dB)') % 高通
omegach=2*tan(wch/2)/T;
[Bhs,Ahs]=lp2hp(B,A,omegach); [Bhz,Ahz]=bilinear(Bhs,Ahs,1/T); [h,w]=freqz(Bhz,Ahz,512);
subplot(2,2,3); plot(w/pi,20*log10(abs(h))); grid
axis([0,1,-150,0]); xlabel('w/π'); title('数字高通幅度(dB)') % 带通
omegalc=2*tan(wlc/2)/T; omegauc=2*tan(wuc/2)/T;
wo=sqrt(omegalc*omegauc); Bw=omegauc-omegalc; [Bbs,Abs]=lp2bp(B,A,wo,Bw); [Bbz,Abz]=bilinear(Bbs,Abs,1/T); [h,w]=freqz(Bbz,Abz,512);
subplot(2,2,4); plot(w/pi,20*log10(abs(h))); grid
axis([0,1,-150,0]); xlabel('w/π'); title('数字带通幅度(dB)')
数字滤波器设计与应用问题
1.题目:数字滤波器的设计与应用 2.设计要求:利用 Matlab 软件,以复合信号分离为例,对 “数字信号处理” 课程中的谱分析、 数字滤波器设计和信号滤波这三个过程进行了仿真实现,给出了仿真结果。 3.具体步骤:
(1)构造原始信号s(t) (2)画出s(t)的频谱
(3)设计ellipse数字滤波器(IIR),包括低通,带通,带通,并显示幅频特性 (4)用得到的滤波器进行滤波,分离出三路信号,观察时域波形和幅频特性
12页 第9页共
实验四IIR数字滤波器设计及软件实现实验报告
(5)用三路信号s1,s2,s3尝试重新合成原始信号
4.问题:为什么重新合成的信号和原信号不相等呢?谁能解释一下?谢谢 程序如下: clear clf
%(1)构造原始信号
Fs=10000;T=1/Fs;%先设定采样频率 t=0:T:0.1;n=length(t);
s=cos(2*pi*250*t).*cos(2*pi*25*t)+cos(2*pi*500*t).*cos(2*pi*50*t)+... cos(2*pi*1000*t).*cos(2*pi*100*t);
subplot(2,1,1),plot(t,s),axis([0 0.08 -2 3]) title('原始信号s(t)')
xlabel('t/s'),ylabel('s(t)') %(2)画出s(t)的频谱 ft=fftshift(fft(s));
i=fix(n/2);f=(-i:i)/n*Fs;%貌似这是公式。
subplot(2,1,2),stem(f,abs(ft),'Marker','none'),xlim([0 1250]) title('s(t)的频谱')
xlabel('f/Hz'),ylabel('幅度')
%(3)设计ellipse数字滤波器(IIR),并显示幅度特性 %%3.1a 设计模拟低通滤波器 fp=320;fs=400;Ap=0.1;As=60; wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;
Wp=(2*Fs)*tan(wp/2);Ws=(2*Fs)*tan(ws/2); [N,Wc]= ellipord(Wp ,Ws ,Ap ,As ,'s'); [bLPs ,aLPs]=ellip(N ,Ap,As,Wc,'s') ; [H,w]=freqs(bLPs,aLPs); db =20*log10(abs(H));
figure,subplot(2,1,1),plot(w/2/pi,db); axis([0 1600 -80 5]),grid
title('模拟低通滤波器的幅度特性'); xlabel('f(Hz)'); ylabel('dB');
%%3.1b 将模拟低通滤波器转换为数字低通滤波器 [bLPz,aLPz] = bilinear(bLPs ,aLPs ,Fs) ; w = linspace(0,pi,1000) ; h = freqz(bLPz,aLPz ,w) ;
subplot(2,1,2),plot(w*Fs/2/pi,20*log10(abs(h)) ) ; axis([0 1600 -80 5]),grid
title('数字低通滤波器的幅度特性'); xlabel('f(Hz)' ) ; ylabel('dB' ) ;
%%3.2a 设计模拟带通滤波器
第10页共12页