1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数 值 分 析,Matlab,基础,Ch,9,.,Matlab,基础知识,1.,概述,1.,历史背景与主要功能,Matlab,=,Mat,rix,Lab,oratory,(,矩阵实验室,),数值计算,三大基本功能 符号运算,数据可视化(图形功能),+,程序开发,+(,专业,),工具箱(,Toolbox,),数值计算型:,Matlab,、,Xmath,等,数学软件,数学分析型:,Mathematica,、,Maple,等,Matlab,:,面向,21,世纪的科学计算语言,在科学计算和工程领域,赢得了广泛用户,
2、2.,语言特点,功能强大,语言简单,演算纸式的计算工具,扩充能力强 程序可移植性好,开放性的源程序(,M,文件),编程易,效率高,基本运算单位:矩阵;运算符、库函数极丰富,具有功能强劲的工具箱,(参见,P,8,表,1.3,),几十个工具箱,涉及信号处理、自动控制、图象处理、金融系统、最优化方法、小波分析等许多学科,3.,集成环境的组成,五个部分,:,(1)Matlab,语言,适合开发大小型程序,(2),Matlab,工作环境,变量查看器、,路径浏览器、,程序编辑器,&,附带的大量,M,文件,(3),图形系统,二、三维图形绘制,图象处理,动画制作,(4),Matlab,数学函数库,基本函数、复杂
3、算法的函数,(5),Matlab API(Application Program Interface),Matlab,与,FORTRAN,、,C,、,Java,的接口,4.,Matlab,的,典型应用,数学计算,算法开发,建模与仿真,数据分析与可视化,科学与工程绘图,应用开发(包括图形界面):,软件开发周期以周计,5.,工作方式(操作基本步骤),启动,Matlab,命令窗口:,命令,(,逐行解释执行,),指令,(,命令,),系统提供,库函数的调用,命令,命令式文件,文件名即“命令”,用户编写,函数式文件,函数调用为“命令”,命令行提示符,命令窗口,命令,当前路径,可同时打开多个窗口,命令窗口,
4、命令历史窗口,当前路径窗口,工作空间,窗口,最有用的帮助命令,help+,函数名,或,help+,函数类名,如,:,help inv,(,矩阵求逆,),help,matfun,(,矩阵函数类,),2.,基本的数值计算功能,一、数字及其运算,基本运算单元,矩阵,1,、变量的定义及代换,(,1,)直接输入,如,:258,369,ans=,95202,(,2,),设定变量,如,:,x=,258,369,x=,95202,缺省变量,例,:,水粘度,计算,t,=0,20,40,60,80,度时的水粘度,%,后,为,注释,不被执行,不加分号,则显示结果,冒号表达式,./(),为数组右除,t.2,为向量求幂
5、2.,几个基本的算术运算,(,1),四则运算,*,(2),乘方、开方,:,函数,sqrt,如,:,1233,ans=,1860867,sqrt,(ans),ans=,1.3641e+003,3.,数字的输入输出格式,(,1),输入格式,与,C,相同。如:,6,83 0.2006 1.4756,e6 2.34E21,(2),输出格式,例,:,sqrt,(2),的几种显示格式,Short 1.4142,Long 1.41421356237310,Short e 1.4142e+000,Long e 1.414213562373095e+000,可由,format,命令控制(缺省,为,Short,
6、格式如:,format Long,只影响屏幕显示。,存储、计算总是以双精度形式,4.,常驻变量,无需定义的专用,(,固定,),变量。如:,Pi,圆周率,i,或,j,虚数单位,inf,无穷大,1/0,NaN,不定值,0/0,例,:,sin(pi/3),ans=,0.86602540378444,j2,ans=,1.00000000000000+0.00000000000000 i,二、向量及其运算,1,、向量,的生成,(,1,)直接输入,行向量:,a=a,1,,,a,2,a,3,,,,,a,n,列向量:,b=b,1,;b,2,b,3,;,b,n,(,2,),利用冒号表达式,a=a0,:,s
7、tep,:,an,(,3,),线性等分向量,linspace,(,x1,,,x2,,,n,),逗号或空格,分号或回车,课后练习,熟悉,Matlab,基本操作:,系统的启动、退出,进,/,出命令窗口、变量浏览器、路径浏览器、程序编辑器。,下 次 见,2.,向量的基本运算,(,1,)加(减)与数加(减),例:,a=1,,,2,,,3,,,4,;,a+a,ans=,2.0000 4.0000 6.0000 8.0000,a 1,ans=,0.0000 1.0000 2.0000 3.0000,a,每个元素减,1,(,2,)数乘,例:,a=1,,,2,,,3,,,4,;,a3,ans,=,3.0000
8、 6.0000 9.0000 12.0000,(,3,),点积、叉积,点积:,dot(a,b),或,sum(a.*b),叉积:,cross(a,b)a,、,b,为,3,维向量,a,每个元素乘以,3,三、矩阵及其运算,存储方式:按列,1,、矩阵的生成,(,1,)直接输入小矩阵,例:,a=1,,,2,,,3,;,4,,,5,,,6,;,7,,,8,,,9,a=,1 2 3,4 5 6,7 8 9,同行用“,”,或空格分隔;,行与行用“,;”,或回车分隔;,矩阵大小可不预先定义;,元素可为表达式,(,2,)创建,M,文件输入大矩阵,命令式文件,(,此处即是,),M,文件,(.,m ),函数式文件,例
9、编辑一文件,example.m,如下,%example.m,exam=1 1 1 1 1,2 2 2 2 2,3 3 3 3 3,4 4 4 4 4,在命令窗口:,example;,size(exam),ans,=,4 5,注释,文件名,矩阵大小函数,由,已有的数据文件给出,2,、矩阵的基本数学运算,(,1,)矩阵的四则运算,格式与数字的运算相同,矩阵加、减,:,+,例:,a=1,,,2,;,2,,,3,;,b=1,,,1,;,2,,,2,;,c=a+b,c=,2 3,4 5,a,、,b,同阶,矩阵乘法,A*B ,有公共相邻维,矩阵除法,左除:,右除:,/,A,B,A,/,B,例:解,Ax=
10、b,x=Ab,相应数学运算:,A,-1,B,相应数学运算:,AB,-1,(2),转置,A=1 39 10 ,A=,1,39,10,(,3,),幂运算,如:,A3 A,3,,,即,(,A*A*)A,。,非各元素,3,次方。,(4),矩阵与常数间运算,常数与矩阵各元素之间进行运算。如:,A+1,2*A,A/3(,常数通常只能做除数),(,5,)矩阵的逆运算,inv(A),(6),行列式,det,(A),(7),指数运算,最常用:,expm,(A),e,A,(,8,),对数运算,logm,(A),(9),开方运算,sqrtm(A),等同于,funm,(A,exp),等同于,funm,(A,log),
11、等同于,funm,(A,sqrt,),2,、矩阵的基本函数运算,(,1,)特征值函数,eig,用法:,d=,eig,(A),X,Y=,eig,(A),(,2,),条件数函数,Cond,(A),Condest,(A),Cond,(A,p),特征值组成的列向量,特征向量组成的矩阵,对角阵,对角元为特征值,2-,范数条件数,1-,范数条件数,p-,范数条件数,(,3,)范数函数,norm(A)2-,范数,norm(A,p)p-,范数,,p=1,,,2,,,inf,,,fro,normest,(A)2-,范数估计值,(,4,),秩函数,rank(A),(,5,),迹函数,trace(A),(,6,),
12、通用函数形式,funm,(A,函数名),如:,funm,(A,sqrt,),同,sqrtm(A),区别于,sqrt,(A),(,作用到各元素上,),P53,表,2.6,基本函数表,4,、矩阵分解函数,(,1,),LU,分解,L,U =,lu,(A)A=L*U,L,U,P =,lu,(A)P*A=L*U,(,2,),Cholesky,分解,R=,Chol,(A)A=R*R,置换阵,单位下三角阵,置换阵与单位下三角阵的乘积,上三角阵,5,、特殊矩阵的生成,(,1,)空阵,不包含任何元素,但非“不存在”,利用空阵缩维的例子:,a=1 2 3,4 5 6,;,a(:,1,3 )=,a=,2,5,a(1
13、)a,的第,1,行,a(:,2)a,的第,2,列,a(:,:),a,a(:)a,所有元素按列排成,的列向量,(,2),常用工具阵,全零阵,zeros(N)NN,zeros(M,N)MN,zeros(size(A),与,A,相同大小,单位阵,eye(N),eye(M,N),eye(size(A),全,一阵,ones(N)ones(M,N),ones(size(A),随机阵,rand(N)rand(M,N),rand(size(A),rand ,生成随机数,5,、矩阵的一些特殊操作,(,1,)矩阵的抽取,对角元素抽取,diag,a=,diag,(,A,,,k,),k=0,diag,(,A,),
14、主对角线,k 0,上方第,k,条对角线,k,v=1,2,6,20;,a1=,-v(2:4);eye(2),zeros(2,1),a1=,-2 -6 -20,1 0 0,0 1 0,a2=-v(2:4);,a2(2:3,1:2),=eye(2),a2=,-2 -6 -20,1 0 0,0 1 0,四、矩阵的,数组运算,1,、基本数组运算,+,-,(,高版本已无,.,+,.,-,),.,*,.,/,.,.,(,不同于,*,/,),如,:,A,.,*B,不同于,A*B,A,.,3,不同于,A,3,A,.,/,B,不同于,A,/,B A,.,B,不同于,A,B,数组与常数运算,:,3,.,*,A,同
15、3*,A,A,./,3,同,A,/,3 3,.,A,同,3,A,3,.,/,A,和,A,.,3,合法,(3,/,A,和,A,3,不 允许,),针对每个元素进行运算,2,、数组函数运算,函数名,(A),如,:,sqrt,(A)(,不同于,sqrtm,(A),exp(A),(,不同于,expm,(A),3,、,数组逻辑运算,(1),基本逻辑关系运算,运算符,:=,函数,:,eq,ne lt gt,le,ge,如,:,a=b eq(a,b),P53,表,2.6,基本函数表,逻辑与 或 非,运算符,:,&,|,函数,:,and or,not,如,a&b and(a,b),(2),逻辑关系函数运算,P
16、66,表,2.19,逻辑关系函数表,如,:,any,all,课后练习,了解附录,B,中有关矩阵的函数,(可通过,help,命令:,help+,函数名),下 次 见,五、多项式及其运算,1,、多项式的创建,表达约定:,P(x)=a,0,x,n,+a,1,x,n-1,+a,n-1,x+a,n,用行向量,(,或列向量,),表示,P=a,0,a,1,a,n-1,a,n,(1),直接输入法,例,:,输入,x,3,-,5x,2,+6x,33,p=1,-,5,6,-,33;,poly2sym(p),ans,=,x,3,-,5*x,2+6*x,-,33,(2),特征多项式的生成,poly(A),(3),由根创
17、建多项式,poly(u),u=r,1,,,r,2,,,,,r,n,poly(u),表示,:,(,x,-,r,1,)(x,-,r,2,)(x,-,r,n,),例,:,u=,-,5,-,3+4i,-,3,-,4i;,p=poly(u),p=,1 11 55 125,A,为矩阵,u,为,向量,列向量也可,x,3,+11x,2,+55x,+125,2,、多项式运算,(1),求值,polyval,(p,x),p ,行(或列)向量,x ,矩阵,polyvalm,(p,x),数组运算,矩阵运算,例,:,p=1,11,55,125;,b=1,1;1,1;,polyval,(p,b),ans,=,192 192
18、192 192,polyvalm,(p,b),ans,=,206 81,81 206,x,3,+11x,2,+55x,+125,1,3,+11*1,2,+55*1,+125,b,3,+11*b,2,+55*b,+125,*,eye(2),b=1 1,1 1,数组运算,矩阵运算,(,2),求根,roots(p),得到多项式,p,的根组成的列向量,p,为向量,(3),乘除法,乘,:,conv,(p1,p2)p1,式*,p2,式,除,:,deconv,(p1,p2)p1,式,/,p2,式,(4),多项式微分,polyder,(p),多项式,p,的导数,p1,、,p2,为向量,p,为向量,(5),多
19、项式最小二乘拟,合,已知,(,x,i,y,i,),(i=1,m),polyfit(x,y,n),x=x,1,x,2,x,m,y=y,1,y,2,y,m,多项式次数,例,:,用三次多项式在,0,5,上拟合,e,x,x=0:0.1:5;,y=exp(x);,p=polyfit(x,y,3);,s=,polyval,(p,x);,plot(x,y,b*,x,s,“r-),legend(,原曲线,拟合曲线,),axis(0,5,0,52 ),作图函数,蓝色,红色,图形标签,设置坐标轴刻度范围,实线,Lets have a break!,3.,基本的绘图功能,(,数据可视化,),一、图形窗口,执行一绘图
20、命令后,自动将图形画在图形窗口(简称图窗)(独立于命令窗口)。,图形窗口创建和控制命令,figure,figure ,生成新的图窗,figure(H),使,H(Figure No.H),成为当前图窗,;,若不存在,则创建之,坐标轴坐标轴,H,为正整数,子图形绘制和控制函数,subplot,subplot(m,n,p),将图窗分割成,mn,个子窗口,并指定第,p,个为当前图窗,如,:,subplot(2,3,4),1,6,5,3,2,4,当前,二、二维图形绘制,1,、,plot ,线形绘图函数,(1),plot(x,y),x,为,横坐标,(,向量或矩阵,);,y,为纵坐标,(,向量或矩阵,),(
21、2)plot(y),y,为纵坐标,x=1,2,3,(3)plot(x,y,s),s,格式字符串:线型、颜色、点标等,(,表,4.1),如,:,b+(,蓝色,+,号作点标,),(4),plot(x1,y1,s1,x2,y2,s2,),在一个图窗中绘制多个图形,例,:,t=0:pi/100:2*pi;,y1=,cos,(t);,figure(1);,plot(t,y1);,y2=,cos,(t-0.25);,y3=sin(t-0.5);,figure(2),plot(t,y1,-,t,y2,-,t,y3,x),加不加分号效果相同,2,、绘制,二维图形的步骤,准备数据,如,:,t=0:pi/100:
22、2*pi;,y1=,cos,(t);,选定绘图窗口或子窗口,如,:,figure(1),或,subplot(2,3,4),(3),调用绘图命令,如,:,plot(t,y1,-,t,y2,-,t,y3,x),(4),加上必要的修饰,如,:,legend(,原曲线,拟合曲线,),axis(0,5,0,52 ),(,1),和,(3),必不可少,!,3,、图形的控制与标注处理,(1),坐标轴控制,axis(,xmin,xmax,ymin,ymax,),三维,:,axis(,xmin,xmax,ymin,ymax,zmin,zmax,),网格线控制,(,三维也适用,),grid on,加上,grid o
23、ff,清除,grid,切换,(3),图形保留,实现一窗多次绘图,(,三维也适用,),hold on,保留当前图形,hold off,返回默认方式,(,新图覆盖旧图,),hold,切换,(,4),图形、坐标轴的名称标注,图形,最简单用法,:,title(,名称,),标注在图形顶部,坐标轴,最简单用法,:,xlabel,(,名称,),标注在,x,轴附近,ylabel,(,名称,),标注在,y,轴附近,(,5),图形的文字标注,文字注解,text(x,y,文字,),加至坐标处(,x,y),三维,:,text(x,y,z,文字,),图例标注,legend(,标注,1,标注,2,),如前:,legend
24、原曲线,拟合曲线,),一个或一组点,习题一,1,、对乘、除、幂运算及函数运算分别举例说明矩阵运算和数组运算的区别。,2,、将图形窗口分成上下两个子窗口。,上窗绘制,y=sin(x),和,y=,cos,(x),x,0,2*pi,的图形,下窗绘制,y=exp(x),和,y=,sqrt,(x),x,0,2,的图形,并加上必要的标注。,下 次 见,三、三维图形绘制,步骤同二维图形绘制,常用绘图函数:,plot3 mesh surf,1,、,plot3,函数,三维线图,plot3,(,x,y,z),plot3,(,X,Y,Z),plot3,(,x,y,z,s),plot3,(,x1,y1,z1,s1
25、x2,y2,z2,s2),x,y,z,为,向量,s,为,格式字符串,X,Y,Z,为,同阶矩阵,例:,P107,例,4.9,x=0:pi/50:10*pi;,y=sin(x);,z=,cos,(x);,plot3(x,y,z),螺旋线,x=t,y=sin(t),z=,cos,(t),2,、,mesh,函数,-,网图,mesh(X,Y,Z,C),mesh(X,Y,Z)C=Z,mesh(x,y,Z)和mesh(x,y,Z,C),length(x)=n,length(y)=m,m,n=size(Z),mesh(Z)和mesh(Z,C),x=1:n,y=1:m,X,Y,Z,C,为,矩阵,绘制由,X,Y
26、Z,C,指定的曲面,;,C,决定颜色,x,y,为,向量,例,:,单位矩阵的网,图,a=eye(20);,mesh(a),3,、,surf,函数,-,着色图,调用格式同,mesh,例,:,P111,例,4.15,X,Y =,meshgrid,(,-,4:0.5:4);,Z=,sqrt,(X.,2+Y.,2);,surf(Z),生成网格点,特殊的三维图形函数,如,:,饼图,pie3,柱面图,cylinder,球面图,sphere,4.,程序设计,一、,Matlab,的,命令执行方式,1,、直接执行,-,命令行方式,命令,如,:,a=1:6,a=,1 2 3 4 5 6,2,、程序执行,-,M,文
27、件方式,(,1,)命令式文件,由一组命令构成,/.,m /,文本文件,执行方式,:,文件名,(,不必输后缀,.,m,),在,M-edit,窗口,菜单,Debug/Run,例,:,P170,例,5.1,%,logotu,.m,load logo%,加载文件,logo.mat(,保存变量的文件,),surf(L,R),colormap,(M),n=size(L,1)%L,的第一维,axis off%,关闭轴显示,axis(1,n,1,n,-0.2,0.35 ),view(-37.5,60)%,水平、竖直角,title(Life is too short to spend writing Do lo
28、ops);,文件,logotu,.m,须放在搜索路径中,logotu,n=,43,并生成下图,(,2),函数式文件,定义函数,/.,m /,文本文件,以,function,语句开始 (,最后,无,end,),调用格式,:,输出参数,1,输出参数,2=,函数名(输入参数列表),命令式文件,M,文件,函数,式文件,构成:无、有,function,语句,比较,执行方式:函数名即命令、有参数传递,变量作用范围:全局、局部变量,例:阶乘函数,%,fun,.m,function f=,fun,(x)%x!,f=1;,for i=1:x,f=f*i;,end,调用,:,a=fun(3),a=,6,必须相同,
29、二、建立自己的函数库,(,工具箱,),1,、建立特定的目录;,2,、将自己的,M,文件放在该目录下;,3,、将该目录加到搜索路径上。,三、流程控制语句,1,、循环语句,for-end,循环,for i=m:s:n,语句体,%,如前例,end,while-end,循环,while,表达式,语句体,end,例,:,求,1+2+100,s=0,;,i=1,;,while i,=,100,s=s,+,i,;,i=i,+,1;,end,s,另一,简捷方法,:,a=1:100;,S=sum(a),2,、选择语句,if,语句,if,表达式,语句体,else,语句体,end,if,表达式,语句体,else
30、if,表达式,语句体,else,语句,体,end,无空格,可,多组,例,:,P175,例,5.5,function f=,pdbsline,(x),if x 0,f=0;,elseif,x 1,f=x;,elseif,x 2,f=2 x;,else,f=0;,end,0,x 0,f(x)=x 0 x 1,2 x 1 x 2,0 x 2,3,、分支语句,switch,表达式,case,表达式,语句体,case ,表达式,表达式,语句体,otherwise,语句体,end,习题二,1,、分别用,for,和,while,循环编程,求出,K=1+2+2,2,+2,3,+2,63,并考虑一种避免循环的简
31、捷方法。,2,、写出下列分段函数的,Matlab,函数,5,x 3,下 次 见,4,、人机交互语句,(,1,),echo,命令,echo on,显示文件执行过程中的命令行,echo off,关闭显示命令行,(,2,),input ,用户输入提示命令,接受用户的输入(数据、字符串或表达式),如:,R=input,(,How many apples,),How many apples 2,R=,2,(,3,),pause ,暂停,程序暂时终止运行,等待按任意键后继续运行,(,4,),break,中断,退出循环或结束,if,语句执行,四、控制输入变量个数,输入变量个数函数,nargin,例,:,fu
32、nction c=test(a,b),if(,nargin,=1),c=,det,(a);,elseif,(,nargin,=2),c=a+b;,end,如果输入变量个数为,1,如果输入变量个数为,2,五、子函数与局部函数,子函数,函数(主函数)体内定义的函数,只能被主函数或同一主函数下其他的子函数调用,如,:,function c=test(a,b),c=test1(a,b)*test2(a,b);,function c=test1(a,b),c=a+b;,function c=test2(a,b),c=a,-,b;,局部函数,目录,private,下的函数。其父目录下函数才可调用。,在,M
33、文件中调用函数时,依次检测:,是否本文件的子函数?,是否可用的局部函数?,是否其他的函数?,六、计时函数,cputime,和,tic toc,cputime,用法:,t=cputime,;,需计时程序段,t=cputime-t,;,tic,、,toc,用法:,tic,;,需计时程序段,toc,;,打开计时器,关闭计时器,并显示所需时间,七、变量的保存与加载,save,保存变量,save filename a,b,c,将变量,a,b,c,保存至文件,filename.mat,save filename,将,工作空间所有变量保存至文件,filename.mat,save,将工作空间所有变量保存至文件,matlab,.mat,load,加载变量,load filename,将,filename.mat,中,所有变量读入内存,load,将,matlab,.mat,中所有变量读入内存,Lets have a break!,






