MATLAB - 数组函数



数组函数是 MATLAB 的一个基本方面,因为它们允许你高效地对数组(也称为矩阵)执行运算。

让我们看看下面列出的所有这些数组函数,包括解释和示例。

函数名称 描述
zeros 此函数将创建一个全为零的数组。
ones 此函数将创建一个全为一的数组。
eye 此函数用于创建单位矩阵。单位矩阵是对角线元素为 1,其余元素为 0 的矩阵。
rand 此函数帮助你生成均匀分布的随机数矩阵。
randn 此函数帮助你生成正态分布的随机数矩阵。
size 此函数将矩阵的大小作为行向量返回。例如,如果矩阵的大小为 mxn,它将返回 [m,n]。
reshape 此函数用于重新整形给定的数组。
transpose 这将给出给定矩阵的转置。
max 这将返回数组或行向量中的最大元素。
min 这将返回数组或行向量中的最小元素。
sum 此函数将给出数组元素的总和。
mean 此函数将给出给定数组的平均值。
diag 此函数用于创建一个对角矩阵。
unique 这将返回给定数组或矩阵中的唯一元素。
sort 此函数将对数组元素进行排序。

函数名称:zeros()

此函数用于创建全为零的矩阵或数组。

语法

Z = zeros(n)

使用函数 zeros(n) 将返回一个 nxn 的全零矩阵。

示例

A = zeros(3)

执行后,你将得到以下输出:

A =

     0     0     0
     0     0     0
     0     0     0

你也可以指定所需的大小,例如 zeros(4,2),输出将是:

ans =

     0     0
     0     0
     0     0
     0     0

函数名称:ones()

你将得到一个全为一的数组或矩阵。

语法

A = ones(n)
A = ones(sz1…szN)

ones(n) 将创建一个 nxn 大小的矩阵。ones(sz1…sz1n) 将创建一个大小为 sz1xszn 的矩阵。

示例

A = ones(4)

当你在 matlab 命令窗口中执行相同的操作时,输出为:

A =

     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1

让我们创建一个 3x2 维的全一矩阵,如下所示:

A = ones(3,2)

当你在 matlab 命令窗口中执行相同的操作时,输出为:

A =
     1     1
     1     1
     1     1 

函数名称:eye()

使用上述函数,你将得到一个单位矩阵。

语法

I = eye(n)
I = eye(n,m)

使用 eye(n) 你将得到一个 nxn 矩阵,使用 eye(n,m) 你将得到一个 nxm 大小的矩阵。

示例

I = eye(4)
I = eye(2, 3)

当你在 matlab 命令窗口中检查输出时,输出为:

I =
 Diagonal Matrix
 
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1

I =
 Diagonal Matrix
 
     1     0     0
     0     1     0

函数名称:rand()

使用上述函数生成具有随机数的矩阵。

语法

rand(n)
rand(sz1…szn)

你可以创建一个大小为 n 或 sz1xszn 的随机数矩阵。

示例

A = rand(4)
A = rand(5,3)

当你在 matlab 命令窗口中执行它们时,输出为:

A =

    0.8147    0.6324    0.9575    0.9572
    0.9058    0.0975    0.9649    0.4854
    0.1270    0.2785    0.1576    0.8003
    0.9134    0.5469    0.9706    0.1419

A =

    0.4218    0.0357    0.7431
    0.9157    0.8491    0.3922
    0.7922    0.9340    0.6555
    0.9595    0.6787    0.1712
    0.6557    0.7577    0.7060

函数名称:randn()

使用上述函数生成正态分布的随机数矩阵。

语法

randn(n)
randn(sz1…szn)

你可以创建一个大小为 n 或 sz1xszn 的随机数矩阵。

示例

A = randn(4)
A = randn(5,3)

当你在 matlab 命令窗口中执行它们时,输出为:

A =

   -1.1471    1.4384   -1.7115    0.3129
   -1.0689    0.3252   -0.1022   -0.8649
   -0.8095   -0.7549   -0.2414   -0.0301
   -2.9443    1.3703    0.3192   -0.1649

