我是靠谱客的博主 彪壮板凳,最近开发中收集的这篇文章主要介绍Matlab学习第二部分:矩阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、矩阵运算

1、矩阵的算数运算

加、减、乘、除(左除、右除)、乘方

1.1 矩阵的加减

运算符:A±B

注意:加减要求矩阵的阶数相同

检查矩阵阶数的语句:

  • [i,j]=size(A)

  • I=length(A)

1.2 矩阵的乘法运算

运算符:A*B

注意:要求A的列数和B的行数(内阶数)相同。

1.3 矩阵的出发运算

左除:AB

右除:B/A

注意:左除时要求两个矩阵的行数要相等;右除时要求两个矩阵的列数必须相等

1.4 矩阵的乘方运算

运算符:矩阵^幂次

1.5 示例

 >> A=[1 2; 3 4];
 >> B=[1 1; 2 2];
 >> y1=A+B
 ​
 y1 =
 ​
      2     3
      5     6
 ​
 >> y2=A-B
 ​
 y2 =
 ​
      0     1
      1     2
 ​
 >> y3=A*B
 ​
 y3 =
 ​
      5     5
     11    11
 ​
 >> y4=AB
 ​
 y4 =
 ​
          0         0
     0.5000    0.5000
 ​
 >> y5=B/A
 ​
 y5 =
 ​
    -0.5000    0.5000
    -1.0000    1.0000
 ​
 >> y6=A^2
 ​
 y6 =
 ​
      7    10
     15    22

2、矩阵的点(元素群)运算

矩阵中对应位置元素进行相关运算。要求参加运算的矩阵必须是同阶的。即行、列数必须相等

运算符:在矩阵运算的基本运算符前加上“.”即可

点乘:.*

点左除:. ./

点乘方:.^

 >> A=[1 2; 3 4];
 >> B=[1 1; 2 2];
 >> y7=A.*B
 ​
 y7 =
 ​
      1     2
      6     8
 ​
 >> y8=A.B
 ​
 y8 =
 ​
     1.0000    0.5000
     0.6667    0.5000
 ​
 >> y9=B./A
 ​
 y9 =
 ​
     1.0000    0.5000
     0.6667    0.5000
 ​
 >> y10=A.*B
 ​
 y10 =
 ​
      1     2
      6     8

3、矩阵的关系运算

关系运算符:<,<=,>,>=,=,~=

运算结果:真(1),假(0)

运算法则:

  1. 标量比较:直接比较数的大小

  2. 矩阵比较:矩阵对应位置的元素进行标量比较,最终结果为一个由0和1组成的、与原矩阵同阶数的矩阵,

 >> A=magic(3)
 ​
 A =
 ​
      8     1     6
      3     5     7
      4     9     2
 ​
 >> P=rem(A,3)==0
 ​
 P =
 ​
   3×3 logical 数组
 ​
    0   0   1
    1   0   0
    0   1   0

4、矩阵的逻辑运算

逻辑运算符:非(~)>与(&)>或(|)

针对二进制数的逻辑运算

 >> A=magic(3)
 ​
 A =
 ​
      8     1     6
      3     5     7
      4     9     2
 ​
 >> P=rem(A,3)==0
 ​
 P =
 ​
   3×3 logical 数组
 ​
    0   0   1
    1   0   0
    0   1   0
 ​
 >> U=P|~P
 ​
 U =
 ​
   3×3 logical 数组
 ​
    1   1   1
    1   1   1
    1   1   1
 ​
 >> all(P)       #全为真,按列运算
 ​
 ans =
 ​
   1×3 logical 数组
 ​
    0   0   0
 ​
 >> all(U)
 ​
 ans =
 ​
   1×3 logical 数组
 ​
    1   1   1
 ​
 >> any(P)       #不全为假,按列运算
 ​
 ans =
 ​
   1×3 logical 数组
 ​
    1   1   1

all():矩阵的一列全为真时,输出1

any():矩阵的一列不全为假(只要有一个1),输出1

二、矩阵的元素处理

1、矩阵元素的取整

  • 按正无穷+∞方向取整:ceil()

  • 按负无穷-∞方向取整:floor()

  • 四舍五入取整:round()

  • 截尾取整:fix() 直接略去小数部分

>> A=[-1.2 -3.4 -5.4;3 6 9;5.2 4.5 4.8]

A =

   -1.2000   -3.4000   -5.4000
    3.0000    6.0000    9.0000
    5.2000    4.5000    4.8000

>> A_f=floor(A)

A_f =

    -2    -4    -6
     3     6     9
     5     4     4

>> A_c=ceil(A)

A_c =

    -1    -3    -5
     3     6     9
     6     5     5

>> A_r=round(A)

A_r =

    -1    -3    -5
     3     6     9
     5     5     5

>> A_fix=fix(A)

A_fix =

    -1    -3    -5
     3     6     9
     5     4     4

2、矩阵元素的取模和取余

  • mod(x,y) 取模

  • rem(x,y) 取余

这两者均为取余函数,区别在于:当x和y的正负号相同的时候,两个函数的结果相同,均为x除以y的余数,当x和y的正负号不同时,rem函数结果的符号与x相同,而mod函数结果的符号与y相同。

>> a1=mod(-8,3)

a1 =

     1

>> a1=mod(8,-3)

