1、MATLAB,系部:电子工程系,-数字信号处理,绪论,MATLAB Matrix Laboratory 矩阵实验室的意思,设计者的初衷是为解决“线性代数”课程的矩阵运算问题,MATLAB已经不仅仅是一个“矩阵实验室”了,它集科学计算、图象处理;声音处理于一身,并提供了丰富的Windows 图形界面设计方法,70年代中期,美国新墨西哥大学教授克里夫莫勒尔(Cleve Moler)博士和其同事在美国国家科学基金的资助下开发了LINPACK 和EISPACK的FORTRAN语言子程序库,这两个程序库代表了当时矩阵运算软件的发展水平;70年代末到80年代初,Cleve Moler为了让学生更方便地使用
2、LINPACK及EISPACK,独立编写了第一个版本的MATLAB;1984年,杰克李特(Jack Little)、克里夫莫勒尔和斯蒂夫班格尔特(Steve Bangert)合作成立了MathWorks公司,正式把MATLAB推向市场;1993年,Microsoft Windows版MATLAB面世;1995年,推出Linux版 MATLAB。,Cleve Moler,Jack Little,绪论,数值运算和符号运算功能 2D和3D图形显示功能数据可视化 交互式高级编程语言M语言编程功能 工具箱函数功能 编译功能 Simulink仿真功能,Matlab的主要功能,MATLAB软件功能之强大,应
3、用之广泛,已成为21世纪最为重要的科学计算与分析软件。,绪论,启动MATLAB软件有2种常见方法: (1)双击在桌面创建的MATLAB快捷方式图标,可进入桌面工作环境;,绪论,(2)单击Windows窗口上【开始】菜单下的【程序】选项,找到MATLAB 7.0程序项,选择MATLAB 7.0,单击即可进入桌面工作环境,绪论,打开Matlab7.0,你会看到这样的初始界面: ,绪论,菜单栏,工具栏,命令窗口,命令历史记录窗口,当前目录窗口,命令提示符,Start菜单,1)在命令窗口直接输入数据,Matlab运行方式,绪论,注意“ ;”表示不显示定义的数据,2)M文件运行方式(常用),a 点击新建
4、图标,就可以调出M文件编辑器,用户可以用此编辑器编写M文件。,b 在matlab命令窗口点击file 菜单new m-file,离散信号Matlab实现,1、单位采样序列,1、单位采样序列,离散信号Matlab实现,clc; %清除当前command区域的命令,表示清空,用来 清理空间,以保证后面程序运行有足够的运算空间。,n=-5:10; %时间从-5到10,时间间隔默认为1,取16个点的值,x=zeros(1,5),1,zeros(1,10); 注释:zeros(m,n)函数产生mn的零矩阵,离散信号Matlab实现,1、单位采样序列,stem(n,x,r,*) % Stem(m,n)为离
5、散序列图或杆图,其后不加分号 “;”,如果加 了分号,运行后将不会显示图或结果。为了加强图形效果,还可以加入颜色及线端符号,颜色 线端符号y 黄色 . 圆点线 v 向下箭头 g 绿色 + 加号形 向右箭头 b 蓝色 s 方形 向左箭头 m 红紫色 o 空心圆形 p 五角星形 c 蓝紫色 * 星号 h 六角星形 w 白色 . 实心小点 r 红色 x 叉号形状 k 黑色,离散信号Matlab实现,1、单位采样序列,axis-5,10,-0.2,1.2; %表明图线的x轴范围为-510;y轴范围为-0.21.2,title(单位采样序列) % title函数用来标注所画图形等的题目,在图中要显示名称
6、,因此后无需加分号,xlabel(时间n) ,ylabel(幅度) %表明图的横坐标及纵坐标名称;在图中要显示名称,因此后无需加分号,grid on % 显示的图中有网格线,即grid on是打开网格 grid off是关闭网格,注:matlab里面在语句后面不加“;”表示该语句执行后的结果将显示出来,如果加上“;”,则表示只执行该语句,不显示结果。,离散信号Matlab实现,2、阶跃序列,clc; n=-5:10; x=zeros(1,5),ones(1,11); stem(n,x,m,p) axis(-5,10,-0.2,1.2); title(阶跃序列) xlabel(时间n),ylab
7、el(幅度) grid on注: ones (m,n)函数产生mn阶的单位矩阵,离散信号Matlab实现,2、阶跃序列,离散信号Matlab实现,3、矩形序列,clc; n=-5:15; x=zeros(1,5),ones(1,11),zeros(1,5); stem(n,x,r,h) axis(-5,15,-0.2,1.2); title(矩形序列) xlabel(时间),ylabel(幅度) grid on,离散信号Matlab实现,3、矩形序列,离散信号Matlab实现,4、正弦序列,clc; n=-5:0.5:10; xn=sin(0.5*pi*n); stem(n,xn,g) axi
8、s(-5,10,-1.2,1.2) xlabel(时间),ylabel(幅度) title(正弦序列) grid on,4、正弦序列,离散信号Matlab实现,离散信号Matlab实现,5、卷积,clc; n1=3; n2=3; n3=n1+n2-1; xn=1,1,1; hn=0,1,2,3; yn=conv(xn,hn); nxn=0:n1-1; nhn=0:n2; nyn=0:n3;,离散信号Matlab实现,subplot(133); stem(nyn,yn,b,*) xlabel(时间),ylabel(幅度) title(y(n) grid on;,subplot(132); ste
9、m(nhn,hn,g,.) xlabel(时间),ylabel(幅度) title(h(n) grid on;,subplot(131); stem(nxn,xn,r,*) xlabel(时间),ylabel(幅度) title(x(n) grid on;,5、卷积(例1),离散信号Matlab实现,subplot(m,n,k)该指令将图形窗口分成m行、n列的m*n块子区域,按照行从上向下,列从左向右的顺序,在第k块区域定义一个坐标系,使其成为当前坐标系,随后的绘图函数将在该坐标系输出图形。另外,在同一个图形窗口的坐标系可以重叠,这样可以产生前面的坐标系遮住后面坐标系的各种图形效果。,离散信号
10、Matlab实现,5、卷积(例2),5、卷积(例3),离散信号Matlab实现,已知序列:,,,求卷积(只需显示卷积结果的序列图)。,5、卷积(例3),离散信号Matlab实现,n1=-2:2; xn=0.5.*n1; n2=0:3; hn=2.n2; % 点乘 k0=n1(1)+n2(1); %计算序列yn非零样值的起点位置 k1=length(n1)+length(n2)-2; );%计算序列yn非零样值的宽度 nyn=k0:k0+k1; );%确定序列yn非零样值的序号向量 yn=conv(xn,hn) stem(nyn,yn,b,*) xlabel(时间n),ylabel(幅度) ti
11、tle(y(n) grid on;,5、卷积(例3),离散信号Matlab实现,6、差分方程,离散信号Matlab实现,用MATLAB计算差分方程 y(n)+0.7y(n-1)-0.45y(n-2)-0.6y(n-3)=0.8x(n)-0.44x(n-1)+0.36x(n-2)+0.02x(n-3),当输入序列x(n)为单位冲击响应时的输出结果y(n), 0n40,6、差分方程,离散信号Matlab实现,clc; M=41; a=0.8 -0.44 0.36 0.02; b=1 0.7 -0.45 -0.6; xn=1,zeros(1,M-1); n=0:1:M-1; yn=filter(a,b,xn); stem(n,yn,r,*) xlabel(时间n),ylabel(幅度); title(yn) grid on;,6、差分方程,用MATLAB计算差分方程 y(n)+0.7y(n-1)-0.45y(n-2)-0.6y(n-3)=0.8x(n)-0.44x(n-1)+0.36x(n-2)+0.02x(n-3),当输入序列x(n)为单位冲击响应时的输出结果y(n), 0n40,离散信号Matlab实现,