MATLAB的矩阵运算

GerwelsJI 2020-05-07

??MATLAB是基于矩阵和数组计算的,可以直接对矩阵和数组进行整体的操作,MATLAB有三种矩阵运算类型:矩阵的代数运算、矩阵的关系运算和矩阵的逻辑运算。其中,矩阵的代数运算应用最广泛。本文主要讲述矩阵的基本操作,涉及矩阵的创建、矩阵的代数运算、关系运算和逻辑运算等基本知识。

矩阵的创建

直接输入法创建矩阵

% 1. 直接输入法创建矩阵
>> A = [1,2,3; 4,5,6; 7,8,9]

A =

     1     2     3
     
     4     5     6
     7     8     9

函数法创建矩阵

简单矩阵

% 2. 函数法创建矩阵
>> zeros(3)
% 生成3x3的全零矩阵
ans =

     0     0     0
     0     0     0
     0     0     0
  
>> zeros(3,2)
% 生成3x2的全零矩阵
ans =

     0     0
     0     0
     0     0
  
 >> eye(3)
% 生成单位矩阵
ans =

     1     0     0
     0     1     0
     0     0     1
     
>> ones(3)
% 生成全1矩阵
ans =

     1     1     1
     1     1     1
     1     1     1
 
>> magic(3)
% 生成3x3的魔方阵
ans =

     8     1     6
     3     5     7
     4     9     2
     
 >> diag(1:3)
% 对角矩阵
ans =

     1     0     0
     0     2     0
     0     0     3
>> diag(1:5,1)
% 对角线向上移1位矩阵
ans =

     0     1     0     0     0     0
     0     0     2     0     0     0
     0     0     0     3     0     0
     0     0     0     0     4     0
     0     0     0     0     0     5
     0     0     0     0     0     0
     
>> diag(1:5,-1)
% 对角线向下移1位矩阵
ans =

     0     0     0     0     0     0
     1     0     0     0     0     0
     0     2     0     0     0     0
     0     0     3     0     0     0
     0     0     0     4     0     0
     0     0     0     0     5     0
     
 >> triu(ones(3,3))
% 上三角矩阵
ans =

     1     1     1
     0     1     1
     0     0     1

>> tril(ones(3,3))
% 下三角矩阵
ans =

     1     0     0
     1     1     0
     1     1     1

随机矩阵

>> rand(3)
% 生成随机矩阵
ans =

    0.2898    0.8637    0.0562
    0.4357    0.8921    0.1458
    0.3234    0.0167    0.7216
 
>> rand(‘state‘,0); % 设定种子数,产生特定种子数下相同的随机数
>> rand(3)

ans =

    0.9501    0.4860    0.4565
    0.2311    0.8913    0.0185
    0.6068    0.7621    0.8214

>> a = 1; b = 100;
>> x = a + (b-a)* rand(3)
% 产生区间(1,100)内的随机数
x =

   38.2127   20.7575   91.1133
   89.9610   31.0064   53.0040
   43.4711   54.2917   31.3762


>>  a = 1; b = 100;
>> a + fix(b * rand(1,50))
% 产生50个[1,100]内的随机正整数
ans =

  列 1 至 15

     4    72    77     6    63    27    32    53    41    90    58    57    40    70    57

  列 16 至 30

    35    60    28     5    84    11    73    45   100    57    47    42    22    24    32

  列 31 至 45

    87    26    97    31    38    35    71    62    76    80    22    90    90    94    28

  列 46 至 50

    48    26    37    53    39

相似函数扩展

>> randn(3)
% 生成均值为0,方差为1的正太分布随机数矩阵
ans =

   -0.4326    0.2877    1.1892
   -1.6656   -1.1465   -0.0376
    0.1253    1.1909    0.3273
    
>> randperm(10)
% 生成1-10之间随机分布10个正整数
ans =

     4     9    10     2     5     8     1     3     7     6
     
 % 多项式x^3 - 7x  + 6 的伴随矩阵    
>> u = [1,0,-7,6];
>> A = compan(u)
% 生成伴随矩阵
A =

     0     7    -6
     1     0     0
     0     1     0

>> eig(A)  % 此处eig()函数用于求特征值
% 利用伴随矩阵求得方程的根
ans =

   -3.0000
    2.0000
    1.0000

矩阵的运算

矩阵的代数运算

矩阵的算术运算

>> A = [1,1;2,2];
>> B = [1,1;2,2];
>> A

A =

     1     1
     2     2

>> B

B =

     1     1
     2     2
     
>> A + B

ans =

     2     2
     4     4

>> B-A

ans =

     0     0
     0     0
     
>> A * B

ans =

     3     3
     6     6 
     
>> A^2

ans =

     3     3
     6     6  

>> A^3

ans =

     9     9
    18    18

矩阵的运算函数

>> C = magic(3)

C =

     8     1     6
     3     5     7
     4     9     2

>> size(C)

ans =

     3     3

>> length(C)

ans =

     3

>> sum(C)

ans =

    15    15    15

>> max(C)

ans =

     8     9     7

>> C‘

ans =

     8     3     4
     1     5     9
     6     7     2


>> inv(C)

ans =

    0.1472   -0.1444    0.0639
   -0.0611    0.0222    0.1056
   -0.0194    0.1889   -0.1028

矩阵的元素群运算


元素群运算,是指矩阵中的所有元素按单个元素进行运算,也即是对应位置进行运算。

>> A = [1,2;3,4];
>> B = [1,2;3,4];
>> A .* B

ans =

     1     4
     9    16

>> A ./ B

ans =

     1     1
     1     1

>> A .\ B

ans =

     1     1
     1     1

>> A .^ B

ans =

     1     4
    27   256

矩阵元素群的运算函数

MATLAB提供了几乎所有初等函数,包括三角函数、对数函数、指数函数和复数运算函数等。大部分的MATLAB函数运算都是分别作用于函数变量(矩阵)的每一个元素。

>> x = [0, pi/6, pi/4, pi/3];
>> y = tan(x)

y =

         0    0.5774    1.0000    1.7321

>> y = sin(x)

y =

         0    0.5000    0.7071    0.8660

矩阵的关系运算

在使用关系运算时,首先应保证两个矩阵的维数相等或至少一个为标量。若参与运算的对象为两个矩阵,则关系运算对两个矩阵的对应元素进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。若参与运算的对象之一为标量,则关系运算将矩阵的每一个元素与该标量逐一进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。

>> A  = [1,1;1,1];
>> B = [0,1;2,3];
>> A > B

ans =

  2×2 logical 数组

   1   0
   0   0

>> A >= B

ans =

  2×2 logical 数组

   1   1
   0   0

>> A == B

ans =

  2×2 logical 数组

   0   1
   0   0

>> A ~= B

ans =

  2×2 logical 数组

   1   0
   1   1

矩阵的逻辑运算

逻辑运算中,所有非零元素的逻辑值为“真”,用代码“1”表示;值为零的元素的逻辑值为“假”,用代码“0”表示。逻辑运算规则与关系运算基本一致,也是针对两个矩阵的对应元素。


>> A & B

ans =

  2×2 logical 数组

   0   1
   1   1

>> A | B

ans =

  2×2 logical 数组

   1   1
   1   1

 
>> ~ A

ans =

  2×2 logical 数组

   0   0
   0   0

>> ~B

ans =

  2×2 logical 数组

   1   0
   0   0

相关推荐