MATLAB毕业论文Word文档格式.doc
《MATLAB毕业论文Word文档格式.doc》由会员分享,可在线阅读,更多相关《MATLAB毕业论文Word文档格式.doc(13页珍藏版)》请在冰点文库上搜索。
![MATLAB毕业论文Word文档格式.doc](https://file1.bingdoc.com/fileroot1/2023-5/11/0ca3dc7d-1882-4f55-a8a1-679d29f077a1/0ca3dc7d-1882-4f55-a8a1-679d29f077a11.gif)
画出下列离散信号
x1={1,2,3,4,3,2,1}0x2=3nx4=(0.8)n
解:
MATLAB程序为:
n=[0:
6];
n1=[0:
30];
x1=[1234321];
x2=3*n;
x3=exp(j*(pi/8).*n1);
x4=0.8.^n1;
subplot(2,2,1),stem(n,x1);
ylabel('
x1'
);
subplot(2,2,2),stem(n,x2);
x2'
subplot(2,2,3),stem(n1,x3);
x3'
subplot(2,2,4),stem(n1,x4);
x4'
执行结果为
1.2连续时间信号x(t)的表达与画图:
当时间变量取值间隔足够小时,可以看作是连续变化,与其对应的函数值成为连续时间函数;
坐标变量t值的设置:
t=[0:
0.1:
10],设定起点、变化步长和终点;
x的值必须根据与t有关的运算得到(必须先定义t),t和x必须为长度相同的序列;
x1=[zeros(1,30)ones(1,40)zeros(1,31)],
x2=2-0.3*tx3=exp(j*(pi/8)*t)
采用函数plot(t,x)可以作出连续时间信号的图形(离散点之间采用直线连接构成连续图形);
例1.2连续时间信号的表达:
画出下列连续信号
t=[0:
10];
x1=[zeros(1,30)ones(1,40)zeros(1,31)];
x2=2-0.3*t;
x3=exp(j*(pi/8)*t);
x4=exp(-0.2*t).*cos(2*pi*t);
subplot(2,2,1),plot(t,x1);
axis([0,10,-0.2,1.2]);
subplot(2,2,2),plot(t,x2);
subplot(2,2,3),plot(t,x3);
subplot(2,2,4),plot(t,x4);
执行结果为:
2LTI系统的卷积运算
LTI系统可以采用系统冲激响应h表达;
对于已知系统(已知系统冲激响应h),当系统输入信号为x时,系统输出信号表现为h与x的卷积;
当h端点为(h1,h2),x端点为(x1,x2)时,y的端点为(h1+x1,h2+x2);
在MATLAB中,三者均由有限数字序列表示;
在MATLAB中,可以利用函数y=conv(h,x)求卷积,由已知系统h、输入x,求系统输出y。
2.1离散信号的卷积
已知系统冲激响应h,直接通过卷积求解:
y=conv(h,x);
要点:
h和x均应为有限长度;
y的长度为(h+x-1);
对y画图时,时间变量的长度和端点应正确设定。
例2.1利用下列程序,通过改变信号,演示卷积的重要性质;
n=[-10:
h=[zeros(1,10)11111zeros(1,6)];
x=[zeros(1,6)100000000zeros(1,6)];
n1=[-20:
20];
y=conv(h,x);
subplot(2,2,1),stem(n,x);
ylabel('
x'
subplot(2,2,2),stem(n,h);
h'
subplot(2,1,2),stem(n1,y);
y'
2.2连续时间卷积的数值近似
对于有限区间内的连续信号,应先通过离散化成为有限数字序列,再进行卷积,最后用plot画出输出波形。
y的长度为(h+x-1),对y画图时,时间变量的长度和端点应正确设定;
连续信号的卷积本来是由积分定义的,改为离散序列进行卷积,应该将结果乘以采样周期T,即:
y=conv(h,x)*T。
例2.2利用下列程序,通过改变信号,演示卷积的重要性质;
T=0.01;
t=[-2:
T:
u=(t>
=0);
u2=(t>
=2);
u5=(t>
=5)
h=u-u2;
x=u-u5;
%x=exp(-0.5*t).*u;
t1=[-4:
y=conv(h,x)*T;
subplot(2,2,1),plot(t,x);
axis([-2,10,-0.2,1.2]);
subplot(2,2,2),plot(t,h);
subplot(2,1,2),plot(t1,y);
axis([-2,20,-2,3]);
3信号的频谱分析
3.1离散时间付氏级数(DTFS)
定义
性质:
时间信号x和频谱信号a均为周期信号,周期均为N。
变换方法:
正变换函数a=(1/N)*fft(x)反变换函数x=N*ifft(a)。
x和a的周期都必须从相应0点开始选取一个周期;
利用同样的坐标向量,采用stem函数对x和a作图,可以画出一个周期内的时间信号和频谱信号。
例3.1已知和都是周期为8的周期信号,在从0开始的一个周期内,,,求与这些信号对应的频谱,并作出对应的图形。
N=8;
7];
x1=[00111100];
x2=[01234321];
a1=(1/N)*fft(x1);
a2=(1/N)*fft(x2);
subplot(3,2,1),stem(n,x1);
subplot(3,2,2),stem(n,x2);
subplot(3,2,3),stem(n,abs(a1));
a1模'
subplot(3,2,5),stem(n,angle(a1));
a1相位'
subplot(3,2,4),stem(n,abs(a2));
a2模'
subplot(3,2,6),stem(n,angle(a2));
a2相位'
a1=[0.5000-0.3018-0.1250i00.0518+0.1250i
00.0518-0.1250i0-0.3018+0.1250i]
a2=[2.0000-0.85360-0.14640-0.14640-0.8536]
3.2连续时间信号的付氏级数
定义
时间信号x为连续周期信号,频谱信号a为离散非周期信号。
将从0开始的一个周期内的连续时间信号离散化为N项序列,再采用函数a=(1/N)*fft(x)计算频谱的前N项。
要点:
x应从相应0点开始选取一个周期,离散步长选取足够小时,可以采用plot函数画出该周期内的连续函数波形图。
对于频谱信号a,应注意其坐标点数与x相同,但坐标值均应取整数(或的整数倍),可以利用axis函数从该序列中选取前若干项作图观察。
例3.2已知x1和x2分别为在[-1,1]区间内的矩形脉冲和三角脉冲,若将其扩展为周期信号,周期为4,求与这些信号对应的频谱,作出对应的图形。
MATLAB程序为
0.01:
3.99];
N=400;
u0=(t>
u1=(t>
=1);
u3=(t>
=3);
x1=u0-u1+u3;
x2=(1-t).*(u0-u1)+(t-3).*u3;
a1=fft(x1/N);
a2=fft(x2/N);
axis([0,4,-0.2,1.2]);
399];
subplot(2,2,3),stem(n,a1);
axis([0,10,-0.5,0.5]);
a1'
subplot(2,2,4),stem(n,a2);
axis([0,10,-0.3,0.3]);
a2'
3.3.连续时间信号的付氏变换
时间信号x和频谱信号a均为无限长连续信号
先将非周期连续时间信号的明显不为零区域截断为有限长度;
将此区域内的信号看作是一个周期,将x推广为周期信号;
选取从0开始的一个周期,利用步长d进行采样成为离散向量x;
再用d*fft(x)得出与连续频谱采样对应的离散频谱;
用plot函数和axis函数分别对有限时间范围内的连续信号和有限频率范围内的频谱信号作图;
注意频谱坐标与周期的关系;
作图时采用各自的坐标;
有效频谱范围与采样频率有关;
步长越小,采样点越多,则结果越准确;
例3.3已知,,求与这些连续时间信号对应的连续频谱,作出对应的图形。
9.99];
N=1000;
w=pi/5;
=9);
x2=exp(-1.*t);
X1=0.01.*fft(x1);
X2=0.01.*fft(x2);
axis([0,10,-0.2,1.2]);
999];
subplot(2,2,3),plot(n*w,X1);
axis([0,20,-1,2.5]);
X1'
subplot(2,2,4),plot(n*w,X2);
axis([0,10,-0.5,1]);
X2'
4系统函数与系统性质分析
4.1系统零点,极点和零极图
系统函数是复变量s或z的有理分式,当某变量值使系统函数为零时,该变量值称为系统零点;
当某变量值使系统函数为无限大时,该变量值称为系统极点;
当系统序列a和b为有限长度时,系统零点数量和极点数量有限,可以分别用零点序列和极点序列表达,此时系统函数可以表达为因子形式
上式中k值称为系统增益。
在复平面上,将零点和极点分别以和的形式标出,称为系统零极图。
利用MATLAB函数zplane(b,a)可以画出给定系统的零极图;
利用MATLAB函数[z,p,k]=tf2zp(b,a)可以以数值形式得到系统的零点序列,极点序列和增益。
例4.1对于系统函数,求系统的零点序列,极点序列和增益,并画出系统的零极图。
b=[0050];
a=[1-123];
zplane(b,a);
[z,p,k]=tf2zp(b,a)
z=0,p=[0.9219+1.6449i0.9219-1.6449i-0.8437]
k=5
4.2部分分式分解与系统单位冲激响应
利用系统函数求系统单位冲激响应时经常采用部分分式分解方法,利用系统极点将系统函数分解为一阶分式的和,每个一阶分式与一个冲激响应模式对应:
对于连续系统
对于离散系统
利用MATLAB函数[r,p]=residuez(b,a)可以由已知系统得到分解系数序列r,极点序列p,由此可以方便地写出单位冲激响应的闭合表达形式;
采用MATLAB函数dimpulse(b,a,N)和dstep(b,a,N)可以直接得到以N点序列表达的离散系统单位冲激响应和单位阶跃响应;
采用MATLAB函数impulse(b,a,t)和step(b,a,t)可以得到以给定序列t为变量表达的连续系统的单位冲激响应和单位阶跃响应;
例4.2对于系统函数,求出系统单位冲激响应的系数序列r和极点序列p,并画出系统单位冲激响应和单位阶跃响应的40点序列。
b=[0036];
a=[2-0.8-1.11.7];
N=40;
N-1];
subplot(2,1,1),stem(n,dimpulse(b,a,N)),title('
impulse'
subplot(2,1,2),stem(n,dstep(b,a,N)),title('
step'
[r,p]=residuez(b,a)
r=-0.4615-1.5339-1.4050i-1.5339+1.4050i
p=-1.00000.7000+0.6000i0.7000-0.6000i
4.3系统对输入信号的响应
利用MATLAB函数y=dlsim(b,a,x)和y=filter(b,a,x),可以对已知离散系统和输入序列x,给出输出序列y;
输出序列的坐标和长度与x相同;
利用MATLAB函数y=lsim(b,a,x,t),可以对已知连续系统和输入序列x,得到以给定序列t为变量表达的输出序列y;
输出序列的坐标和长度与x相同。
例4.3对于系统,当输入信号为时,画出从0开始的40点的输入和输出序列。
b=[0.30.3];
a=[1-0.9];
n0=0:
4;
x0=[11111];
x1=x0.*2.^n0;
x2=[x1zeros(1,35)];
y=dlsim(b,a,x2);
n=0:
39;
subplot(2,1,1),stem(n,x2);
title('
subplot(2,1,2),stem(n,y);
5结束语
基于MATLAB的信号与系统分析很好的利用计算机解决了大量计算的问题,利用MATLAB,我们只需要将所要分析的信号用MATLAB语言输入计算机,计算机就回自动生成我们需要的信号频谱图,我们就能很直观的看出信号的变化规律与变化趋势,为我们设计系统带来了极大的方便,同时也极大的提高了工作效率。
参考文献
[1]苏金明.MATLAB程序设计[M].北京:
电子工业出版社,2004.
[2]郑君里.信号与系统.北京:
高等教育出版社,2005.
[3]张智星.MATLAB程序设计与应用.北京:
清华大学出版社,2002.
[4]胡广书.数字信号处理.北京:
清华大学出版社,1997.
12