a1 =

    -1

>> a1=mod(8,3)

a1 =

     2

>> a1=mod(-8,-3)

a1 =

    -2

>> rem(-8,3)

ans =

    -2

>> rem(8,-3)

ans =

     2

>> rem(8,3)

ans =

     2

>> rem(-8,-3)

ans =

    -2

三、矩阵的行列式、秩与迹、特征值分析

1、矩阵的行列式

运算符:det()

用于求方阵行列式的值

2、矩阵的秩与迹

  • 矩阵的秩:矩阵的列向量组(或者行向量组)的任一极大线性无关组所含向量的个数

    运算符:rank()

  • 矩阵的迹:矩阵的迹等于矩阵主对角线元素的总和,也等于矩阵特征值的总和

    运算符:trace()

    要求矩阵是方阵

3、矩阵的特征值分析

  • E=eig(A):求矩阵的全部特征值,并构成向量E

  • [V,D]=eig(A):求矩阵的全部特征值,构成对角矩阵D;求A的特征向量,构成列向量V。

>> A=[-2,1,4;4,5,6;-4,-7,-8]

A =

    -2     1     4
     4     5     6
    -4    -7    -8

>> a1=det(A)

a1 =

   -28

>> a2=rank(A)

a2 =

     3

>> a3=trace(A)

a3 =

    -5

>> a4=eig(A)

a4 =

  -1.5000 + 3.4278i
  -1.5000 - 3.4278i
  -2.0000 + 0.0000i

>> [V,D]=eig(A)

V =

   0.0754 - 0.5168i   0.0754 + 0.5168i  -0.8001 + 0.0000i
  -0.6030 + 0.0000i  -0.6030 + 0.0000i   0.5819 + 0.0000i
   0.6030 + 0.0000i   0.6030 + 0.0000i  -0.1455 + 0.0000i


D =

  -1.5000 + 3.4278i      
                     -1.5000 - 3.4278i   
                                        -2.0000 + 0.0000i

四、矩阵的逆与线性方程组的求解

1、矩阵的逆

inv():用于求满秩方程的逆

pinv():用于求不是方阵或者非满秩方阵的逆——伪逆

如果ABA=A,BAB=B,则称B为A的伪逆,或者广义逆矩阵

2、线性方程组的解

五、矩阵的分解与变换

1、矩阵的分解

  • 三角分解:[l,u]=lu(a)

    l表示下三角矩阵

    u表示上三角矩阵

  • 正交分解:[q,r]=qr(a)

    假设a(n,m)

    q:n阶正交方阵

    r:与a同阶的上三角矩阵

  • 奇异值分解:[u,s,v]=svd(a)

    u:n阶正交方阵

    s:n×m阶的对角阵,对角线元素为a的奇异值,长度为n、m的较小者

    v:m阶正交方阵。

2、矩阵的变换

  • 矩阵的共轭转置:

  • 矩阵的共轭:conj

  • 矩阵的转置:conj’

  • 复数矩阵的赋值

    对元素逐个赋值:z=[1+2i,3+4i;5+6i,3+2i]

    对实部和虚部矩阵分别赋值:z=[1,2;5,7]+[2,4;8,9]*i

>> z=[1+2i,3+4i;5+6i,3+2i]

z =

   1.0000 + 2.0000i   3.0000 + 4.0000i
   5.0000 + 6.0000i   3.0000 + 2.0000i

>> z1=z'	#共轭转置

z1 =

   1.0000 - 2.0000i   5.0000 - 6.0000i
   3.0000 - 4.0000i   3.0000 - 2.0000i

>> z2=conj(z)	#共轭

z2 =

   1.0000 - 2.0000i   3.0000 - 4.0000i
   5.0000 - 6.0000i   3.0000 - 2.0000i

>> z3=conj(z)'	#转置

z3 =

   1.0000 + 2.0000i   5.0000 + 6.0000i
   3.0000 + 4.0000i   3.0000 + 2.0000i

只有数字和i之间的乘号可以省略

  • 矩阵的行列扩展

    a=[-2,1,4;4,5,6;-4,-7,-8]

    行扩展:a(4,3)=6.5 a=(5,:)=[5,4,3]

    列扩展:a(:,4)=[5;4;3;2;1]

>> a=[-2,1,4;4,5,6;-4,-7,-8]

a =

    -2     1     4
     4     5     6
    -4    -7    -8

>> a(4,3)=9.8

a =

   -2.0000    1.0000    4.0000
    4.0000    5.0000    6.0000
   -4.0000   -7.0000   -8.0000
         0         0    9.8000

>> a(5,:)=[5,4,3]

a =

   -2.0000    1.0000    4.0000
    4.0000    5.0000    6.0000
   -4.0000   -7.0000   -8.0000
         0         0    9.8000
    5.0000    4.0000    3.0000

>> a(:,4)=[5;4;3;2;1]

a =

   -2.0000    1.0000    4.0000    5.0000
    4.0000    5.0000    6.0000    4.0000
   -4.0000   -7.0000   -8.0000    3.0000
         0         0    9.8000    2.0000
    5.0000    4.0000    3.0000    1.0000

最后

以上就是彪壮板凳为你收集整理的Matlab学习第二部分:矩阵的全部内容,希望文章能够帮你解决Matlab学习第二部分:矩阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部