A =

    0.6277   -1.2141    0.3714
    1.0933   -1.1135   -0.2256
    1.1093   -0.0068    1.1174
   -0.8637    1.5326   -1.0891
    0.0774   -0.7697    0.0326 

函数名称:size()

此方法返回数组或矩阵的大小。

语法

size(A)

这里 A 是一个矩阵,size() 函数将以行向量的形式返回 A 的维度。

示例

A = [1,2,3;4,5,6;7,8,9]
size(A)

当你在 matlab 命令窗口中执行上述操作时,输出为:

A =

     1     2     3
     4     5     6
     7     8     9

ans =

     3     3

函数名称:reshape()

此函数将根据给定大小重新整形数组。

语法

B = reshape(A,sz)

这里 sz 是向量的尺寸,即 [3,2],矩阵 A 将被重新整形为给定的尺寸。

示例

A = 1:8
B = reshape(A,[4,2])

当你在 matlab 中检查输出时,输出为:

A =

     1     2     3     4     5     6     7     8

B =

     1     5
     2     6
     3     7
     4     8

函数名称:transpose()

此函数将返回给定矩阵或向量的转置。

转置后,行和列将互换。

语法

B = transpose(A)

示例

A = magic(3)
B = transpose(A)

上述代码的输出为:

A =

     8     1     6
     3     5     7
     4     9     2

B =

     8     3     4
     1     5     9
     6     7     2 

函数名称:max()

这将给出数组的最大元素,如下所示。

如果给定的输入是一个行向量,则给出行向量中的最大元素。

如果给定的输入是一个矩阵,则给出具有最大元素的行向量。

语法

B = max(A)

这里 A 是一个数组、矩阵或行向量。

示例 1

A = [23, 84, 36, 1, 20]
B = max(A)

当你在 matlab 命令窗口中执行时,输出为:

A =

    23    84    36     1    20

B = 84

现在让我们使用一个矩阵并使用 max() 查找最大元素。

示例 2

A = [56, 23, 90; 101, 45, 22;78, 11,90]
B = max(A)

当你在 matlab 命令窗口中执行上述操作时,输出为:

A =

    56    23    90
   101    45    22
    78    11    90

B =

   101    45    90

函数名称:min()

这将给出数组的最小元素,如下所示。

如果给定的输入是一个行向量,则给出行向量中的最小元素。

如果给定的输入是一个矩阵,则给出具有最小元素的行向量。

语法

B = min(A)

这里 A 是一个数组、矩阵或行向量。

示例 1

A = [23, 84, 36, 1, 20]
B = min(A)

当你在 matlab 命令窗口中执行时,输出为:

A =

    23    84    36     1    20

B = 1

现在让我们使用一个矩阵并使用 min() 查找最小元素。

示例 2

A = [56, 23, 90; 101, 45, 22;78, 11,90]
B = min(A)

当你在 matlab 命令窗口中执行上述操作时,输出为:

A =

    56    23    90
   101    45    22
    78    11    90

B =

    56    11    22

函数名称:sum()

此方法将返回行向量或矩阵的元素总和。

如果是行向量,它将返回行向量中所有元素的总和。

如果是矩阵,它将对所有列求和并返回行向量。

语法

S = sum(A)

这里 A 是一个数组、矩阵或行向量。

示例 1

S = [2, 3, 80, 90, 12]
sum(S)

执行后,输出为:

S =

   2     3    80    90    12

ans = 187

示例 2

现在让我们使用如下所示的矩阵并计算其总和。

A = [1, 2,3;4,5,6;7,8,9]
S = sum(A)

执行后,输出为:

A =

     1     2     3
     4     5     6
     7     8     9

S =

    12    15    18

函数名称:mean()

此函数将给出给定数组的平均值。

语法

M = mean(A)

如果给定的输入是一个行向量,则 mean(A) 将给出元素的平均值。

如果给定的输入是一个矩阵,则 mean(A) 将返回一个行向量,该向量包含每一列的平均值。

示例 1

A = [23, 90, 33, 78, 11, 56]
M = mean(A)

执行后,输出将是:

