您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > Matlab基础与数学建模
Matlab与数学建模Matlab简介1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版。与4.x相比,现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。发展至今,MatlabR2010版已经问世Matlab简介Matlab简介Matlab软件主要由三部分组成:Matlab主包,Simulink和工具箱Matlab软件的组成第1章矩阵及其基本运算1.实数值矩阵输入MATLAB的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如:1)Time=[111212345678910]Time=1112123456789102)A=[123;234;345]A=1232343453)Null_M=[]%生成一个空矩阵4)A=[[A;[123]],[1;2;3;4]]特殊矩阵的生成命令全零阵函数zeros格式B=zeros(n)%生成n×n全零阵B=zeros(m,n)%生成m×n全零阵B=zeros([mn])%生成m×n全零阵B=zeros(size(A))%生成与矩阵A相同大小的全零阵命令单位阵函数eye格式Y=eye(n)%生成n×n单位阵Y=eye(m,n)%生成m×n单位阵Y=eye(size(A))%生成与矩阵A相同大小的单位阵命令均匀分布随机矩阵函数rand格式Y=rand(n)%生成n×n随机矩阵,其元素在(0,1)内Y=rand(m,n)%生成m×n随机矩阵命令全1阵函数ones格式Y=ones(n)%生成n×n全1阵Y=ones(m,n)%生成m×n全1阵Y=ones([mn])%生成m×n全1阵Y=ones(size(A))%生成与矩阵A相同大小的全1阵思考:如何产生20至50间的随机数?向量生成方法2.定数线性采样法该采样法在给定的范围内确定等距离的一个样本数。该方法很实用,特别适合定义大的数组例如:在之间取5个点(,)linspace(-pi,pi,5)3.利用随机数发生器定义一维数组例如:产生5个(0,1)均匀分布随机数,并定义一维数组x。x=rand(1,5)Matlab常用命令Matlab常用命令若要检视现存於工作空间(Workspace)的变数,可键入who:whoYourvariablesare:testfilex这些是由使用者定义的变数。若要知道这些变数的详细资料,可键入:whosNameSizeBytesClassA2x464doublearrayB4x264doublearrayans1x18doublearrayx1x18doublearrayy1x18doublearrayz1x18doublearrayGrandtotalis20elementsusing160bytes使用clear可以删除工作空间的变数:clearAA???Undefinedfunctionorvariable'A'.Matlab常用命令应用变量与常量变量是任何程序设计语言的基本要素之一,MATLAB语言当然也不例外。与常规的程序设计语言不同的MATLAB并不要求事先对所使用的变量进行声明,也不需要指定变量类型,MATLAB语言会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中如果赋值变量已存在时,MATLAB语言将使用新值代替旧值,并以新值类型代替旧值类型。在MATLAB语言中变量的命名应遵循如下规则:(1)变量名区分大小写。(2)变量名长度不超31位,第31个字符之后的字符将被MATLAB语言所忽略。(3)变量名以字母开头,可以是字母、数字、下划线组成,但不能使用标点。与其他的程序设计语言相同,在MATLAB语言中也存在变量作用域的问题。在未加特殊说明的情况下,MATLAB语言将所识别的一切变量视为局部变量,即仅在其使用的M文件内有效。若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global。一般来说全局变量均用大写的英文字符表示。MATLAB语言本身也具有一些预定义的变量,这些特殊的变量称为常量。另外MATLAB有些永久常数(Permanentconstants),虽然在工作空间中看不到,但使用者可直接取用,例如:pians=3.1416===============================================下表即为MATLAB常用到的永久常数。小整理:MATLAB的永久常数i或j:基本虚数单位(即)eps:系统的浮点(Floating-point)精确度inf:无限大,例如1/0nan或NaN:非数值(Notanumber),例如0/0pi:圆周率p(=3.1415926...)realmax:系统所能表示的最大数值realmin:系统所能表示的最小数值nargin:函数的输入引数个数nargout:函数的输出引数个数特别注意作出泊松分布的密度图形x=0:20;y=poisspdf(x,5);stem(x,y)0246810121416182000.020.040.060.080.10.120.140.160.18将硬盘的数据读入变量现在有一组数据保存在three.xls文件中,要在Matlab中读入这组数据a=xlsread(‘e:\three.xls’)如果保存在文件soil.txt中只要输入a=load(‘e:\soil.txt’)矩阵的简单运算结果显示:A+B=92747105128A-B=-70-5-2-3-4-3-64运算符:“+”和“-”分别为加、减运算符。运算规则:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。加、减运算例A=[1,1,1;1,2,3;1,3,6]B=[8,1,6;3,5,7;4,9,2]A+B=A+BA-B=A-B运算符:*运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。1.两个矩阵相乘乘法例X=[2345;1221];Y=[011;110;001;100];Z=X*Y结果显示为:Z=856333上例中:a=2*X则显示:a=468102442矩阵的数乘:数乘矩阵维数相同的两个向量的点乘。数组乘法:A.*B表示A与B对应元素相乘。向量的点乘(内积)需要注意的是点乘与矩阵的乘法是有区别的例:a=[123;426;749]b=[4;1;2];x=a\b则显示:x=-1.50002.00000.5000如果a为非奇异矩阵,则a\b和b/a可通过a的逆矩阵与b阵得到:a\b=inv(a)*bb/a=b*inv(a)数组除法:A./B表示A中元素与B中元素对应相除。矩阵除法Matlab提供了两种除法运算:左除(\)和右除(/)。一般情况下,x=a\b是方程a*x=b的解,而x=b/a是方程x*a=b的解。同样此时也要注意除法和点除之间的区别运算符:^运算规则:(1)当A为方阵,P为大于0的整数时,A^P表示A的P次方,即A自乘P次;P为小于0的整数时,A^P表示A-1的P次方。(4)标量的数组乘方P.^A,标量的数组乘方定义为数组乘方:A.^P:表示A的每个元素的P次乘方。矩阵乘方矩阵的乘方要求矩阵A是方阵例A=[123;456;789]A=123456789D=det(A)D=0运算符:′运算规则:若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。若仅希望转置,则用如下命令:A.′。矩阵转置方阵的行列式函数det格式d=det(X)%返回方阵X的行列式的值函数inv格式Y=inv(X)%求方阵X的逆矩阵。若X为奇异阵或近似奇异阵,将给出警告信息。例1-43求的逆矩阵方法一A=[123;221;343];Y=inv(A)或Y=A^(-1)则结果显示为Y=1.00003.0000-2.0000-1.5000-3.00002.50001.00001.0000-1.0000方法二:由增广矩阵进行初等行变换B=[1,2,3,1,0,0;2,2,1,0,1,0;3,4,3,0,0,1];C=rref(B)%化行最简形X=C(:,4:6)%取矩阵C中的A^(-1)部分矩阵求逆命令逆子矩阵的提取和运算使用命令:B=A(v1,v2),其中,v1向量表示子矩阵要包含的行号构成的向量,v2表示要包含的列号构成的向量。若v1为:,则表示要提取所有的行,同样使用列号。关键词end表示最后一行(或列)例如:B1=A(1:2:end,:)表示提取A矩阵的全部奇数行、所有列B2=A([3,2,1],[2,3,4])表示提取A矩阵3,2,1行、2,3,4列构成子矩阵。B3=A(:,end:-1:1)表示将A矩阵左右翻转,即最后一列排在最前面。A(:,2)=[]%删除第二列(:代表所有行)例A=123456789101112我们可以对矩阵进行各种处理:A(2,3)=5%改变位於第二列,第三行的元素值A=123456589101112B=A(2,1:3)%取出部份矩阵BB=565A=[AB']%将B转置後以行向量并入AA=123455658691011125A=[A;4321]%加入第四行A=134555869111254321A([14],:)=[]%删除第一和第四行(:代表所有列)A=5586911125数组操作函数Repmat(D,1,3)命令:在水平方向“铺放”三个矩阵D=100010001则Repmat(D,1,3)结果为ans=100100100010010010001001001Diag(A,1)命令:对矩阵A取第一上对角元素可运行diag(A,-1),查看运行结果Triu(A)命令:取A的上三角阵;tril(A)命令:取A的下三角阵矩阵的逻辑运算矩阵的比较运算:用==表示等于关系,用=表示大于等于关系,用~=表示不等于关系等。A=[123;4,5,6;7,8,0]Find(A=5)找出矩阵中元素大于等于5的下标ans=3568该函数先将A按列构成列向量,然后判断哪些元素大于等于5,返回其下标。[i,j]=find(A=5);[i,j]同时返回行和列坐标all(A=5)判断A矩阵的某列元素是否全部大于等于5,是返回1,否则为0any(A=5)你能猜测表示什么含义吗?abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phaseangle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示rats(x):将实数x化为多项分数展开sign(x):符号函数(Signumfunction)。当x0时,sign(x)=-1;当x=0时,sign(x)=0;当x0时,sign(x)=1。rem(x,y):求x除以y的馀数gcd(x,y):整数x和y的最大公因数lcm(x,y):整数x和y的最小公倍数MATLAB常用的基本数学函数第2章绘图与图形处理命令1plot功能线性二维图。在线条多于一条时,若用户没有指定使用颜色,则plot循环使用由当前坐标轴颜
本文标题:Matlab基础与数学建模
链接地址:https://www.777doc.com/doc-3175634 .html