MATLAB毕业论文.doc
《MATLAB毕业论文.doc》由会员分享,可在线阅读,更多相关《MATLAB毕业论文.doc(13页珍藏版)》请在冰豆网上搜索。
基于MATLAB的信号与系统分析实例
摘要
随着信息技术的飞速发展,在人们的日常生产实践中,对信号的检测分析处理就显得犹为重要,而在对信号的分析工程当中,复杂的数学运算给人们分析处理信号带来了一定的困难,MATLAB的诞生,为信号与系统的分析带来了极大的方便,利用MATLAB软件,人们可以对检测到的信号做出实时准确的分析,极大的提高了工作效率。
MATLAB的名称源自MatrixLaboratory,它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。
目前MATLAB产品族可以用来进行:
数值分析数值和符号计算工程与科学绘图数字图像处理数字信号处理通讯系统设计与仿真财务与金融工程。
本文是基于MATLAB的对信号与系统的分析,主要介绍了用MATLAB对信号进行表达,对信号进行卷积运算,对信号的频谱进行分析,对系统函数与系统性质分析。
关键词:
MATLAB频谱卷积
1信号的表达
信号可以表达为时间的函数,根据定义的不同,信号可以分为连续时间信号和离散时间信号,分别表示为x(t)和x[n];对于确定信号,时间变量值与对应的函数值形成一一对应关系。
要将信号保存到计算机系统中,信号必须表现为有限长度的离散数字序列;在MATLAB中,信号与对应的时间变量采用两个一维向量(序列)表示,两序列长度必须相等。
1.1离散时间信号x(n)的表达:
离散时间变量n只能取整数值,与其对应的函数值形成离散时间信号;x和n为长度相同的序列,序列元素的编号从1开始;坐标序列n值的设置:
n=[-3:
3]设定起点和终点;x的值可以直接设置,也可以根据与n有关的运算得到(必须先定义n):
x=[1234321]x=3*nx=exp(j*(pi/8)*n),采用函数stem(n,x)可以作出离散信号的图形。
例1.1离散时间信号的表达:
画出下列离散信号
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);ylabel('x2');
subplot(2,2,3),stem(n1,x3);ylabel('x3');subplot(2,2,4),stem(n1,x4);ylabel('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连续时间信号的表达:
画出下列连续信号
解:
MATLAB程序为:
t=[0:
0.1:
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);ylabel('x1');axis([0,10,-0.2,1.2]);
subplot(2,2,2),plot(t,x2);ylabel('x2');
subplot(2,2,3),plot(t,x3);ylabel('x3');
subplot(2,2,4),plot(t,x4);ylabel('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利用下列程序,通过改变信号,演示卷积的重要性质;
解:
MATLAB程序为:
n=[-10:
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);ylabel('h');
subplot(2,1,2),stem(n1,y);ylabel('y');
执行结果为
2.2连续时间卷积的数值近似
对于有限区间内的连续信号,应先通过离散化成为有限数字序列,再进行卷积,最后用plot画出输出波形。
要点:
h和x均应为有限长度;y的长度为(h+x-1),对y画图时,时间变量的长度和端点应正确设定;连续信号的卷积本来是由积分定义的,改为离散序列进行卷积,应该将结果乘以采样周期T,即:
y=conv(h,x)*T。
例2.2利用下列程序,通过改变信号,演示卷积的重要性质;
解:
MATLAB程序为:
T=0.01;t=[-2:
T:
10];
u=(t>=0);u2=(t>=2);u5=(t>=5)
h=u-u2;x=u-u5;
%x=exp(-0.5*t).*u;
t1=[-4:
T:
20];y=conv(h,x)*T;
subplot(2,2,1),plot(t,x);axis([-2,10,-0.2,1.2]);ylabel('x');
subplot(2,2,2),plot(t,h);axis([-2,10,-0.2,1.2]);ylabel('h');
subplot(2,1,2),plot(t1,y);axis([-2,20,-2,3]);ylabel('y');
执行结果为
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开始的一个周期内,,,求与这些信号对应的频谱,并作出对应的图形。
解:
MATLAB程序为:
N=8;n=[0:
7];
x1=[00111100];x2=[01234321];
a1=(1/N)*fft(x1);a2=(1/N)*fft(x2);
subplot(3,2,1),stem(n,x1);ylabel('x1');
subplot(3,2,2),stem(n,x2);ylabel('x2');
subplot(3,2,3),stem(n,abs(a1));ylabel('a1模');
subplot(3,2,5),stem(n,angle(a1));ylabel('a1相位');
subplot(3,2,4),stem(n,abs(a2));ylabel('a2模');
subplot(3,2,6),stem(n,angle(a2));ylabel('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程序为
t=[0:
0.01:
3.99];N=400;
u0=(t>=0);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);
subplot(2,2,1),plot(t,x1);axis([0,4,-0.2,1.2]);ylabel('x1');
subplot(2,2,2),plot(t,x2);axis([0,4,-0.2,1.2]);ylabel('x2');
n=[0:
399];
subplot(2,2,3),stem(n,a1);axis([0,10,-0.5,0.5]);ylabel('a1');
subplot(2,2,4),stem(n,a2);axis([0,10,-0.3,0.3]);ylabel('a2');
执行结果为
3.3.连续时间信号的付氏变换
定义
性质:
时间信号x和频谱信号a均为无限长连续信号
变换方法:
先将非周期连续时间信号的明显不为零区域截断为有限长度;将此区域内的信号看作是一个周期,将x推广为周期信号;选取从0开始的一个周期,利用步长d进行采样成为离散向量x;再用d*fft(x)得出与连续频谱采样对应的离散频谱;用plot函数和axis函数分别对有限时间范围内的连续信号和有限频率范围内的频谱信号作图;
要点:
注意频谱坐标与周期的关系;作图时采用各自的坐标;有效频谱范围与采样频率有关;步长越小,采样点越多,则结果越准确;
例3.3已知,,求与这些连续时间信号对应的连续频谱,作出对应的图形。
解:
MATLAB程序为
t=[0:
0.01:
9.99];N=1000;w=pi/5;
u0=(t