• 01 MATLAB基本概念


    基本概念

    整数类型

    • 相同整数类型相乘还是整数
    • 整数与浮点数相乘是这种整数类型
    • 不同整数类型不能相乘,除非强制类型转换

    整数与整数相乘:

    >> x = uint32(120);
    >> y = uint32(5);
    >> z = x * y
    z =
             600
    >> whos
      Name      Size            Bytes  Class     Attributes
    
      x         1x1                 4  uint32              
      y         1x1                 4  uint32              
      z         1x1                 4  uint32   
    

    整数与浮点数相乘:

    >> z = x * 1.2
    z =
             144
    >> whos
      Name      Size            Bytes  Class     Attributes
    
      x         1x1                 4  uint32              
      z         1x1                 4  uint32  
    

    浮点类型

    分为单精度和双精度 MATLAB中默认的数值类型为双精度浮点类型

    >> x = 100
    x =
       100
    >> whos
      Name      Size            Bytes  Class     Attributes
    
      x         1x1                 8  double  
    

    注意:
    双精度:

    • 与逻辑型、字符型进行运算时,返回结果为双精度浮点型
    • 与整数运算时返回整数类型
    • 与单精度运算时,返回单精度

    单精度

    • 与逻辑型、字符型运算时返回单精度
    • 不能与整数类型进行运算
    >> x = single(1.2)
    x =
        1.2000
    >> y = uint8(10)
    y =
       10
    >> z = x * y
    错误使用  .* 
    整数只能与相同类的整数或标量双精度值组合使用。
    

    复数

    real(z)          %返回z的实部  
    imag(z)        %返回z的虚部
    abs(z)          %返回z的幅度
    angle(z)       %返回z的相角
    conj(z)         %返回z的共轭
    complex(a,b)   %以a为实部,b为虚部生成复数a + jb
    
    x = 1 + 2i
    real(x)
    imag(x)
    abs(x)
    angle(x)
    conj(x)
    complex(1,2)
    
    x =
       1.0000 + 2.0000i
    ans =
         1
    ans =
         2
    ans =
        2.2361
    ans =
        1.1071
    ans =
       1.0000 - 2.0000i
    ans =
       1.0000 + 2.0000i
    

    无穷量(Inf)与非数值量(NaN)

    • Inf:0做了分母或者超出了双精度浮点数的表示范围
    • NaN(Not a Number):0/0或者Inf/Inf等非正常运算产生的
      • 两个NaN是不相等的
    >> 1/0
    ans =
       Inf
    >> log(0)
    ans =
      -Inf
    >> 0/0
    ans =
       NaN
    

    数值的显示格式

    format short       %5位定点显示格式,为MATLAB的默认显示格式
    format short e     %5位科学计数法显示
    format long
    format long e      %15位
    format bank        %保留两位小数
    format rat            %有理分数的近似显示
    
    >> x = 1.2
    x =
        1.2000
    >> format long
    >> x
    x =
       1.200000000000000
    >> format bank
    >> x
    x =
              1.20
    >> format rat
    >> x
    x =
           6/5     
    >> format short
    >> x
    x =
        1.2000
    

    format只改变数值的显示格式,数值运算不受影响,按双精度浮点运算进行

    确定数值类型的函数

    calss(A)                      %返回A的类型名称
    isa(A,'class_name')     %判断A是否为calss_name类型
    isnumeric(A)               %判断A是否为一个数值类型
    isinteger(A)                 %是否为整数
    isfloat(A)                     %是否为浮点类型
    isreal(A)                      %是否为实数
    isnan(A)                      %是否为NaN型
    isInf(A)                       %是否为无穷量
    isfinite(A)                   %是否有限
    

    常见常量

    i或j         %虚数单位
    pi            %圆周率
    eps          %浮点数的最小分辨率,当某数的绝对值小于次量是认为为0,
    realmin   %最小浮点数,2^-1022
    realmax   %最大浮点数,2^1023
    

    字符串

    字符串在MATLAB中用单引号标示的,字符串的存储是按字符串中的字符单个存储的,存储的是它们各自的ASCII码值,字符串可以看做是一个字符数组。

    运算符

    算术运算符

    矩阵算术运算符

    运算符 说明
    + 矩阵加法
    - 矩阵减法
    * 矩阵乘法
    / 右除 X * B = A 的解,即X = A/B
    左除A * X = B的解,即X = AB
    ^ 乘幂
    ' 矩阵共轭
    >> A = [1 2;3 4]
    A =
         1     2
         3     4
    >> B = [5 6;7 8]
    B =
         5     6
         7     8
    >> C = A*B
    C =
        19    22
        43    50
    >> C = A + B
    C =
         6     8
        10    12
    >> C = A - B
    C =
        -4    -4
        -4    -4
    >> C = A/B
    C =
        3.0000   -2.0000
        2.0000   -1.0000
    >> C = AB
    C =
        -3    -4
         4     5
    >> C = A'
    C =
         1     3
         2     4
    

    数组算术运算符

    由于数组的加法和减法与矩阵相同,所以不多加赘述,矩阵的运算就是线代书定义的那样,是把矩阵看做是一个整体单位,而两个数组的运算是两数组相应位置上元素的运算

    运算符 说明
    .* 数组乘法,C = A .* B C(i,j)=A(i,j)*B(i,j)
    ./ 数组右除,C = A ./ B C(i,j)=A(i,j)/B(i,j)
    . 数组左除,C = A . B C(i,j) = B(i,j)/A(i,j)
    .^ 数组乘幂,C=A .^ B C(i,j)=A(i,j) ^B(i,j)
    .' 将数组进行转置,复数元素不做共轭
    >> A
    A =
         1     2
         3     4
    >> B
    B =
         5     6
         7     8
    >> C = A .* B
    C =
         5    12
        21    32
    >> C = A ./ B
    C =
        0.2000    0.3333
        0.4286    0.5000
    >> C = A . B
    C =
        5.0000    3.0000
        2.3333    2.0000
    >> C = A .^ B
    C =
               1          64
            2187       65536
    >> C = A.'
    C =
         1     3
         2     4
    

    二维数组的表示在表示上与矩阵是一样的,所以在形式上无法区分,不同是他们之间的运算有所不同

    关系运算符

    运算符 示例
    < A < B
    <= A <= B
    > A > B
    >= A >= B
    == A == B
    ~= A ~= B
    1. A、B都是标量,结果是1或0的标量,A>B则为1;反之为0。
    2. A、B若有一个为标量,另一个为数组,则将标量与数组各元素比较,产生一个与运算数组行列相同的数组,数组元素或0或1。
    3. A、B均为数组时,A、B的行列必须相同,A、B数组的对应元素进行比较,产生一个与运算数组同规模的数组,数组元素或0或1。
    4. == 和 ~=对参与比较的量同时比较实部和虚部,其他运算只比较实部。
    >> A
    A =
         1     2
         3     4
    >> B
    B =
         5     6
         7     8
    
    
    C = 2 == 3    %标量之间的比较
    C = A > 2     %标量与数组的比较
    C = A > B     %数组之间的比较
    
    C =
         0
    C =
         0     0
         1     1
    C =
         0     0
         0     0
    

    说明:

    • 关系运算虽然看做是矩阵的关系运算,但看做数组运算更加合理,因为关系运算时一对一的运算结果。

    逻辑运算符

    运算符 名称
    &
    |
    ~
    && 先决与
    || 先决或

    具体用法其实与关系运算符的法则一样

    >> C = (A < B)&(A ~= B)
    C =
         1     1
         1     1
    

    说明:

    • 先决与,只要运算符的左边为1才继续与该符号右边的量做逻辑运算
    • 先决或,当运算符左边为1时,就不需继续与该符号右边的量做逻辑运算,直接得出结果为真
    • 先决与、先决或只是针对标量的运算
  • 相关阅读:
    反射
    ASP.NET
    解析命令行
    Private和Protected方法
    洗牌算法
    目标指向、Icon图标的错误
    数字签名与数字证书
    (Java实现) 最大团问题 部落卫队
    (Java实现) 最大团问题 部落卫队
    (Java实现)洛谷 P1164 小A点菜
  • 原文地址:https://www.cnblogs.com/LastKnight/p/10923087.html
Copyright © 2020-2023  润新知