A =

    23    90    33    78    11    56

M = 48.5000

示例 2

A = [51, 34 , 33; 12, 90, 32; 8, 13, 67]
M = mean(A)

在上例中,A 是一个 3x3 矩阵。现在,当你求 mean(A) 时,它会计算每一列的平均值并返回一个行向量。

在 Matlab 命令窗口中执行后的输出为:

A =

    51    34    33
    12    90    32
     8    13    67

M =

   23.6667   45.6667   44.0000

函数名称:diag()

此方法使用给定向量行元素在主对角线上创建一个对角矩阵。

语法

D = diag(v)

这里 v 是一个行向量。

示例

v = [5 2 -1 -2 -5]
D = diag(v)

当你在 matlab 命令窗口中执行相同的操作时,输出为:

v =

     5     2    -1    -2    -5

D =

  Diagonal Matrix

     5     0     0     0     0
     0     2     0     0     0
     0     0    -1     0     0
     0     0     0    -2     0
     0     0     0     0    -5

函数名称:unique()

此方法将返回数组中唯一的值。

语法

C = unique(A)
C = unique(A, setOrder)

你将得到一个排序后的数组 C,其中不会重复相同的值。

第二个语法需要你传递 setOrder,其值可以是:sorted 或 stable。默认情况下,setOrder 为 sorted。如果你希望最终输出不排序,可以将其指定为 'stable'。

示例 1

A = [10, 8, 2, 4,8, 3]
C = unique(A)

当你在 matlab 命令窗口中执行相同的操作时,输出为:

A =

    10     8     2     4     8     3

C =

     2     3     4     8    10

你会看到值 8 在数组 A 中出现了两次。当你查看 unique(A) 的输出时,重复的值将被删除,最终数组将按排序形式显示。

示例 2

我们将使用上面用过的相同示例,并将 setOrder 设置为 stable。

A = [10, 8, 2, 4,8, 3]
C = unique(A, 'stable')

执行相同的操作后,输出为:

A =

    10     8     2     4     8     3

C =

    10     8     2     4     3

示例 3

如果你给出一个包含重复值的矩阵,unique() 方法将返回包含唯一值的列向量,如下所示。

A = [1,2,4; 4,2,8; 8,1,5]

C = unique(A)

在 Matlab 命令窗口中执行上述操作后的输出为:

A =

     1     2     4
     4     2     8
     8     1     5

C =

     1
     2
     4
     5
     8

结果 C 是一个单列向量,包含来自 A 的唯一值。

函数名称:sort()

此方法将对数组元素进行排序。

语法

B = sort(A)
B = sort(A, direction)

语法 sort(A) 将按升序对数组元素进行排序。

第二个语法 sort(A, direction),这里 direction 的值可以是 **ascend** 和 **descend**。默认情况下为升序。

如果给定的输入 A 是一个向量,则 sort(A) 将对向量中的元素进行排序。

如果给定的输入 A 是一个矩阵,则 sort(A) 将对矩阵的每一列进行排序。

示例 1

A = [6 -1 -7 2 3 8 -10 11 2]
B = sort(A)

当你在 matlab 命令窗口中执行相同的操作时,输出为:

A =

     6    -1    -7     2     3     8   -10    11     2

B =

   -10    -7    -1     2     2     3     6     8    11

示例 2

在这个例子中,让我们取一个矩阵并对其使用 sort 函数。

A = [ -1, 7, 10; 3, -9, 2; 8, -2, -3]
B = sort(A)

当你在 matlab 命令窗口中执行相同的操作时,输出为:

A =

    -1     7    10
     3    -9     2
     8    -2    -3

B =

    -1    -9    -3
     3    -2     2
     8     7    10

在上例中,让我们将 **direction** 设置为 **descend**。

A = [ -1, 7, 10; 3, -9, 2; 8, -2, -3]
B = sort(A, 'descend')

当你在 matlab 命令窗口中执行相同的操作时,输出为:

A =

    -1     7    10
     3    -9     2
     8    -2    -3

B =

     8     7    10
     3    -2     2
    -1    -9    -3
广告