MatLab矩阵计算

取名MATLAB即Matrix Laboratory 矩阵实验室的意思。

例如: 在MATLAB命令窗口输入命令:

a=[1,1.5,2,9,7; 0,3.6,0.5,-4,4;

7,10,-3,22,33;3,7,8.5,21,6;

3,8,0,90,-20]

将显示一个5*5矩阵。

MATLAB的数据与变量

① 命名规则

在MATLAB 6.5中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。在MATLAB中,严格区分字母的大小写。MATLAB提供的标准函数名必须用小写字母。

② 变量查询函数who与whos

作用都是列出在matlab工作空间中已经驻留的变量名清单。不同的是whos在给出驻留变量的同时,还给出他们的维数及性质. clear命令用于删除MATLAB工作空间中的变量。

③ 永久变量

在matlab工作内存中,驻留了几个由系统本身在启动时定义的变量,我们称为永久变量。永久变量用who指令是查看不到的,只可随时调用

eps — 容差变量,定义为1.0到最近浮点数的距离,在 pc机上= 2-52

pi — 圆周率的近似值3.1415926

inf或Inf — 表示正无大,定义为1/0

NaN — 非数,它产生于0× ,0/0,/ 等运算

i,j — 虚数单位

ans — 对于未赋值运算结果,自动赋给ans

1.建立矩阵

  建立矩阵可以用:直接输入法、利用函数建立矩阵和利用M文件建立矩阵。

直接输入法:

规则:

① 矩阵元素必须用[ ]括住;

② 同一行的各元素之间用空格或逗号分隔;

③ 在[ ]内矩阵的行与行之间必须用分号分隔).

利用函数建立数值矩阵:MATLAB提供了许多生成和操作矩阵的函数,可以利用它们去建立矩阵。

[ ] matlab允许输入空阵,当一项操作无结果时,返回空阵。

eye(size(A)) 产生与A矩阵同阶的单位矩阵

zeros(m,n) 产生0矩阵

ones(m,n) 产生一个元素全为1的矩阵

rand (m,n) 产生随机元素的矩阵

Size(a) 返回包含两个元素的向量

Length(a) 返回向量的最大者。

reshape(A,m,n) 返回一个m×n矩阵,且该矩阵中的元素是按照列方法从矩阵A中提取的

利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。其步骤为:

第一步:使用编辑程序输入矩阵。

第二步:把输入的内容以纯文本方式存盘, 并把文件名改为*.m。

第三步:在MATLAB命令窗口中输入文件名,就会建立一个矩阵,可供以后显示和调用。

冒号表达式

  在MATLAB中,冒号是一个重要的运算符。利用它可以产生向量,还可用来拆分矩阵。冒号表达式的一般格式是:

e1:e2:e3

其中e1为初始值,e2为步长,e3为终止值。冒号表达式可产生一个由e1开始到e3结束,以步长e2自增的行向量。

MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。

例如:  A= [1 2 3;4 5 6] 

     B=fix(pi*A)   C=cos(pi*B) D=abs(B)

自然对数 E=log(D) F=log10(E)

sqrt(x) exp(x) tan (x) ctan (x)

函数使用说明: (1) 三角函数以弧度为单位计算。 (2) abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。 (3) 用于取整的函数有fix、floor、ceil、round,要注意它们的区别。

(4)函数一定是出现在等式的右边

(5)函数允许嵌套

4.矩阵的基本运算

(1)矩阵转置 A’

(2)矩阵加和减 A+B , A-B

规则:

 相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。

 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。

(3)矩阵乘法 A*B

规则:

① A矩阵的列数必须等于B矩阵的行数

② 标量可与任何矩阵相乘。

(4)矩阵除法 A\b=inv(A)*b

在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般A\B≠B/A。

(5)矩阵的乘方 A^n , A^p

对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,A是标量A^p使用特征值和特征向量自乘到p次幂;如A,p都是矩阵,A^p则无意义。

5.矩阵数组运算

(1) 数组的乘: A.*B A,B必须同维,或其中之一为标量.

(2) 数组的左除: A.\B 将得到一个矩阵,该矩阵的元素维数组A和数组B中的每个相应元素进行B(i,j)/A(i,j)运算的结果.

(3) 数组的乘方: A.^B 以A中的元素为底,B中的相应元素为幂作乘方运算,相当于计算[A(i,j)^B(i,j)]。A,B必须同维,或其中之一为标量.

数组运算指元素对元素的算术运算,与通常意义

上的由符号表示的线性代数矩阵运算不同。

① 数组加减(.+ , .-)

a.+b

a.-b

② 数组的乘(  )

ab —— a,b两数组必须有相同的行和列两数组相应元素相乘。

a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];

a.*b

ans =

2 8 18

4 15 30

49 72 90

③ 数组的除( ./ .\ )

a./b=b.\a

a.\b=b./a

a./b=b.\a — 都是a的元素被b的对应元素除

a.\b=b./a — 都是a的元素被b的对应元素除

例: a=[1 2 3];b=[4 5 6]; c1=a.\b; c2=b./a

c1 = 4.0000 2.5000 2.0000

c2 = 4.0000 2.5000 2.0000

④ 数组乘方(.^) — 元素对元素的幂

例:

a=[1 2 3];b=[4 5 6];

z=a.^2

z =

1.00 4.00 9.00

z=a.^b

z =

1.00 32.00 729.00

6、字符串

在MATLAB中,字符串是用单撇号括起来的字符序列。MATLAB将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。

字符串是以ASCII码形式存储的。abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码矩阵转换为字符串矩阵。

与字符串有关的另一个重要函数是eval,其调用格式为: eval(t) 其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。

【例1】 求解线性方程组AX=B

   1 1.5 2 9 7 3

   0 3.6 0.5 -4 4 -4

其中A= 7 10 -3 22 33 , B= 20

   3 7 8.5 21 6 5

   3 8 0 90 -20 16

在MATLAB命令窗口输入命令:

a=[1,1.5,2,9,7,0;0,3.6,0.5,-4,4,0;

7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20];

b=[3;-4;20;5;16];

x=a\b

得到的结果是:x =3.5653

-0.9255

-0.2695

0.1435

0.0101

或者x=inv(a)*b

【例2】 求方程 x4+7x3 +9x-20=0的全部根。

在MATLAB命令窗口输入:

p=[1,7,0,9,-20]; %建立多项式系数向量

x=roots(p) %求根

得到的结果是:

x =

-7.2254

-0.4286 + 1.5405i

-0.4286 - 1.5405i

1.0826