Matlab简易教程前言Matlab是matrixlaboratory的缩写,是矩阵实验室的意思,它是一个功能强大的数学工具软件。Matlab的产生是与数学计算紧密联系在一起的,1980年美国新墨西哥大学计算机科学系主任cleveMoler在给学生讲授线性代数课程时,发现学生利用高级语言编程解决线性代数问题花费很多时间,为了减轻学生编程的负担,用高级语言编写了最早的MATLAB。Matlab语言是一种用于工程计算的高性能语言,它主要包括两大内容:核心函数和工具箱。Matlab的典型应用包括以下几个方面:数学计算、算法开发、建模及仿真、数据分析及可视化、科学及工程绘图、应用开发。第1章matlab的工作环境1.启动和退出matlab启动matlab程序与启动其它windows程序一样,通常通过单击桌面上的相应图标来执行。当然,也可以通过“开始”菜单中相应命令启动。退出matlab时,也可以像退出其它windows程序一样操作,也可以在命令窗口中键入quit或exit来退出。2.菜单和工具栏Matlab的菜单和工具界面与windows程序的界面类似,用户只要稍加实践就可以掌握其功能和使用方法。菜单的内容会随着在命令窗口执行不同命令而作出相应改变。3.命令窗口命令窗口是matlab的主要交互窗口,用于输入命令并显示除图形以外的所有执行结果。Matlab命令窗口中的“”为运算提示符,表示matlab处于准备状态。当在提示符后输入一段程序或一段运算式后按“回车”键,matlab会给出计算结果,并再次进入准备状态。单击命令窗口右上角的箭头按钮可以使命令窗口脱离主窗口而成为一个独立的窗口。常用控制命令及其功能:clc:清除命令窗口中的内容clear:清除工作空间中的变量clf:清除图形窗type:显示指定的M文件的内容exit/quit:结束matlab会话,程序完成,如果没有明确保存,则变量中的数据丢失help:获取在线帮助4.历史命令窗口该窗口主要用于记录所有执行过的命令,在默认设置下,该窗口会保留自安装后所有使用过命令的历史记录,并标明使用时间。同时,用户可以通过用鼠标双击某一历史命令来重新执行该命令。与命令窗口类似,该窗口也可以成为一个独立的窗口。选中该窗口,然后单击鼠标右键,弹出一个菜单,用户可以通过此菜单删除或粘贴历史记录,也可以为选中的表达式或命令创建一个M文件。5.当前工作目录窗口当前工作目录是指matlab运行文件时的目录。只有在当前工作目录或搜索路径下的文件、函数可以被运行或调用。在窗口中可显示或改变当前工作目录,还可以显示当前工作目录下的文件。6.工作空间窗口在工作空间窗口中将显示目前内存中所有的matlab变量的变量名、数据结构、字节数以及类型等信息。第2章基本运算与函数在MATLAB下进行基本数学运算,只需将运算式直接打入提示号()之后,并按入Enter键即可。例如:(5*2+1.3-0.8)*10/25ans=4.2000又如:求10的阶乘factorial(10)求1530C可用nchoosek(30,15)MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算后的答案(Answer)并显示其数值于屏幕上。我们也可将上述运算式的结果设定给另一个变量x:x=(5*2+1.3-0.8)*10^2/25x=42此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。若不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号(;)即可,如下例:y=sin(10)*exp(-0.3*4^2);若要显示变量y的值,直接键入y即可:yy=-0.0045在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数,函数里的参数必须用圆括号括起来。1.三角函数MATLAB常用的三角函数名称含义名称含义名称含义sin正弦asin反正弦sec正割cos余弦acos反余弦csc余割tan正切atan反正切asec反正割cot余切acot反余切acsc反余割pi:常数2.指数和对数函数名称含义名称含义名称含义expE为底的指数log1010为底的对数pow22为底的指数log自然对数log22为底的对数sqrt平方根3.复数函数名称含义名称含义名称含义abs模conj复数共轭real复数实部angle相角imag复数虚部complex用实部和虚部构造一个复数第3章数组、矩阵及其运算数组或矩阵是matlab最基础的内容之一,几乎所有的数据都是用数组的形式存储的,这就是matlab又被称为矩阵实验室的原因。3.1向量的创建3.1.1一维数组(向量)的创建一维数组(向量)创建有直接输入法、步长生成法、定数线性采样法和定数对数采样法等。1.直接输入法(1)使用分号,创建一维列向量x1=[pi;log10(100);7*2;2^3]x1=3.14162.000014.00008.0000(2)使用空格或逗号,创建一维行数组x2=[pilog10(100)7*22^3]x2=3.14162.000014.00008.00002.步长生成法采用通用格式a:step:b。其中a表示数组的第一个元素;step表示数组的间隔,即步长;b表示数组的最后一个元素。如果省略step,默认值为1。x3=1:2:10x3=135793.定数线性采样法在设定了总个数的条件下,均匀采样分布生成一维行向量。采用通用格式:x=linspace(a,b,n)其中a,b分别是数组的第一个和最后一个元素,n表示采样点数。例如:x=linspace(1,10,5)x=1.00003.25005.50007.750010.00004.定数对数采样法在设定了总个数的条件下,通过“常用对数”采样分布生成一维行向量。采用通用格式:x=logspace(a,b,n)其中a,b分别是数组的第一个和最后一个元素,n表示采样点数。3.1.2一维向量元素寻访和赋值1.子向量的寻访x=linspace(1,10,5)%定义向量x=1.00003.25005.50007.750010.0000x(2)%查看向量第二个元素ans=3.2500x([135])%查看向量第一、三、五个元素组成的子向量ans=1.00005.500010.0000x(3:5)%查看向量第三到第五个元素组成的子向量ans=5.50007.750010.0000x(find(x6))%查看大于6的元素组成的子向量ans=7.750010.00002.子向量的赋值x(2)=5x=1.00005.00005.50007.750010.0000x(4)=[]%删除第四个元素MATLAB亦可取出向量的一个元素或一部份来做运算:y=x(2)*3+x(4)%取出x的第二个元素3倍后和x的第四个元素来相加,最后赋给变量y。3.2矩阵的创建3.2.1矩阵的创建1.采用直接输入法创建矩阵采用矩阵构造符“[]”。将各元素依次输入构造符[]内,并且以空格或者逗号分隔,行与行之间用分号分隔。例:构造一个2*3矩阵,第一行各元素依次为1,2,3,第一行各元素依次为4,5,6。A=[123;456]A=1234562.利用内部函数创建矩阵1)零矩阵命令:zeros(i,j)可以创建i行j列的全零矩阵。2)全1矩阵命令:ones(i,j)可以创建i行j列的全1矩阵3)对角线为1的矩阵命令:eye(i,j)可以创建i行j列的对角线为1的矩阵。当然,如果想创建单位矩阵,只需要用命令eye(i)即可。4)randn(n)n阶随机矩阵,元素服从正态分布5)rand(n)产生0-1均匀分布的随机数矩阵6)magic(n)n阶魔方矩阵3.2.2矩阵的寻访和赋值用冒号访问矩阵时:A(i,j)表示A中的第i行第j列所在位置的元素;A(:,j)表示A的第j列;A(i,:)表示A的第i行;A(i:j)表示A中的第i个元素到第j个元素;A(:,i:j)表示第i列到第j列;A(i:j,:)表示第i行到第j行;A([IJ],:)表示第i、j两行。A=[1234;5678;9101112]A=123456789101112A(2,3)=5%改变位于第二行,第三列的元素值A=123456589101112B=A(2,1:3)%取出部份矩阵BB=565A=[AB']%将B转置后以列向量并入AA=123455658691011125A(:,2)=[]%删除第二列(:代表所有行)A=13455586911125A=[A;4321]%加入第四行A=134555869111254321A([14],:)=[]%删除第一和第四行(:代表所有列)A=55869111253.3向量与矩阵的运算3.3.1向量与矩阵的代数运算运算符用法功能描述+A+BA和B对应元素的相加,要求A和B有相同的长度。常数也可以和矩阵相加.-A-BA和B对应元素的相减,要求A和B有相同的长度。常数也可以和矩阵相减。*A*B矩阵乘法,要求A的列数要与B的行数相同,常数也可以和矩阵相乘。/A/B(右除)相当于B*inv(A),方程X*A=B的解。\A\B(左除)相当于inv(A)*B,方程A*X=B的解。^A^n相当于A*A*A…A(n个A相乘)’A’矩阵的转置.*A.*BA和B对应元素的相乘,要求A和B有相同的长度./A./B(右除)矩阵A除以矩阵B的对应元素,要求A和B有相同的长度,常数也可以和矩阵相除.\A.\B(左除)矩阵B除以矩阵A的对应元素,要求A和B有相同的长度,常数也可以和矩阵相除。.^A.^n矩阵A每个元素都作n次方运算例如:A=[123;456;789],B=[987;654;321]A=123456789B=987654321A-5ans=-4-3-2-1012343-Aans=210-1-2-3-4-5-672./Aans=72.000036.000024.000018.000014.400012.000010.28579.00008.0000例2:求解以下方程组1212104xxxxA=[11;1-1];B=[104];X=A\B3.3.2向量与矩阵的关系运算运算符功能描述小于=小于等于大于=大于等于==等于~=不等于例如:magic(3)4*ones(3)ans=1010110103.3.3矩阵的运算1.矩阵的转置与逆矩阵的转置运算符:“’”。求解矩阵的逆矩阵的命令格式为:y=inv(x)要求矩阵x有逆矩阵A=[11;21]A=1121B=inv(A)B=-112-1A*Bans=10012.方阵的行列式命令格式:d=det(x)A=[11;21]A=1121det(A)ans=-13.矩阵的秩命令格式:k=rank(A)4.矩阵的迹矩阵对角线元素之和称为迹,求矩阵的迹的命令格式为:B=trace(A)5.矩阵的特征值和特征向量命令格式:[V,D]=eig(A)例:求矩阵A=-211020-413的特征值和特征向量解:A=[-211;020;-413]A=-211020-413[V,D]=eig(A)V=-0.7071-0.24250.3015000.9045-0.7071-0.97010.3015(注意这里对应的特征向量是列向量)D=-1000200026.向量的常用函数min(x):向量x的元素的最小值max(x):向量x的元素的最大值mean(x):向量x的元素的平均值median(x):向量x的元素的中位数std(x):向量x的元素的标准差diff(x):向量x的相邻元素的差sort(x):对向量x的元素进行排序length(x):向量x的元素个数sum(x):向量x的元素总和prod(x):向量x的元素总乘积dot(x,y):向量x和y的内积第4章Matlab程序