数字信号实验.docx
《数字信号实验.docx》由会员分享,可在线阅读,更多相关《数字信号实验.docx(14页珍藏版)》请在冰点文库上搜索。
数字信号实验
实验一:
离散时间信号与系统
一.实验目的:
%计算一全通系统(z^-1-0.5)/(1-0.5z^-1)的单位采样响应h(n),矩形序列R5(n)的响应;比较该响应与R5(n)*h(n)的结果
二.实验代码:
n=0:
19;
x1=[1,zeros(1,19)];
x2=[ones(1,5),zeros(1,15)];
subplot(3,2,1);stem(n,x1);xlabel('n');ylabel('单位采样序列');
subplot(3,2,2);stem(n,x2);xlabel('n');ylabel('矩形序列');
a=[-0.5,1];
b=[1,-0.5];
y1=filter(a,b,x1);
y2=filter(a,b,x2);
subplot(3,2,3);stem(n,y1);xlabel('n');ylabel('单位采样响应h(n)');
subplot(3,2,4);stem(n,y2);xlabel('n');ylabel('矩形序列R5(n)响应');
y=conv(x2,y1);
fori=1:
20
y3(i)=y(i);
end
subplot(3,2,5);stem(n,y3);xlabel('n');ylabel('R5(n)*h(n)');
三.实验绘图:
实验二:
z变换和系统频域特性
一.实验目的:
%已知离散系统函数H(z)有一个零点在z=-2,两个极点在z=0.5e^(j*pi/3)及其共轭位置。
若其支流增益为1,求
(1)H(z)的系数,单位冲激响应,并画出系统零极点图和频率响应曲线。
(2)将零点移至镜像位置,重复
(1)并与之比较,看看有哪些区别.
二.实验代码:
b=poly([-2]);
a=poly([0.5*exp(j*pi/3)0.5*exp(-j*pi/3)]);
b=[0b];
b=b/4;%直流增益为1
subplot(2,2,1);zplane(b,a);xlabel('Realpart');ylabel('Imaginarypart');gridon;%根据系统函数返回零极点图
N=20;
x=[1zeros(1,N-1)];
n=0:
N-1;
subplot(2,2,2);stem(n,filter(b,a,x));xlabel('n');ylabel('h(n)');gridon;%根据系统函数返回单位冲激响应(离散的)
[H,w]=freqz(b,a,N);%根据系统函数返回0~2pi间等间隔的N个频率w相应的频率响应H
subplot(2,2,3);plot(w,abs(H));xlabel('w');ylabel('|H(exp(jw))|');gridon;
subplot(2,2,4);plot(w,angle(H));xlabel('w');ylabel('arg(H(exp(jw)))');gridon;
figure;
b=poly([-0.5]);
a=poly([0.5*exp(j*pi/3)0.5*exp(-j*pi/3)]);
b=[0b];
b=b/2;%直流增益为1
subplot(2,2,1);zplane(b,a);xlabel('Realpart');ylabel('Imaginarypart');gridon;%根据系统函数返回零极点图
N=20;
x=[1zeros(1,N-1)];
n=0:
N-1;
subplot(2,2,2);stem(n,filter(b,a,x));xlabel('n');ylabel('h(n)');gridon;%根据系统函数返回单位冲激响应(离散的)
[H,w]=freqz(b,a,N);%根据系统函数返回0~2pi间等间隔的N个频率w相应的频率响应H
subplot(2,2,3);plot(w,abs(H));xlabel('w');ylabel('|H(exp(jw))|');gridon;
subplot(2,2,4);plot(w,angle(H));xlabel('w');ylabel('arg(H(exp(jw)))');gridon;
三.实验绘图:
(1)figure
(2)figure
实验三:
DFT与FFT
一.实验目的:
%1.有一调幅信号xa(t)=[1+cos(2pi*100t)]cos(2pi*600t),用DFT做频谱分析,画出幅频特性。
%
(1)抽样频率fs=3kHz,抽样数据为512点;
%
(2)抽样频率fs=2kHz,抽样数据为512点;
%(3)抽样频率fs=1kHz,抽样数据为512点;
%(4)抽样频率fs=3kHz,抽样数据为60点。
%讨论fs与N满足什么条件才能使抽样信号能分辨所有的频率分量。
%2.已知序列x(n)=[1,2,2],y(n)=[1,2,3,4],求x(n)与y(n)的4点圆周卷积。
二.实验原理:
对于有限长离散数字信号{x[n]},0≦n≦N-1,其离散谱{x[k]}可以由离散付氏变换(DFT)求得。
DFT的定义为
,k=0,1,2,3……N-1
FFT算法将长序列的DFT分解为短序列的DFT。
N点的DFT先分解为两个N/2点的DFT,每个N/2点的DFT又分解为两个N/4点的DFT等等,最小变换的点数即基数,基数为2的FFT算法的最小变换是2点DFT。
一般而言,FFT算法分为时间抽选(DIT)FFT和频率抽选(DIF)FFT两大类。
时间抽取FFT算法的特点是每一级处理都是在时域里把输入序列依次按奇/偶一分为二分解成较短的序列;频率抽取FFT算法的特点是在频域里把序列依次按奇/偶一分为二分解成较短的序列来计算。
三.实验代码:
代码1:
N1=512;
n1=0:
N1-1;
fs1=3000;
x1=[1+cos(2*pi*100*n1/fs1)].*cos(2*pi*600*n1/fs1);
X1=fft(x1);
subplot(4,1,1);stem(n1,abs(X1));
N2=512;
n2=0:
N2-1;
fs2=2000;
x2=[1+cos(2*pi*100*n2/fs2)].*cos(2*pi*600*n2/fs2);
X2=fft(x2);
subplot(4,1,2);stem(n2,abs(X2));
N3=512;
n3=0:
N3-1;
fs3=1000;
x3=[1+cos(2*pi*100*n3/fs3)].*cos(2*pi*600*n3/fs3);
X3=fft(x3);
subplot(4,1,3);stem(n3,abs(X3));
N4=60;
n4=0:
N4-1;
fs4=3000;
x4=[1+cos(2*pi*100*n4/fs1)].*cos(2*pi*600*n4/fs1);
X4=fft(x4);
subplot(4,1,4);stem(n4,abs(X4));
代码2:
%方法一
x=[122];
y=[1,2,3,4];
N=4;
zl=conv(x,y);
z=zeros(1,N);
fori=1:
N
fork=i:
N:
length(zl)
z(i)=z(i)+zl(k);
end
end
z
%方法二
x=[122];
y=[1,2,3,4];
X=fft([x0]);
Y=fft(y);
z=ifft(X.*Y)
z=1512914
四.实验绘图:
实验五:
IIR滤波器的设计
一.实验目的:
%设计一IIR数字带通滤波器,给定指标为
(1)200Hz(2)f<100Hz,f>600Hz,衰减>20dB,(3)抽样频率fs=2kHz。
%
(1)用巴特沃斯滤波器,冲击响应不变法;
%
(2)用巴特沃斯滤波器,双线性变换法;
%(3)用切比雪夫滤波器,冲击响应不变法;
%(4)用切比雪夫滤波器,双线性变换法。
二.实验原理:
在MATLAB中,可以用下列函数辅助设计IIR数字滤波器:
1)利用buttord和cheb1ord可以确定低通原型巴特沃斯和切比雪夫滤波器的阶数和截止频率;2)[num,den]=butter(N,Wn)(巴特沃斯)和[num,den]=cheby1(N,Wn),[num,den]=cheby2(N,Wn)(切比雪夫1型和2型)可以进行滤波器的设计;3)lp2hp,lp2bp,lp2bs可以完成低通滤波器到高通、带通、带阻滤波器的转换;4)使用bilinear可以对模拟滤波器进行双线性变换,求得数字滤波器的传输函数系数;5)利用impinvar可以完成脉冲响应不变法的模拟滤波器到数字滤波器的转换。
三.实验代码:
fs=2000;
Wc=[2*pi*2002*pi*400];Wst=[2*pi*100,2*pi*600];
Rp=2;Rst=20;
wc=Wc/fs;wst=Wst/fs;
[N,Wn]=buttord(Wc,Wst,Rp,Rst,'s');
[B,A]=butter(N,Wn,'s');
[b,a]=impinvar(B,A,fs);
[h1,w1]=freqz(b,a,256);
[N,Wn]=buttord(wc/pi,wst/pi,Rp,Rst);
[B,A]=butter(N,Wn);
[h2,w2]=freqz(B,A,256);
[N,Wn]=cheb1ord(Wc,Wst,Rp,Rst,'s');
[B,A]=cheby1(N,Rp,Wn,'s');
[b,a]=impinvar(B,A,fs);
[h3,w3]=freqz(b,a,256);
[N,Wn]=cheb1ord(wc/pi,wst/pi,Rp,Rst);
[B,A]=cheby1(N,Rp,Wn);
[h4,w4]=freqz(B,A,256);
x=[wc/pi,wst/pi];
y=[-Rp,-Rp,-Rst,-Rst];
plot(w1/pi,20*log10(abs(h1)),'+',w2/pi,20*log10(abs(h2)),'-',w3/pi,20*log10(abs(h3)),'-.',w4/pi,20*log10(abs(h4)),'.',x,y,'*');
grid;xlabel('finpi');ylabel('gainindb');axis([0,1,-50,10]);
legend('巴特沃斯,冲击响应不变法','巴特沃斯,双线性变换法','切比雪夫,冲击响应不变法','切比雪夫,双线性变换法');
四.实验绘图:
实验四:
FIR滤波器的设计
一.实验目的:
%1.利用窗函数法设计一个线性相位低通FIR数字滤波器,wp=0.4pi,wst=0.6pi,阻带最小衰减-50dB。
%根据阻带最小衰减-50dB选择海明窗。
%2.利用频率抽样法,设计一个低通FIR数字滤波器,wc=0.5pi,抽样点数为N=33,要求滤波器具有线性相位。
%
(1)增加一点过渡带进行优化,过渡带抽样点值为0.5;
%
(2)增加抽样点数至N=65,加两点过渡带优化,过渡带抽样点值为0.5886,0.1065;
二.实验原理:
FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。
窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列。
FIR滤波器的设计问题在于寻求一系统函数
,使其频率响应
逼近滤波器要求的理想频率响应
,其对应的单位脉冲响应
。
三.实验代码:
代码1:
wp=0.4*pi;wst=0.6*pi;
wc=(wp+wst)/2;
N=ceil(6.6*pi/(wst-wp));
b=fir1(N-1,wc/pi,hamming(N));
[h,w]=freqz(b,1,500);
plot(w/pi,20*log10(abs(h)),'-');ylabel('20log(|H|)');xlabel('w/pi');grid;
axis([01-10010]);
代码2:
N=33;
absH=[ones(1,9),zeros(1,16),ones(1,8)];%理想低通滤波器的频率抽样点的幅度。
n=[];
fori=1:
N
n(i)=i-1;
end
angH=-2*pi/N*n*(N-1)/2;%理想低通滤波器的频率抽样点的相角。
H=absH.*exp(j*angH);%理想低通滤波器的频率抽样点。
b=ifft(H,N);%所设计滤波器的单位抽样响应。
[H1,w]=freqz(b,1,500);
%加一点过渡带优化|H(9)|=0.5
N=33;
absH=[ones(1,9),zeros(1,16),ones(1,8)];%理想低通滤波器的频率抽样点的幅度。
absH(10)=0.5;absH(25)=0.5;
n=[];
fori=1:
N
n(i)=i-1;
end
angH=-2*pi/N*n*(N-1)/2;%理想低通滤波器的频率抽样点的相角。
H=absH.*exp(j*angH);%理想低通滤波器的频率抽样点。
b=ifft(H,N);%所设计滤波器的单位抽样响应。
[H2,w]=freqz(b,1,500);
%增加抽样点数至N=65,加两点过渡带优化
N=65;
absH=[ones(1,17),zeros(1,32),ones(1,16)];%理想低通滤波器的频率抽样点的幅度。
absH(18)=0.5886;absH(19)=0.1065;absH(48)=0.1065;absH(49)=0.5886;
n=[];
fori=1:
N
n(i)=i-1;
end
angH=-2*pi/N*n*(N-1)/2;%理想低通滤波器的频率抽样点的相角。
H=absH.*exp(j*angH);%理想低通滤波器的频率抽样点。
b=ifft(H,N);%所设计滤波器的单位抽样响应。
[H3,w]=freqz(b,1,500);
plot(w/pi,20*log10(abs(H1)),'-',w/pi,20*log10(abs(H2)),'+',w/pi,20*log10(abs(H3)),'-.');ylabel('20log|H|');xlabel('w/pi');grid;
legend('N=33','N=33优化','N=65优化');
axis([01-10010]);
四.实验绘图:
图形1:
图形2: