首页 > 编程笔记 > MATLAB笔记 阅读:12

MATLAB构造矩阵的2种方式(非常详细)

在 MATLAB 中,矩阵的构造方式有两种:一种与元胞数组相似,可以对变量直接进行赋值;另一种是使用 MATLAB 中提供的构造特殊矩阵的函数,如下表所示。

表:构造特殊矩阵的函数
函数名称 函数功能
ones(n) 构建 n×n 维的 1 矩阵(矩阵的元素全部是 1)
ones(m,n,…,p) 构建 m×n×…×p 维的 1 矩阵
ones(size(A)) 构建和矩阵 A 同样大小的 1 矩阵
zeros(n) 构建 n×n 维的 0 矩阵(矩阵的元素全部是 0)
zeros(m,n,…,p) 构建 m×n×…×p 维的 0 矩阵
zeros(size(A)) 构建和矩阵 A 同样大小的 0 矩阵
eye(n) 构建 n×n 维的单位矩阵
eye(m,n) 构建 m×n 维的单位矩阵
eye(size(A)) 构建和矩阵 A 同样大小的单位矩阵
magic(n) 构建 n×n 维的矩阵,其每行、每列的元素之和都相等
rand(n) 构建 n×n 维的矩阵,其元素为 0~1 均匀分布的随机数
rand(m,n,…,p) 构建 m×n×…×p 维的矩阵,其元素为 0~1 均匀分布的随机数
randn(n) 构建 n×n 维的矩阵,其元素为零均值、单位方差的正态分布随机数
randn(m,n,…,p) 构建 m×n×…×p 维的矩阵,其元素为零均值、单位方差的正态分布随机数
diag(x) 构建 n 维方阵,其主对角线元素值取自向量 x,其余元素的值都为 0
diag(A,k) 构建由矩阵 A 的第 k 条对角线的元素组成的列向量。k=0 为主对角线,k>0 为上第 k 条对角线,k<0 为下第 k 条对角线
diag(x,k) 构建(n+|k|)维的矩阵,其第 k 条对角线元素取自向量 x,其余元素都为 0,n 为向量元素数量,即 n=length(x)
triu(A) 构建和 A 大小相同的上三角矩阵。主对角线上的元素为 A 中相应的元素,其余元素都为 0
triu(A,k) 构建和 A 大小相同的上三角矩阵。第 k 条对角线及其以上的元素为 A 中相应的元素,其余元素都为 0
tril(A) 构建和 A 大小相同的下三角矩阵。主对角线上的元素为 A 中相应的元素,其余元素都为 0
tril(A,k) 构建和 A 大小相同的下三角矩阵。第 k 条对角线及其以下的元素为 A 中相应的元素,其余元素都为 0

MATLAB建立简单矩阵

简单矩阵的建立采用矩阵构造符号——方括号“[]”,将矩阵元素置于方括号内,同行元素之间用空格或逗号隔开,行与行之间用分号“;”隔开,格式如下:
matrixName = [element11, element12, element13; element21, element22, element23]
matrixName = [element11  element12  element13; element21  element22  element23]
【实例 1】简单矩阵构造示例,分别构造一个二维矩阵、一个行向量、一个列向量。在命令行窗口中输入以下语句,并显示相应的输出结果。
>> A = [2,3,5;3,6,10]    % 使用逗号和分号构造二维矩阵
A =
     2     3     5
     3     6    10

>> B = [2 3 5;3 6 10]    % 使用空格和分号构造二维矩阵
B =
     2     3     5
     3     6    10

>> V1 = [8,59,60,33]    % 构造行向量
V1 =
     8    59    60    33

>> V2 = [5;8;3;4;9]    % 构造列向量
V2 =
     5
     8
     3
     4
     9

MATLAB建立特殊矩阵

特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。常见的特殊矩阵有对称矩阵、三角矩阵和对角矩阵等。

【实例 2】特殊矩阵构造示例。在命令行窗口中输入以下语句,并显示相应的输出结果。
>> OnesMatrix = ones(2)
OnesMatrix =
     1     1
     1     1

>> ZerosMatrix = zeros(2)
ZerosMatrix =
     0     0
     0     0

>> Identity = eye(2)
Identity =
     1     0
     0     1

>> Identity23 = eye(2, 3)
Identity23 =
     1     0     0
     0     1     0

>> Identity32 = eye(3, 2)
Identity32 =
     1     0
     0     1
     0     0

继续在命令行窗口中输入:
>> Random = rand(2, 3)
Random =
    0.1626    0.4984    0.3404
    0.1190    0.9597    0.5853

>> Array = Random(:, 2)
Array =
    0.4984
    0.9597

>> Diagetlement = diag(Random)
Diagetlement =
    0.1626
    0.9597

>> Diagmatrix = diag(diag(Random))
Diaagmatrix =
    0.1626    0    0
         0    0.9597

>> Dmatrix_array = diag(Array)
Dmatrix_array =
    0.4984    0
         0    0
>> UpperTriangular = triu(Random)
UpperTriangular =
    0.1626    0.4984    0.3404
         0    0.9597    0.5853

>> LowerTriangular = tril(Random)
LowerTriangular =
    0.1626         0         0
    0.1190    0.9597         0

MATLAB向量、标量和空矩阵

通常情况下,矩阵包含 m 行 n 列,即 m×n。当 m 和 n 取一些特殊值时,得到的矩阵具有一些特殊的性质。

1) 向量

当 m=1 或 n=1 时,即 1×n 或 m×1,建立的矩阵称为向量。例如,在命令行窗口中输入以下语句。
>> clear
>> a = [1 2 3 4 5 6]
a =
     1     2     3     4     5     6

>> b = [1;2;3;4;5;6]
b =
     1
     2
     3
     4
     5
     6

>> whos    % 调用 whos 函数查看变量 a、b 的相关信息
  Name      Size       Bytes  Class     Attributes

  a         1x6         48  double
  b         6x1         48  double

2) 标量

当 m=n=1 时,建立的矩阵称为标量。任意以 1×1 维的矩阵形式表示的单个实数、复数都是标量。

【实例】在 MATLAB 中,标量有两种表示方法。在命令行窗口中输入以下语句,并显示相应的输出结果。
>> x = 10+2i    % 将复数 10+2i 赋值给变量 x
x =
   10.0000 + 2.0000i

>> shape = size(x)    % 查询变量 x 的形状信息
shape =
     1     1

>> y = [10+2i]    % 将复数 10+2i 构成的矩阵赋值给变量 y
y =
   10.0000 + 2.0000i

>> shape = size(y)    % 查询变量 y 的形状信息
shape =
     1     1

>> x==y    % 判断变量 x 和 y 是否相等,“1”表示相等,“0”表示不相等
ans =
      logical
     1
通过上述示例可知,单个实数或复数在 MATLAB 中都是以矩阵的形式存储的;在 MATLAB 中,单个数据或由单个数据构造的矩阵都是标量。

3) 空矩阵

当 m=n=0 或 m=0 或 n=0 时,即 0×0、0×n、m×0,建立的矩阵称为空矩阵。

空矩阵可以通过赋值语句建立,如下:
>> x = []    % 建立一个空矩阵
x =
    []

>> whos x    % 调用 whos 函数查看变量 x 的相关信息
  Name      Size       Bytes  Class     Attributes

  x         0x0         0  double

如果要建立一个 0 矩阵,则可以输入以下语句:
>> z = [0 0 0;0 0 0]    % 建立一个 2 行 3 列的 0 矩阵
z =
     0     0     0
     0     0     0

>> whos z    % 调用 whos 函数查看变量 z 的相关信息
  Name      Size       Bytes  Class     Attributes

  z         2x3         48  double
空矩阵和 0 矩阵的本质区别在于:空矩阵内没有任何元素,因此不占用任何存储空间;而 0 矩阵则表示该矩阵中的所有元素全部为 0,需要占用一定的存储空间。

相关文章