您好,欢迎访问三七文档
-291-Matlab入门§1概论常用的数学软件有Maple,Mathematica,Matlab等;常用的大型统计软件有SAS,SPSS等。下面我们简要地介绍一些Matlab的功能,应用范围及发展史。Matlab有五大通用功能:数值计算功能(Nemeric),符号运算功能(Sybolic)(当要求Matlab进行符号运算时,它就请求Malpe计算并将结果返回到Matlab命令窗口),数据可视化功能(Graphic),数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。Matlab在线性代数,矩阵分析,数值及优化,数理统计和随机信号分析,电路与系统,系统动力学,信号和图像处理,控制理论分析和系统设计,过程控制,建模和仿真,通信系统,财政金融的众多领域的理论研究和工程设计中得到了广泛应用。MATLAB是1984年由美国Mathworks公司推向市场。该软件有三大特点:一是功能强大;二是界面友善,语言自然;三是开放性强(仅Mathworks公司就推出了30多个应用工具箱)。Matlab的版本目前已经发展到Matlab7.0。§2Matlab简介1.指令行的编辑启动Matlab后,就可以利用Matlab工作。由于Matlab是一种交互式语言,随时输入指令,即时给出运算结果是它的工作方式。2*sin(0.3*pi)/(1+sqrt(5))ans=0.5000(ans是一个保留的Matlab字符串,它表示上面一个式子的返回结果,用于结果的缺省变量名)2.入门演示introdemo3.帮助①help%帮助总揽helpelfun%关于基本函数的帮助信息helpexp%指数函数exp的详细信息②lookfor指令当要查找具有某种功能但又不知道准确名字的指令时,help的能力就不够了,lookfor可以根据用户提供的完整或不完整的关键词,去搜索出一组与之相关的指令。lookforintegral%查找有关积分的指令lookforfourier%查找能进行傅利叶变换的指令③超文本格式的帮助文件在Matlab中,关于一个函数的帮助信息可以用doc命令以超文本的方式给出,如:docdocdocdoceig%eig求矩阵的特征值和特征向量④pdf帮助文件4.简单的矩阵输入①要直接输入矩阵时,矩阵元素用空格或逗号分隔;矩阵行用分号“;”隔离,整个矩阵放在方括号“[]”里。-292-A=[1,2,3;4,5,6;7,8,9]说明:指令执行后,矩阵A被保存在Matlab的工作间(workspace)中,以备后用。如果用户不用clear指令清除它,或对它进行重新赋值,那末该矩阵会一直保存在工作间中,直到本Matlab指令窗关闭为止。②矩阵的分行输入A=[1,2,34,5,67,8,9]5.语句与变量①Matlab语句有两种最常见的形式i)表达式ii)变量=表达式[例1]表达式的计算结果1996/18ans=110.8889[例2]计算结果的赋值s=1-1/2+1/3-1/4+1/5-1/6+...1/7-1/8;说明:三个小黑点是“连行号”,分号“;”作用是:指令执行结果将不显示在屏幕上,但变量s将驻留在内存中。若用户想看s的值,可键入以下命令:s(s=0.6345)②特殊变量ans用于结果的缺省变量名pi圆周率eps计算机的最小数flops浮点运算次数inf无穷大如1/0NaN不定量如0/0i(j)i=j=1nargin所用函数的输入变量数目nargout所用函数的输出变量数目realmin最小可用正实数realmax最大可用正实数6.数据结构:向量、矩阵、结构数组和细胞数组①向量的转置z=[1+j,2+pi*i,-sqrt(-1)]’z=1.0000-1.0000i2.0000-3.1416i0+1.0000i当对复数向量进行转置操作时,可以得到其共轭转置向量。z.'(非共轭转置向量)-293-②产生一个行向量t=[0:0.1:10]%产生从0到10的行向量,元素之间间隔为0.1t=linspace(n1,n2,n)%产生n1和n2之间线性均匀分布的n个数(缺省n时,产生100个数)t=logspace(n1,n2,n)(缺省n时,产生50个点)③who,whos,size和length是对提供工作空间变量信息很有用处的四个命令。who执行该命令可列出储存空间的所有变量whos显示所有的变量,变量所占的字节数及该变量是否是实数size(a)执行该命令可以得到矩阵a的行数与列数length(a)执行该命令后,屏幕上显示出向量a的长度。如果a是矩阵,则显示的参数为行数列数中的最大数。④矩阵的标号A(m,n)表示矩阵A的第m行,第n列的元素;A(1:2,1:3)表示矩阵A的从第一行到第二行,从第一列到第三列的所有元素;A(:)可以得到一个长向量,该向量的元素是按列一一叠加在一起的。例如a=[12;34];a(:)ans=1324矩阵的下标也可以是向量。例如b=a(x,y);可以得到一个矩阵b。a的行标来自向量x,而列标来自向量y。例如,矩阵a有n列,那末b=a(:,n:-1:1)将使矩阵a按列的逆序排列。⑤特殊矩阵i)单位矩阵eye(m),eye(size(a))可以得到与矩阵a同样大小的单位矩阵,eye(m,n)可得到一个可允许的最大单位矩阵而其余处补0。ii)所有元素为1的矩阵ones(n),ones(size(a)),ones(m,n)iii)所有元素为0的矩阵zeros(n),zeros(m,n)iv)空矩阵是一个特殊矩阵,这在线性代数中是不存在的。例如:q=[]矩阵q在工作空间之中,但它的大小为零。通过空阵的办法可以删去行与列。例如a=rand(5);a(:,1:3)=[]第一条指令执行后得到一个55的矩阵;第二条指令将矩阵a的前三列删除。v)对角矩阵当v是向量时,diag(v)得到以v的元素为对角线上元素的对角矩阵;当v是矩阵时,diag(v)得到一个列向量,其元素为矩阵v对角线上的元素,diag(v,1)得到矩阵v对角线上移一行的元素组成的列向量,diag(v,-1)得到矩阵v对角线下移一行的元素组成的列向量。⑥字符串要用单引号。例如:-294-disp('textstring')%disp显示命令还有几个字符串命令可以作为文字说明和绘图标题说明等,如num2str,int2str,fprintf和sprintf。同样,可以借助于help命令了解它们的具体用法。⑦结构数组有时需要将不同的数据类型组合成一个整体,以便于引用。这些组合在一个整体中的数据是相互联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项都是和该学生有联系的。下面简单介绍结构体的定义与引用。i)结构数组的定义定义结构数组可以采用两种方法:用赋值语句定义和用函数struct定义。用赋值语句定义结构时,只要给出结构的属性赋值,Matlab就会自动把该属性增加到结构中,赋值时,结构名和属性名用“.”分开。例如,下面三条语句将定义一个11的结构数组,结构名为student,有三个属性:name、num、test。该结构数组只有一个元素,在命令窗口中键入结构名student,将显示该元素所有属性的属性值的特性。student.name='JohnDoe';student.num=123456;student.test=[797573;807879;908580];再键入以下三行可给该结构数组增加一个元素。student(2).name='AnnLane';student(2).num=123422;student(2).test=[707673;809979;908580;808586];现在结构数组student的维数为21。当结构数组的元素超过1个时,MATLAB的帮助信息中,不再显示不同属性的值,而只显示数组名、属性名和维数大小。函数struct也可用来定义结构数组,其调用格式为:结构数组名=struct(‘属性1’,’属性值1’,‘属性2’,’属性值2’,…)ii)结构数组属性值的修改、设置和获取结构数组一旦形成,就可取出数组中的某个元素并修改该元素的某个属性的值。以上面建立的student数组为例,命令str=student(2).name可取出第二个元素的name属性的值。命令n=student(2).test(4,2)取出第二个元素test的值中第四行第二列上的数。同理,可用命令student(2).test(4,2)=0修改第二个元素test的值中第四行第二列上的数的值。关于结构数组有如下函数:函数名作用struct生成和转换为结构数组fieldnames查询结构数组的属性名getfield查询结构数组的属性值setfield设置结构数组的属性值rmfield删除属性-295-isfield检查是否为数组的属性isstruct检查数组是否为结构型⑧细胞数组细胞数组也是MATLAB里的一类特殊的数组。在MATLAB里,由于有细胞数组这个数据类型,才能把不同类型、不同维数的数组组成为一个数组。细胞数组的每一个元素可为类型不同、维数不同的矩阵、向量、标量或多维数组,所有元素用大括号括起来。如矩阵A=[1234;2345;3456],则命令c={A,sum(A),sum(sum(A))}得到一个31的细胞数组。关于细胞数组有如下函数:函数名作用celldisp显示细胞数组的内容cell生成细胞数组cellplot用图形方式显示细胞数组num2cell把数值型转换为细胞型deal输入和输出的匹配cell2struct把细胞数组转换为结构数组struct2cell把结构数组转换为细胞数组iscell检验数组是否为细胞型i)细胞数组的生成有两种方法可以生成细胞数组:用赋值语句直接生成;先用cell函数预分配数组,然后再对每个元素赋值。有两种方法可对元素赋值:一种方法采用数组元素的下标赋值。下面四句命令将建立一个22的细胞数组。A(1,1)={[1:5;6:10]};A(1,2)={'Annecat'};A(2,1)={3+7i};A(2,2)={0:pi/10:pi};在大括号中,逗号或者空格表示每行元素之间的分割,分号表示不同行之间的分割。另一种方法则把细胞数组的元素用大括号括起来,而所赋的值采用其它数组的形式。例如下面四句生成的细胞数组和上面所生成的完全一样。A{1,1}=[1:5;6:10];A{1,2}='Annecat';A{2,1}=3+7i;A{2,2}=0:pi/10:pi;命令B=cell(3,4)创建一个43的细胞矩阵。ii)细胞数组内容的查看对于上面建立的数组A,在Matlab命令窗口键入变量名A,将显示数组的简要信息。函数celldisp用来显示细胞数组的每个元素的值。函数cellplot将画出细胞数组的每个元素的结构图。当给已经定义的细胞数组下标范围外的元素赋值时,Matlab自动扩维,对于没有-296-赋值的元素,赋值为空矩阵。7.数学运算与函数①基本代数运算操作+,-,*,\,/,^,②矩阵运算函数:求行列式(det),矩阵求逆(inv),求秩(rank),求迹(trace),求模(norm),d=eig(A)求矩阵A的特征值,[v,d]=eig(A)求矩阵A的特征向量和特征值,这里v的列向量是对应的特征向量。矩阵基本运算:A\B,B/A,A.*B,A./B,A.\B,A.^B。③基本数学函数常用的数学函数有sin,cos,tan,abs,min,sqrt,log,log10,sign,asin,acos,atan,max,sum,exp,fix等。具体使用方法请参看帮助help。常用的矩阵函数有expm,logm,sqrtm和funm,funm函数可计算任何一个基本数学函数的矩阵函数。它可以表示为fa=funm(a,'fun')式中,fun可以是任意一个基本函数,如sin,cos,log10等。④多项式任意多项式都可以用一个行向量来表示,即n维的
本文标题:Matlab入门
链接地址:https://www.777doc.com/doc-4234570 .html