1.67k likes | 1.85k Views
MATLAB 与科å¦è®¡ç®—. 一ã€å‰è¨€. MATLAB : matrix laboratory 的缩写,矩阵实验室的æ„æ€ã€‚一开始它是一ç§ä¸“门用于矩阵数值计算的软件。自 MATLAB4.0 版本问世以æ¥ï¼Œè¯¥è½¯ä»¶æˆä¸ºæœ€å…·æœ‰å¸å¼•åŠ›ï¼Œåº”用最为广泛的科å¦è®¡ç®—è¯è¨€ã€‚我们这个课就拿 MATLAB6.1 版本æ¥è®²ã€‚( 6.x 版本大åŒå°å¼‚). å¦ä¹ 该软件的必è¦æ€§ï¼š ç›®å‰ï¼Œ MATLAB 软件ä¸ä»…èµ°å…¥ä¼ä¸šã€å…¬å¸å’Œç§‘ç ”æœºæž„ï¼Œè€Œä¸”åœ¨é«˜ç‰é™¢æ ¡ä¹Ÿæ˜¯ä»Žå¤§å¦ç”Ÿåˆ°åšå£«ç”Ÿéƒ½å¿…须掌æ¡çš„一项基本技能,是必ä¸å¯å°‘的计算工具,。 MATLAB 功能: 数值计算ã€ç¬¦å·è¿ç®—和图形处ç†ã€‚.
E N D
一、前言 • MATLAB:matrix laboratory的缩写,矩阵实验室的意思。一开始它是一种专门用于矩阵数值计算的软件。自MATLAB4.0版本问世以来,该软件成为最具有吸引力,应用最为广泛的科学计算语言。我们这个课就拿MATLAB6.1版本来讲。(6.x版本大同小异)
学习该软件的必要性:目前,MATLAB软件不仅走入企业、公司和科研机构,而且在高等院校也是从大学生到博士生都必须掌握的一项基本技能,是必不可少的计算工具,。学习该软件的必要性:目前,MATLAB软件不仅走入企业、公司和科研机构,而且在高等院校也是从大学生到博士生都必须掌握的一项基本技能,是必不可少的计算工具,。 • MATLAB功能:数值计算、符号运算和图形处理。
学习它的意义:随着计算机科学和计算软件的发展,数学系学生必须掌握一门好的计算软件。这是我们就业、继续身造或做科研工作所要用到的。是当代大学生必备的一项技能。学习它的意义:随着计算机科学和计算软件的发展,数学系学生必须掌握一门好的计算软件。这是我们就业、继续身造或做科研工作所要用到的。是当代大学生必备的一项技能。
其它计算软件:MATHEMATIC(数学分析问题的计算);IDL(航天、控制),FOETRAN、BASIC(科学计算)。可以说一个人掌握了一门计算软件,再学习其它计算软件很容易。其它计算软件:MATHEMATIC(数学分析问题的计算);IDL(航天、控制),FOETRAN、BASIC(科学计算)。可以说一个人掌握了一门计算软件,再学习其它计算软件很容易。
MATLAB桌面平台: (1)主窗口:整个大的窗口(其它几个窗口都包括在其中) (2)命令窗口(command window):》为运算提示符,表示MATLAB在准备状态。当在提示符后输入一段运算式并按回车键后,就给出计算结果
(3)历史窗口(command history):保留命令历史记录,这方便于使用者查询。双击历史窗口中的某一行命令,即可在命令窗口中执行该命令。
(4)当前目录窗口(current directory):在当前目录窗口中可显示或改变当前目录,也可以显示当前目录下的文件,并提供搜索功能。
(5)发行说明书窗口(launch pad):用来说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。 (6)工作间管理窗口(workspace):显示目前内存中所有的MATLAB变量的变量名、数学结构、字节数及其类型。
命令窗口查询帮助:help+函数名,当用户知道函数名字,而不知道其用法时,用help命令可以去了解此函数的用法。命令窗口查询帮助:help+函数名,当用户知道函数名字,而不知道其用法时,用help命令可以去了解此函数的用法。 如:help inv
MATLAB标点的含义: (1)分号;……区分行以及取消运行显示等。例: A=[1,2;3,4]与A=[1,2;3,4];的区别。 (2) 逗号,……区分列及函数参数分隔符等。例:=[1,2;3,4] ,B=[1,4,3;3,2,1;4,5,6]
(3)小括号():指定运算过程的先后次序等。例:(3)小括号():指定运算过程的先后次序等。例: x=0.5; y=sin(x)/(2+cos(x)) z= sin(x)/2+cos(x) (4)方括号[ ]:矩阵定义标志等。见上。
(5)续行号…:例: y=sin(x)/(2+cos(x)) 也可写为 y=sin(x)… /(2+cos(x))
(6)百分号%:注释标记,该行%以后的语句不执行。例(6)百分号%:注释标记,该行%以后的语句不执行。例 %线性规划程序 %a=0.5; b=sin(x);%正弦函数
(6)等号=:赋值标记。见上。 (7)单引号’’:字符串表示符,单引号里面的内容为字符串。单引号一定在英文状态下输入例: a='xingtai college' (8)冒号’:’:有多种应用功能,学习过程中注意。如:选取矩阵的所有行、列;矩阵定义
二、数值计算 变量:MATLAB语言不需要对所使用的变量进行事先声明,也不需要指定其类型,它会自动根据所赋予变量的值或所进行的操作来确定变量的类型。如果变量重新赋值将会用新值代替旧值。如: a=1 b=0.5 c=a*b c=3
变量命名的规则: (1)变量名区分大小写; (2)变量名长度不能超过31位; (3)必须以字母开头,变量名中可包含字母、数字、下划线,但不能使用标点。
常量:MATLAB中有些预定义的变量,这些特殊的变量称为常量。常用到的有:常量:MATLAB中有些预定义的变量,这些特殊的变量称为常量。常用到的有: i,j: 虚数单位; pi: π; NaN: 表示不定值,比如0/0; inf: 无穷大(infinit),比如1/0。
算术操作符: +、-:加,减;可以通用。 *,^,\ , / :分别为矩阵乘,乘方,左除,右除; .*, .^ , .\ , ./ :分别为数组乘,乘方,左除,右除;此时向量的运算不会满足矩阵的运算法则。注意矩阵的加点运算结果。
如: a1=2; a2=[1,2,3,4]; b2=[4,3,2,1]; a1+a2 a1-a2 a2-a1 a1*a2
a1./a2 %a1/a2是错误的写法 a1.\a2 a2-b2 a2+b2 a2.*b2 %a2*b2是错误的写法 a2./b2 b2./a2 a2.\b2
例 已知水的黏度随温度的变化公式为 μ=μ0/(1+at+bt2)其中μ0=1.785×10-3, a=0.03368,b=0.000221, 求水在0,20,40,80℃时的黏度。 程序如下:
miu0=1.785e-3; a=0.03368; b=0.000221; t=0:20:80 miu=miu0./(1+a*t+b*t.^2) 运行后的结果为 : miu = 0.0018 0.0010 0.0007 0.0005 0.0003
字符串: 字符串的约定(1)字符串用单引号括起来;(2)字符串的每个每个字符(包括空格)都是字符数组的一个元素. 例 s=‘xingtai college’ f=‘sin(x)’ 是字符串(char array)
向量的生成: (1)直接输入:如a=[1,2,5,3] (2) 利用冒号表达式生成:如:b=[2:2:10],此时[ ]可省略,步长为1时,步长可省略。第一个数为首元素的值,第2个数为步长或差值,第三个数为尾元素的限值,不能超过这个值。如b=2;2:11等价于b=[2:2:10]
(3)线性等份向量生成:y=linspace(x1,x2,n),生成n维向量,使得y(1)=x1,y(n)=x2。如:y=linspace(1,100,6)。(3)线性等份向量生成:y=linspace(x1,x2,n),生成n维向量,使得y(1)=x1,y(n)=x2。如:y=linspace(1,100,6)。 • 向量的基本运算 (1)向量的加减:用+、-。同维向量才可以加、减。相应元素加减
(2)向量与数可以加、减。用+、-。数与向量的每个元素进行作用。(2)向量与数可以加、减。用+、-。数与向量的每个元素进行作用。 (3)向量与数可以相乘。用*。 (4)向量与数可以相除。向量/数,数./向量。 (5)两个向量点积。必须是同维向量。用dot(a,b)。
(6)两个向量叉积。cross(a,b),a,b必须有是3维且次序不能颠倒,。(6)两个向量叉积。cross(a,b),a,b必须有是3维且次序不能颠倒,。 (7)混合积。由以上两个函数实现。dot(a,cross(b,c)) • 矩阵的生成: (1)直接输入:如:a=[1,3,4;4,3,2].
(2)创建M文件输入大矩阵:当矩阵很大时,直接输入显得很笨,出错不易修改.我们可以编写一个M文件,M文件的扩展名必须是m.(2)创建M文件输入大矩阵:当矩阵很大时,直接输入显得很笨,出错不易修改.我们可以编写一个M文件,M文件的扩展名必须是m. 例 编写一个名为matrix.m(名字自己随便起)的M文件如下: %matrix.m
mat=[1,2,3,3;3,4,5,1;3,2,1,4;8,9,7,5] 在命令窗口中输入matrix,就会运行该文件.查看矩阵的结构可用size(mat).
矩阵运算: (1) +、-、*:加、减、乘运算。 (2)矩阵的除法有两种形式:左除“\”和右除‘/’.右除是先计算逆再做乘法;而左除不计算逆直接进行除法运算,这样可避免奇异矩阵无法求逆带来的麻烦.
如:A=[1,2,3,2;3,2, 4,1;3,1,5,6;2,5,3,2], b=[1;3;2;1],求方程组Ax=b的解.由于rank(A)=rank(B)=4(B为增广矩阵),所以有唯一解,x=A\b,或x=inv(A)*b.
又如: A=[361,625,961,1444,1936;1,1,1,1,1], b=[1;1]‘,求方程组Ax=b的解.由于rank(A)=rank(B)=2(B为增广矩阵),所以有无穷多个解,MATLAB中用除法解方程组时所得到的解是所有解中范数最小的一个x=A\b。
(3)矩阵与常数间的运算:+、-、*运算是数与矩阵的每个元素进行运算,除法运算,只能常数做除数。(3)矩阵与常数间的运算:+、-、*运算是数与矩阵的每个元素进行运算,除法运算,只能常数做除数。 (4)矩阵求逆:inv(A)为A的逆(inverse).
(5)求转置矩阵:A'. (6)求矩阵的行列式:det(A) ,(determinant是行列式)。 (7)矩阵幂运算:用^.如A^3,表示A*A*A。 (8)矩阵指数运算:expm(A),A为方阵。
(9)矩阵对数运算:logm(A),A为方阵。 如:a=rand(3); %成生一个3阶随机矩阵 b=expm(a) c=logm(b)
(10)矩阵开方:sqrtm(a). (11)求矩阵呢的秩:rank(a). • 特殊矩阵的生成: (1)zeros(n):生成 n×n阶0矩阵。 (2)zeros(m,n):生成 m×n阶0矩阵。 (3)zeros(size(a)):生成与a阶数相同的0矩阵。
(4) eye(n):生成 n阶单位矩阵。 (5) eye(m,n):生成 m×n阶单位矩阵。 (6) eye(size(a)):生成与a阶数相同的单位矩阵。 (7) ones(n):生成 n阶全1矩阵。 (8) ones(m,n):生成 m×n阶全1矩阵。
(9) ones(size(a)):生成与a阶数相同的全1矩阵。 (10)rand(n):生成 n×n阶随机矩阵,其元素值在0和1之间。 (11)rand(m,n):生成 m×n阶随机矩阵。 (12)rand:生成一个随机数。
(13)rand(size(a)):生成与a阶数相同的随机矩阵。(13)rand(size(a)):生成与a阶数相同的随机矩阵。 • 矩阵的特殊操作: (1)变维操作reshape(a,m,n):把矩阵a变成n×n阶矩阵。如 a=1:12,reshape(a,2,6), reshape(a,3,4)。注意变维操作要保证元素个数一致。
例 s=1:12; c=zeros(3,4); c(:)=s(:); %符号“:”表示变维操作,这两个矩阵必须预先定义维数,结果c取的是s的元素。
(2)对角元素抽取diag(a,k)(注:diagonal为对角线的意思):抽取矩阵a的第k条对角线的元素作为向量,k=0 时为主对角线,k为正值时为上方第k条对角线, k为负值时为下方第k条对角线。 diag(a)相当于diag(a,0).例 a=rand(3); v=diag(a)
说明:如果b是一个向量,则diag(b)为对角矩阵,其对角线元素为b的元素。如:b=1:3,diag(b).说明:如果b是一个向量,则diag(b)为对角矩阵,其对角线元素为b的元素。如:b=1:3,diag(b). (3)tril(a) (注:triangle low):提取矩a的主下三角。 (4)tril(a,k):提取矩a的第k条对角线下面部分。 k=0 时为主对角线,k为正值时为上方第k条对角线, k为负值时为下方第k条对角线。
(5)triu(a,k) (注:triangle up) :提取矩a的第k条对角线上面部分。 • 逻辑运算符: (1)= =:等于。 (2)~=:不等于。 (3)〈:小于。 (4)〉:大于。
(5)〈=:小于等于。 (6)〉=:大于等于。 (7)&:逻辑与。 (8)|:逻辑或。 (9)~:逻辑非。
说明: ①在关系比较中,若双方为同维数组(矩阵),则比较的结果也是同维数组(矩阵)。它们的元素有0和1组成。对应位置上的元素满足比较关系时为1,否则为0。当常数与数组(矩阵)比较时,结果与数组(矩阵)同维,其值依次为常数与数组元素依次比较的结果。例:
a=[1:3;4:6;7:9] x=5 y=x<=a 运行结果 y = 0 0 0 0 1 1 1 1 1
②逻辑运算的意义是: 与:当运算双方的对应元素值都为非0时,结果为1,否则为0; 或:当运算双方的对应元素值有一非0时,结果为1,否则为0; 非:当运算数组(矩阵)的对应位置上的元素值为0时,结果为1,否则为0。例
a=[1,2;3,2]; b=[0,1;3,0]; d=a&b e=a|b f= ~b ③算术运算、比较运算、逻辑与或非运算的优先级:先比较运算、再算术运算、最后逻辑与或非运算。
常用的一些函数(直接调用): sin(x):正弦函数(sine);例: x=-pi:0.1:pi;y=sin(x);plot(x,y) asin(x):反正弦函数(anti-sine); cos(x):余弦函数(cosine); acos(x):反余弦函数(anti-cosine); tan(x):正切函数(tangent);