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

上一篇:花括号操作符重载


下一篇:IIS 6.0排错实战: 解决HTTP 500错误