zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    javascript的this
    javascript里的prototype
    【每天进步一点点 Python 】Python 字典(Dictionary) items()方法 用法
    【每天进步一点点--Python】字典dic类型 转换成 str 类型 json.dumps()
    【每天进步一点点
    【每天get 一点新知识】Python print 打印结果(字符串类型)前面添加 说明
    【每天get 到一点小知识】python 取response data 里面的数据
    【python web 开发】第三方登录开发模式及Oauth2.0 简介
    每天一个小程序:读取txt文件存储到excel 表中(2)
    每天一个小程序:读取txt文件存储到excel 表中
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2717427.html
Copyright © 2011-2022 走看看