数字信号处理实验MATLAB上机DOC.docx
《数字信号处理实验MATLAB上机DOC.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验MATLAB上机DOC.docx(21页珍藏版)》请在冰点文库上搜索。
![数字信号处理实验MATLAB上机DOC.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/0d24fc33-025f-42b2-a32e-b14926f768f8/0d24fc33-025f-42b2-a32e-b14926f768f81.gif)
数字信号处理实验MATLAB上机DOC
班级:
学号:
姓名:
日期:
实验一:
离散时间信号的分析
1、实验目的
利用DFT卷积实现系统的时域分析
2、实验原理
在离散时间、连续频率的傅里叶变换中,由于卷积性质知道,对系统输出的计算可以通过求x[n]和h[n]的DTFT,将得到的X(ejw)和H(ejw)相乘就可以得到Y(ejw),进而再通过反变换得到y[n]。
这就避免了在时域进行繁琐的卷积求解。
3、实验步骤(包括代码和波形)
1-2
(2)x[k]=g[k]=k+1,0<=k<=3;x[k]=g[k]=0,其他
编码如下:
ak=1:
4
gk=1:
4
Z=conv(ak,gk)
stem(Z)
波形如下:
1-3
(1)已知序列x[k]={1,2,3,4;k=0,1,2,3},y[k]={-1,1,2,3;k=0,1,2,3},试计算x[k]的自相关函数以及序列x[k]与y[k]的互相关函数。
编码如下:
x=[1,2,3,4];kx=0:
3;
y=[-1,1,-2,3];ky=0:
3;
xf=fliplr(x);
s1=conv(x,xf);
s2=conv(xf,y);
yf=fliplr(y);
s3=conv(yf,x);
k1=kx
(1)+ky
(1):
kx(end)+ky(end);
kxf=-fliplr(kx);
k2=kxf
(1)+ky
(1):
kxf(end)+ky(end);
kyf=-fliplr(ky);
k3=kyf
(1)+kx
(1):
kyf(end)+kx(end);
subplot(2,2,1);
stem(k1,s1);
xlabel('k1');ylabel('s1');
subplot(2,2,2);
stem(k2,s2);
xlabel('k2');ylabel('s2');
subplot(2,2,3)
stem(k3,s3);
xlabel('k3');ylabel('s3');
波形如下:
M-1已知g1[t]=cos(6*pi*t),g2=cos(14*pi*t),g3=cos(26*pi*t),以抽样频率f(max)=10HZ对上述三个信号进行抽样。
在同一张图上画出g1(t)和以及抽样点。
编码如下:
fs=input('采样频率fs=');
t=0:
0.01:
2;
g1=cos(6*pi*t);
g2=cos(14*pi*t);
g3=cos(26*pi*t);
T=1/fs
k=0:
T:
2;
g11=cos(6*pi*k);
g22=cos(14*pi*k);
g33=cos(26*pi*k);
subplot(3,2,1);
plot(t,g1,'r-');
title('g1')
subplot(3,2,2);
stem(k,g11,'b-');
title('g11')
subplot(3,2,3);
plot(t,g2,'r-');
title('g2')
subplot(3,2,4);
stem(k,g22,'b-');
title('g22')
subplot(3,2,5);
plot(t,g3,'r-');
title('g3')
subplot(3,2,6);
stem(k,g33,'b-');
title('g33');
波形如下:
实验二因果离散线性系统的时域分析
1.实验目的
(1)掌握求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)分析、观察及检验系统的稳定性
2.实验原理与方法
离散LTI系统可由线性常系数差分方程描述
离散系统差分方程求解的filter函数
调用格式
(1)y=filter(b,a,x)
说明:
b,a是式
的系数组成的向量b=[b0,b1,b2,…bM-1]及a=[a0,a1a2,…aN-1],x是输入向量数组,y是输出向量数组和x的长度相同,而且系数a0要保证不为零。
调用格式
(2)y=filter(b,a,x,xic)
说明:
xic是初始条件等效的输入序列,MATLAB提供了函数filtic()来确定xic
xic调用格式xic=filtic(b,a,x,y)
说明:
b,a是差分方程的系数数组,y,x是初始条件数组,分别由y(n),x(n)的初始条件确定,即y=[y(-1),y(-2),….]及x=[x(-1),x(-2),…]
MATLAB提供了函数impz()求离散系统的单位抽样响应,并绘制时域波形。
★IMPZ
功能:
函数将绘出由矢量a和b表示的数字滤波器在指定取样时刻范围内的抽样响应h(n)的时域波形,并求其数值解。
调用格式:
H=IMPZ(B,A)%计算离散系统冲激响应,取样点数n由函数自动选取
或H=IMPZ(B,A,N)%计算指定时刻范围内(0:
N-1)的离散系统抽样响应
三、实验内容
M1-2:
利用MATLAB的filter函数,求出下列系统的单位脉冲响应,并判断系统是否稳定,讨论本题所获得的结果。
H1(z)=1/(1-1.845z^-1+0.850586z^-2)
H2(z)=1/(1-1.85z^-1+085z^-2)。
代码:
k=1:
300;
x=zeros(1,300);
x
(1)=1;
b1=[1];
a1=[1,-1.845,0.850586];
y1=filter(b1,a1,x);
subplot(1,2,1);
plot(k,y1);
b2=[1];
a2=[1,-1.85,0.85];
y2=filter(b2,a2,x);
subplot(1,2,2);
plot(k,y2);
实验三离散系统的频域分析
1.实验目的
(1)掌握求离散信号频谱的方法。
(2)掌握求频域离散系统的频率响应特性。
2.实验原理与方法
1)计算有限长序列、单边指数序列的DTFT,方法一利用MATLAB实现DTFT的矩阵运算
2)利用MATLAB提供的freqz函数计算离散信号的频谱或离散系统频率响应的抽样值
三、实验内容
M1-3:
(1)利用MATLAB语句
X=firls(511,[00.40.4041],[1100])
产生一个512点序列x[k],并画出该序列的频谱。
(2)已知序列y[k]=x[k]cos(wk),分别画出w=0.4π,0.8π,0.9π,π时,序列y[k]的幅度频谱。
解释所得结果。
代码:
(1)k=1:
64;
x=firls(63,[00.40.4041],[1100]);
stem(k,x);
k=1:
512;
x=firls(511,[00.40.4041],[1100]);
X_512=fft(x,512);
plot(k/512,abs(X_512));
xlabel('w');ylabel('X[m]');
(2)代码:
k=1:
512;
x=firls(511,[00.40.4041],[1100]);
w1=0.4*pi;w2=0.8*pi;w3=0.9*pi;w4=pi;
z1=cos(w1*k);
z2=cos(w2*k);
z3=cos(w3*k);
z4=cos(w4*k);
y1=x.*z1;
y2=x.*z2;
y3=x.*z3;
y4=x.*z4;
Y1_512=fft(y1,512);
Y2_512=fft(y2,512);
Y3_512=fft(y3,512);
Y4_512=fft(y4,512);
subplot(4,1,1);
plot(k/512,abs(Y1_512));
xlabel('w');ylabel('Y1[m]');
subplot(4,1,2);
plot(k/512,abs(Y2_512));
xlabel('w');ylabel('Y2[m]');
subplot(4,1,3);
plot(k/512,abs(Y3_512));
xlabel('w');ylabel('Y3[m]');
subplot(4,1,4);
plot(k/512,abs(Y4_512));
xlabel('w');ylabel('Y4[m]');
2)产生53页M1-5
(1)
(2)离散系统的幅度频谱和相位频谱,并指出滤波器的类型
A.产生512点离散频率向量W;
B.利用freqz函数产生频谱
C.plot画幅度频谱和相位频谱
(1)
b1=0.0534;b2=[1,1];b3=[1,-1.016,1];
a1=[1,-0.683];a2=[1,-1.446,0.7957];
bb=conv(b1,b2);
b=conv(bb,b3);
a=conv(a1,a2);
w=linspace(0,2*pi,512);
X1=freqz(b,a,w);
magX=abs(X1);angX=angle(X1);
subplot(2,1,1);plot(w/pi,magX);grid
xlabel('frequencyinpiunits');title('MagnitudePart');ylabel('Magnitude')
subplot(2,1,2);plot(w/pi,angX);grid
xlabel('frequencyinpiunits');title('AnglePart');ylabel('Radiane')
(2)
b=[1,-1];
a1=[1,-1.499,0.8482];a2=[1,-1.5548,0.6493];
a=conv(a1,a2);
w=linspace(0,2*pi,512);
X1=freqz(b,a,w);
magX=abs(X1);angX=angle(X1);
subplot(2,1,1);plot(w/pi,magX);grid
xlabel('frequencyinpiunits');title('MagnitudePart');ylabel('Magnitude')
subplot(2,1,2);plot(w/pi,angX);grid
xlabel('frequencyinpiunits');title('AnglePart');ylabel('Radiane')
实验四信号与系统的Z域分析
1.实验目的
(1)实现信号的Z变换
(2)了解Z变换的应用:
信号、系统的z域表示
部分分式法的应用
二、实验原理
函数RESIDUEZ
功能:
部分分式的展开成如下的形式:
调用格式:
[R,P,K]=RESIDUEZ(B,A)
%说明:
由矢量a和b构成的数字滤波器的差分方程为
其中:
B=[b0,b1,…,bM,bM-1],A=[a0,a1,…,aN,aN-1],要求A的首项不为0
%R-以列矢量形式出现的对应极点的留数R=[r
(1)r
(2)r(3)r(4)]
P-以列矢量形式出现的极点矢量P=[P
(1)P
(2)P(3)P(4)]
K-以行矢量出现的直接项多项式K=[k
(1)k
(2)]
3.实验内容及步骤
1)residuez函数计算Z多项式M1-2中的H1(Z)和H2(z)部分分式展开式,Z反变换,并化简复数项。
用zplane函数画零极点图,判断系统的稳定性
2)利用tf2zp函数写出M1-6中H(Z)的零极点形式
找出单位圆外的零点,化成最小相位系统;
找出单位圆内的零点,化成最大相位系统;
利用freqz函数画出H(Z),及其最小、最大相位系统的相位响应图
M1-21)residuez函数计算Z多项式M1-2中的H1(Z)和H2(z)部分分式展开式,Z反变换,并化简复数项。
用zplane函数画零极点图,判断系统的稳定性
b=[1];
a=[0.85-1.851];
plot(b,a,'o');
[rpc]=residuez(a,b);
zplane(b,a);
b=[1];
a=[0.850586-1.8451];
plot(b,a,'x');
[rpc]=residuez(a,b);
zplane(b,a);
M1-6:
已知一因果系统的H(z)为
H(z)=(z^2+2*z+0.99)/(z^2+1.55*z+0.6)
试求出H(z)具有相同幅度响应的最小相位系统Hmin(z)和最大相位系统Hmax(z)。
画出并比较H(z),Hmin(z),Hmax(z)。
b1=[1210];
a1=[1-0.5-0.0050.3];
[H1w]=freqz(b1,a1,256,1);%×îСÏàλϵͳ
[H2w]=freqz(b1,a1,256,1);%×î´óÏàλϵͳ
fupin1=abs(H1);
fupin2=abs(H2);
subplot(2,3,1)
plot(w,fupin1.*fupin1,'b.',w,fupin2.*fupin2,'b.');
gridon;
subplot(2,3,2)
plot(w,unwrap(angle(H1)),w,unwrap(angle(H2)));
gridon;
subplot(2,3,3)
b1=[1210];
a1=[1-0.5-0.0050.3];
zplane(b,a);
实验五DFT变换的性质及应用
1.实验目的
1)实现信号的DFT变换
2)了解DFT应用:
用DFT计算卷积
用DFT对序列进行谱分析
2.实验原理与方法
FFT对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是,因此要求。
可以根据此式选择FFT的变换区间N。
误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
3.实验内容及步骤
M2-4已知
(1)做64点FFT,画出频谱
(2)若不能分辨频谱可否补零并验证
实验内容2
M2-5连续信号
用DFT分析其频谱,若频率分辨率为1HZ,试确定其采样频率,抽样点数及持续时间
M2-4:
M2-4已知一离散序列为
。
其中
(1)对x[k]做64点FFT,画出此时信号的谱。
(2)如果
(1)中显示的谱不能分辨两个谱峰,是否对
(1)中的64点信号补0而分辨出两个谱峰。
通过编程进行证实,并解释其原因。
代码
(1)k=0:
63;
x=cos(2*k*pi/15)+0.75*cos(2.3*k*pi/15);
X_64=fft(x);
plot(k/64,abs(X_64));
holdon;
grid;
xlabel('正规化频率');
ylabel('量级');
(2)代码:
k=0:
63;
x=cos(2*k*pi/15)+0.75*cos(2.3*k*pi/15);
X_64=fft(x);
X_512=fft(x,512);
L=0:
511;
plot(L/512,abs(X_512));holdon;
plot(k/64,abs(X_64),'o');
xlabel('正规化频率');
ylabel('量级');
抽样频率为300,抽样点数为512
N=300;
L=512;
f1=1;
fs=300;
T=1/fs;
ws=2*pi*fs;
t=(0:
N-1)*T;
x1=(t>=0);
x=exp(-3.*t).*x1;
X=fftshift(fft(x,L));
w=(-ws/2+(0:
L-1)*ws/L)/(2*pi);
plot(w,abs(X));ylabel('幅度谱')