数字信号处理实验5


1.题目一

1.已知系统的零-极点增益模型分别为:
在这里插入图片描述
求这些系统的零极点分布图以及系统的冲激响应,并判断系统的因果稳定性。(利用matlab作答)

由于题目给出的为零-极点增益模型,需要先转换成系统函数传递模型后,再使用zplane进行零极点分析,结果图如下:
在这里插入图片描述

由上面零极点图可判断:
①对于H1(z),其全部极点位于单位圆内,因此该系统因果稳定;
②对于H2(z),其冲激响应只在n≥0时不为0,为因果系统;其全部极点位于单位圆上,系统的冲激响应曲线为等幅振荡,不满足绝对可加,不稳定,因此不是因果稳定系统;
③对于H3(z),其冲激响应只在n≥0时不为0,为因果系统;其全部极点位于单位圆外,系统的冲激响应随着频率增大而发散,不满足绝对可和,不稳定,因此也不是因果稳定系统。

z1=[0.3]';p1=[-0.5+0.7*1j,-0.5-0.7*1j]';k1=1;%zpk模型参数
[b1,a1]=zp2tf(z1,p1,k1);            %转化成系统传递函数模型
subplot(3,2,1),zplane(b1,a1);
ylabel('极点在单位圆内');title('H_1(z)的零极点分布图');
subplot(3,2,2);
[y1,x1]=impz(b1,a1,20);stem(x1,y1,'.');
xlabel('n');ylabel('幅度');title('H_1(z)的冲激响应')

z2=[0.3]';p2=[-0.6+0.8*1j,-0.6-0.8*1j]';k2=1;%zpk模型参数
[b2,a2]=zp2tf(z2,p2,k2);            %转化成系统传递函数模型
subplot(3,2,3),zplane(b2,a2);
ylabel('极点在单位圆上');title('H_2(z)的零极点分布图');
subplot(3,2,4);
[y2,x2]=impz(b2,a2,20);stem(x2,y2,'.');
xlabel('n');ylabel('幅度');title('H_2(z)的冲激响应')

z3=[0.3]';p3=[-1+1j,-1-1j];k3=1;%zpk模型参数
[b3,a3]=zp2tf(z3,p3,k3);            %转化成系统传递函数模型
subplot(3,2,5),zplane(b3,a3);
ylabel('极点在单位圆外');title('H_3(z)的零极点分布图');
subplot(3,2,6);
[y3,x3]=impz(b3,a3,20);stem(x3,y3,'.');
xlabel('n');ylabel('幅度');title('H_3(z)的冲激响应')

2.题目二

2.已知离散时间系统的传递函数:
在这里插入图片描述
求该系统在0-π频率范围内的相对幅度频率响应与相位频率响应曲线。(利用python作答)

使用scipy.signal内的freqz函数即可计算频率响应,结果如下:
在这里插入图片描述
其中相对幅度频率响应的单位为dB,而不是V。

import matplotlib.pyplot as plt
import numpy as np
from scipy import signal

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

a = np.array([1,0.4,1])#分母
b = np.array([2,3,0])
w,h = signal.freqz(b,a)#计算频率响应
w=w/np.pi   

plt.subplot(2,1,1)
plt.plot(w,20*np.log10(abs(h)))#绘制相对幅度频率响应曲线
plt.title('相对幅度频率响应曲线')
plt.xlabel('以π为单位的频率')
plt.ylabel('幅度')
plt.grid(ls='--')#生成网格线

plt.subplot(2,1,2)
plt.plot(w,np.angle(h))#绘制相对幅度频率响应曲线
plt.title('相位频率响应曲线')
plt.xlabel('以π为单位的频率')
plt.ylabel('相位')
plt.grid(ls='--')#生成网格线
plt.tight_layout()
plt.show()

3.题目三

已知离散时间系统的零-极点增益模型为:
在这里插入图片描述
求该系统在0-π频率范围内的绝对幅度频率响应、相对幅度频率响应、相位频率响应曲线以及零极点分布图。(利用matlab作答)

题目给出的为零-极点增益模型,应先转换成系统传递函数模型后再使用freqz求解频率响应。绝对频率响应为幅度的绝对值,而相对频率响应为绝对频率响应转换成以dB为单位的形式,相位频率响应可用angle函数求解,零极点分布图可用zplane函数求解。得到的结果如下:
在这里插入图片描述

z=[0,-2]';p=[0.3,0.4,0.6]';k=1;%zpk模型参数
[b,a]=zp2tf(z,p,k);%转化成系统传递函数模型
n=(0:500)*pi/500;%在pi的范围内取501个采样点
[h,w]=freqz(b,a,n);%求系统的频率响应
subplot(2,2,1),plot(w/pi,abs(h));grid;
xlabel('以\pi为单位的频率');ylabel('幅度');
title('绝对幅度频率响应(V)');

dB=20*log10(abs(h));    %求系统的相对幅频响应曲线
subplot(2,2,2),plot(w/pi,dB);grid;
xlabel('以\pi为单位的频率');ylabel('幅度');
title('相对幅度频率响应(dB)');

subplot(2,2,3),plot(w/pi,angle(h));grid;%相位频率响应图
xlabel('以\pi为单位的频率');ylabel('相位');
title('相位频率响应曲线');

subplot(2,2,4),zplane(b,a);%零极点分布图
title('零极点分布');

4.题目四

4.已知一个信号序列的主值为x(n)=[0,1,2,3,2,1,0],显示2个周期的信号序列波形。要求:
① 用傅里叶级数变换求信号的幅度频谱和相位频谱,用图形表示。
② 求傅里叶级数逆变换的图形,并与原信号图形进行比较。(利用matlab作答)

