用matlab绘制差分方程Z变换反变换zplaneresidueztf2zpzp2tftf2sossos2tf幅相频谱等等.docx
《用matlab绘制差分方程Z变换反变换zplaneresidueztf2zpzp2tftf2sossos2tf幅相频谱等等.docx》由会员分享,可在线阅读,更多相关《用matlab绘制差分方程Z变换反变换zplaneresidueztf2zpzp2tftf2sossos2tf幅相频谱等等.docx(20页珍藏版)》请在冰豆网上搜索。
用matlab绘制差分方程Z变换反变换zplaneresidueztf2zpzp2tftf2sossos2tf幅相频谱等等
《数字信号处理》
(一)实验目的
使用ztrans,iztrans函数分别求出离散时间信号的Z变换和Z反变换的结果,并用pretty函数进行结果美化。
编写函数时养成良好的注释习惯,有利于对函数的理解。
复习MATLAB的基本应用,如:
help,可以帮助查询相关的函数的使用方法,巩固理论知识中的离散时间信号的传递函数与二次项式之间的转换,以及使用zplane函数画出相关系统的零极点分布图,根据零极点的分布情况估计系统的滤波特性。
(二)程序的运行与截图
实验项目一Z变换
(1)求
Z变换
clearall;closeall;clc;
symsn
f=0.5^n+(1/3)^n;%定义离散信号
F=ztrans(f)%z变换
pretty(F);
运算结果
F
(2)
Z变换
clearall;closeall;clc;
symsn
f=n^4;%定义离散信号
F=ztrans(f)%Z变换
pretty(F)
运算结果
(3)
Z变换
clearall;closeall;clc;
symsabn
f=sin(a*n+b)%定义离散信号
F=ztrans(f)%Z变换
pretty(F)
运算结果
实验项目二Z反变换
(1)
Z反变换
clearall;closeall;clc;
symskz
Fz=2*z/(z-2)^2;%定义Z反变换表达式
fk=iztrans(Fz,k)%Z反变换
pretty(fk);
运算结果
(2)
Z反变换
clearall;closeall;clc;
symskz
Fz=z*(z-1)/(z^2+2*z+1);%定义Z反变换表达式
fk=iztrans(Fz,k)%Z反变换
pretty(fk);
运算结果
f
(3)
Z反变换
clearall;closeall;clc;
symskzw
Fz=(1+z^(-1))/(1-2*z^-1*cos(w)+z^-2);%定义Z反变换表达式
fk=iztrans(Fz,k)%Z反变换
pretty(fk);
运算结果
实验项目三各种模型之间的变换
=
(1)clearall;closeall;clc;
b=[00100];%分子的系数数组
a=[1-58-4];%分母的系数数组
zplane(b,a)%使用zplane函数绘制如下系统的零极点分布图
运算结果
(2)clearall;closeall;clc;
b=[00100];%分子的系数数组
a=[1-58-4];%分母的系数数组
[r,p,c]=residuez(b,a)%使用matlab中的residuez函数,将
分解成为多个简单有理分式之和
运算结果
r=
-15.0000
5.0000
10.0000
p=
2.0000
2.0000
1.0000
c=
0
(3)clearall;closeall;clc;
b=[00100];%分子的系数数组
a=[1-58-4];%分母的系数数组
[z,p,k]=tf2zp(b,a)%使用tf2zp求出系统函数的零、极点和增益
运算结果
z=
0
p=
2.0000
2.0000
1.0000
k=
10
(4)clearall;closeall;clc;
z=[1;-3];%零点,列向量
p=[2;-4];%极点,列向量
k=5;%增益
[b,a]=zp2tf(z,p,k)%根据求出的零、极点和增益,然后自学使用zp2tf还原出分子和分母的系数
运算结果
(5)clearall;closeall;clc;
b=[00100];%分子的系数数组
a=[1-58-4];%分母的系数数组
[sos,g]=tf2sos(b,a)%使用tf2sos将系统函数分解成一系列二阶子系统的级联形式
运算结果
sos=
01.000001.0000-2.00000
01.000001.0000-3.00002.0000
g=
10
(6)clearall;closeall;clc;
sos=[01.000001.0000-2.00000;
01.000001.0000-3.00002.0000];
g=10;%增益
[b,a]=sos2tf(sos,g)%根据求出的一系列二阶子系统,使用sos2tf还原出
分子和分母的系数
运算结果
b=
00100
a=
1-58-4
(7)clearall;closeall;clc;
b=[00100];%分子的系数数组
a=[1-58-4];%分母的系数数组
n=(0:
500)*pi/500;%在pi范围内取501个采样点
[h,w]=freqz(b,a,n);%求系统的频率响应
subplot(2,1,1),plot(n/pi,abs(h));grid%作系统的幅度频响图
axis([0,1,1.1*min(abs(h)),1.1*max(abs(h))]);
ylabel(‘幅度’);
subplot(2,1,2),plot(n/pi,angle(h));grid%作系统的相位频响图
axis([0,1,1.1*min(angle(h)),1.1*max(angle(h))]);
ylabel(‘相位’);xlabel(‘以pi为单位的频率’);
运行结果
(1)clearall;closeall;clc;
b=[0111];%分子的系数数组
a=[1222];%分母的系数数组
zplane(b,a)%使用zplane函数绘制如下系统的零极点分布图
运行结果
(2)clearall;closeall;clc;
b=[0111];%分子的系数数组
a=[1222];%分母的系数数组
[r,p,k]=residuez(b,a)%使用matlab中的residuez函数,将
分解成为多个简单有理分式之和
运行结果
r=
-0.4006
-0.0497-0.1609i
-0.0497+0.1609i
p=
-1.5437
-0.2282+1.1151i
-0.2282-1.1151i
k=
0.5000
(3)clearall;closeall;clc;
b=[0111];%分子的系数数组
a=[1222];%分母的系数数组
[z,p,k]=tf2zp(b,a)%使用tf2zp求出系统函数的零、极点和增益
运行结果
z=
-0.5000+0.8660i
-0.5000-0.8660i
p=
-1.5437
-0.2282+1.1151i
-0.2282-1.1151i
k=
1
(4)clearall;closeall;clc;
z=[-0.5000+0.8660i
-0.5000-0.8660i];
p=[-1.5437
-0.2282+1.1151i
-0.2282-1.1151i];
k=1;
[b,a]=zp2tf(z,p,k)%根据求出的零、极点和增益,使用zp2tf还原出
分子和分母的系数
运行结果
b=
01.00001.00001.0000
a=
1.00002.00012.00011.9999
(5)clearall;closeall;clc;
b=[0111];%分子的系数数组
a=[1222];%分母的系数数组
[sos,g]=tf2sos(b,a)%使用tf2sos将系统函数分解成一系列二阶子系统的级联形式
运行结果
sos=
01.000001.00001.54370
1.00001.00001.00001.00000.45631.2956
g=
1
(6)clearall;closeall;clc;
sos=[01.000001.00001.54370;
1.00001.00001.00001.00000.45631.2956];
g=1;
[b,a]=sos2tf(sos,g)%根据求出的一系列二阶子系统,自学使用sos2tf还原出
分子和分母的系数
运行结果
b=
0111
a=
1.00002.00002.00002.0000
(7)clearall;closeall;clc;
b=[0111];%分子的系数数组
a=[1222];%分母的系数数组
n=(0:
500)*pi/500;%在pi范围内取501个采样点
[h,w]=freqz(b,a,n);%求系统的频率响应
subplot(2,1,1),plot(n/pi,abs(h));grid%作系统的幅度频响图
axis([0,1,1.1*min(abs(h)),1.1*max(abs(h))]);
ylabel('幅度');
subplot(2,1,2),plot(n/pi,angle(h));grid%作系统的相位频响图
axis([0,1,1.1*min(angle(h)),1.1*max(angle(h))]);
ylabel('相位');xlabel('以pi为单位的频率');
运行结果
实验项目四根据零极点分布图估计系统的滤波特性。
(1)
clearall;closeall;clc;
b=[1111];%分子的系数数组
a=[4000];%分母的系数数组
subplot(3,1,1);
zplane(b,a);%画零极点图
num=[1111];
den=[4000];
[H,w]=freqz(num,den)%求出频率响应
subplot(3,1,3);
plot(w,abs(H))
xlabel('频率(Hz)');
ylabel('幅度');
title('幅频特性')%画出幅度频率响应
运算结果:
由零极点分布及幅频特性可知,本系统为带阻
(2)
clearall;closeall;clc;
b=[1-0.10];%分子的系数数组
a=[1-0.20.65];%分母的系数数组
subplot(3,1,1);
zplane(b,a);%画零极点图
num=[1-0.10];
den=[1-0.20.65];
[H,w]=freqz(num,den)%求出频率响应
subplot(3,1,3);
plot(w,abs(H))
xlabel('频率(Hz)');
ylabel('幅度');
title('幅频特性')%画出幅度频率响应
运算结果:
由零极点分布及幅频特性可知,本系统为带通
(3)
clearall;closeall;clc;
b=[1-0.1];%分子的系数数组
a=[1-0.2];%分母的系数数组
subplot(3,1,1);
zplane(b,a);%画零极点图
num=[1-0.1];
den=[1-0.2];
[H,w]=freqz(num,den)%求出频率响应
subplot(3,1,3);
plot(w,abs(H))
xlabel('频率(Hz)');
ylabel('幅度');
title('幅频特性')%画出幅度频率响应
运算结果:
由零极点分布及幅频特性可知,本系统为低通
(三)实验小结与讨论
本实验项目通过使用ztrans,iztrans函数分别求出离散时间信号的Z变换和Z反变换的结果,并用pretty函数进行结果美化。
复习MATLAB的基本应用,使用tf2zp,zp2tf对离散时间信号的传递函数,零极点增益之间进行转换,使用sos2tf,tf2sos函数进行传递函数与二次项式之间的转换,以及使用zplane函数画出相关系统的零极点分布图,根据零极点的分布情况估计系统的滤波特性。
虽然这些函数都是第一次接触,但是都能通过MATLAB中的help了解相关函数的使用方法,本实验项目需要注意的地方有:
(1)用syms把一些字符定义成基本的字符对象,如离散信号的变量n,和一些系数等等,不然运行不出来,这是我遇到的第一个问题,最后用syms定义之后顺利通过.
(2)在知道增益,零极点的情况下求系统分子分母的系数出现了问题
例子clearall;closeall;clc;
z=[1;-3];%零点,列向量
p=[2;-4];%极点,列向量
k=5;%增益
[b,a]=zp2tf(z,p,k)%根据求出的零、极点和增益,然后自学使用zp2tf还原出分子和分母的系数
我将z=[1,-3];%零点,p=[2,-4];%极点写成了行向量,结果出错,在将零极点都改为列向量z=[1;-3];%零点,p=[2;-4];%极点,或者
z=[1
-3];%零点,列向量
p=[2
-4];%极点,列向量
之后,实验顺利通过.
(3)我遇到的第三个问题是不会通过零极点的分布估计滤波特性,于是我将幅频特性画出
从图上的幅频特性可以很好的看出该系统的滤波特性,实验醒目顺利通过.
(4)个人心得
每次做实验,我都不是一下子就成功的,但是我都从失败的例子中汲取经验,从新再来,最终完成目标,失败不可怕,可怕的是不想面对它.