傅里叶级数的累加求和可通过矩阵相乘实现,且由于周期序列为原主值序列的2倍,直接进行逆变换后,信号的幅度会扩大22倍,因此应将逆变换后的信号幅度除以22。结果如下:
在这里插入图片描述

x=[0,1,2,3,2,1,0];
xn=[x,x];%显示两个周期的信号序列
N=7;
n=0:2*N-1;
k=0:2*N-1;
Xk=xn*exp(-1j*2*pi/N).^(n'*k);%离散傅里叶级数变换
x_idfs=(Xk*exp(1j*2*pi/N).^(n'*k))/(2*2*N);%离散傅里叶级数逆变换

subplot(2,2,1),stem(k,abs(Xk),'.');
xlabel('k');ylabel('|X(k)|');
title('信号的幅度频谱|X(k)|');

subplot(2,2,2),stem(k,angle(Xk),'.');
xlabel('k');ylabel('|X(k)|');
title('信号的相位频谱arg|X(k)|');

subplot(2,2,3),stem(n,real(x_idfs),'.');
xlabel('n');ylabel('x(n)');
title('傅里叶级数逆变换x(n)');

subplot(2,2,4),stem(n,xn,'.');
xlabel('n');ylabel('x(n)');
title('原信号x(n)');

5.题目五

已知一个信号序列的主值为x(n)=R2(n),在这里插入图片描述。要求:
①显示x(n)和在这里插入图片描述的图形。
②用傅里叶级数变换求,并显示图像。(利用matlab作答)

对周期序列以4个周期进行绘图,得到的结果为:
在这里插入图片描述

N=4;%以4为周期周期延拓
xn=[1,1,0,0];
n=0:N-1;
k=0:N-1;
n1=0:4*N-1;%以延拓四个周期作图
k1=0:4*N-1;
x1=[xn,xn,xn,xn];
Xk=x1*exp(-1j*2*pi/N).^(n1'*k1);%离散傅里叶级数变换

subplot(2,2,1),stem(n,xn,'.');
title('信号序列主值x(n)');
xlabel('n'),ylabel('x(n)');

subplot(2,2,2),stem(n1,x1,'.');
title('信号以N=4的周期延拓序列x''(n)');
xlabel('n'),ylabel('x''(n)');

subplot(2,2,3),stem(k1,abs(Xk),'.');
title('幅度谱|X''(k)|');
xlabel('k'),ylabel('幅度');

subplot(2,2,4),stem(k1,angle(Xk),'.');
title('相位谱arg|X''(k)|');
xlabel('k'),ylabel('相位');

6.题目六

已知有限长序列x(n)=[7,6,5,4,3,2],求x(n)的DFT和IDFT。
要求:① 画出傅里叶变换对应的|X(k)|、arg[|X(k)|]的图形;
② 画出原信号与傅里叶逆变换IDFT[X(k)]进行比较。(利用matlab作答)

在这里插入图片描述
由上图可看出,经傅里叶逆变换求得的信号与原信号x(n)相同,结果正确。

xn=[7,6,5,4,3,2];%信号序列
N=length(xn);
n=0:N-1;k=0:N-1;
Xk=xn*exp(-1j*2*pi/N).^(n'*k);%离散傅里叶变换
x=(Xk*exp(1j*2*pi/N).^(n'*k))/N;%离散傅里叶逆变换

subplot(2,2,1);stem(k,abs(Xk),'.');
xlabel('k');ylabel('|X(k)|');
title('幅度谱|X(k)|');

subplot(2,2,2);stem(k,angle(Xk),'.');
xlabel('k');ylabel('arg[|X(k)|]');
title('相位谱arg[|X(k)|]');

subplot(2,2,3);stem(n,real(x),'.');
xlabel('n');ylabel('x(n)');
title('傅里叶逆变换IDFT[X(k)]');

subplot(2,2,4);stem(n,xn,'.');
xlabel('n');ylabel('x(n)');
title('原信号x(n)');

7.题目七

已知周期序列的主值x(n)=[7,6,5,4,3,2],求x(n)周期重复次数为3次时的DFS和IDFS,要求:① 画出原信号序列的主值和周期序列的图形;
② 画出序列傅里叶变换对应的在这里插入图片描述的图形。(利用matlab作答)

在这里插入图片描述

xn=[7,6,5,4,3,2];%周期序列的主值序列
N=length(xn);
n=0:N-1;
xn1=[xn,xn,xn];%x(n)周期重复三次
n1=0:3*N-1;
k1=0:3*N-1;
Xk=xn1*exp(-1j*2*pi/N).^(n1'*k1);
x=(Xk*exp(1j*2*pi/N).^(n1'*k1))/(3*3*N);

subplot(2,2,1),stem(n,xn,'.');
xlabel('n'),ylabel('x(n)');
title('原信号序列的主值序列x(n)');

subplot(2,2,2),stem(n1,xn1,'.');
xlabel('n'),ylabel('x''(n)');
title('周期序列x''(n)');

subplot(2,2,3),stem(k1,abs(Xk),'.');
xlabel('k'),ylabel('|X''(k)|');
title('幅度谱|X''(k)|');

subplot(2,2,4),stem(k1,angle(Xk),'.');
xlabel('k'),ylabel('arg|X''(k)|');
title('相位谱arg|X''(k)|');

猜你喜欢

转载自blog.csdn.net/weixin_45662974/article/details/118894813