MATLAB 数组

MATLAB 数组

在MATLAB中,所有数据类型的变量均为多维数组。向量是一维数组,矩阵是二维数组。

我们已经讨论了向量和矩阵。在本章中,我们将讨论多维数组。不过在此之前,让我们先讨论一些特殊类型的数组。

MATLAB中的特殊数组

在本节中,我们将讨论一些创建特殊数组的函数。对于所有这些函数,一个参数创建正方形数组,两个参数创建矩形数组。

zeros() 函数创建一个全为零的数组 –

例如 –

zeros(5)

Matlab将执行上述语句,并返回以下结果−

ans =
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0

ones()函数创建一个由全部是1的数组 –

例如 –

ones(4,3)

MATLAB将执行上述语句并返回以下结果−

ans =
      1     1     1
      1     1     1
      1     1     1
      1     1     1

eye()函数创建一个单位矩阵。

例如 –

eye(4)

MATLAB将执行上述语句并返回以下结果 –

ans =
      1     0     0     0
      0     1     0     0
      0     0     1     0
      0     0     0     1

rand()函数创建了一个在(0,1)上均匀分布的随机数数组−

例如:−

rand(3, 5)

MATLAB将执行上述语句并返回以下结果 –

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

一个魔方阵

魔方阵 是一个方形数组,当它的元素按行求和、按列求和或按对角线求和时,会产生相同的结果。

magic() 函数创建一个魔方阵数组。它接受一个参数来确定方阵的大小。该参数必须是大于等于3的标量值。

magic(4)

MATLAB将执行以上语句,并返回以下结果−

ans =
   16     2     3    13
   5    11    10     8
   9     7     6    12
   4    14    15     1

多维数组

在MATLAB中,超过两个维度的数组被称为多维数组。MATLAB中的多维数组是普通二维矩阵的扩展。

通常,要生成一个多维数组,我们首先创建一个二维数组并进行扩展。

例如,让我们创建一个二维数组a。

a = [7 9 5; 6 1 9; 4 3 2]

MATLAB将执行上述语句并返回以下结果−

a =
   7     9     5
   6     1     9
   4     3     2

数组 a 是一个3行3列的数组;我们可以通过提供如下的值给 a 来添加第三维度:

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

Matlab将执行上述语句并返回以下结果 –

a =

ans(:,:,1) =

   0   0   0
   0   0   0
   0   0   0

ans(:,:,2) =

   1   2   3
   4   5   6
   7   8   9

我们也可以使用ones()、zeros()或rand()函数创建多维数组。

例如:

b = rand(4,3,2)

MATLAB将执行上述语句并返回以下结果 –

b(:,:,1) =
   0.0344    0.7952    0.6463
   0.4387    0.1869    0.7094
   0.3816    0.4898    0.7547
   0.7655    0.4456    0.2760

b(:,:,2) =
   0.6797    0.4984    0.2238
   0.6551    0.9597    0.7513
   0.1626    0.3404    0.2551
   0.1190    0.5853    0.5060

我们还可以使用 cat() 函数构建多维数组。它沿指定维度连接数组列表。

cat() 函数的语法是:

B = cat(dim, A1, A2...)

在下面,

  • B 是创建的新数组

  • A1,A2,… 是要连接的数组

  • dim 是要连接数组的维度

示例

创建一个脚本文件,然后将以下代码键入其中 –

a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])

当你运行这个文件时,它显示的是 –

c(:,:,1) =
      9     8     7
      6     5     4
      3     2     1
c(:,:,2) =
      1     2     3
      4     5     6
      7     8     9
c(:,:,3) =
      2     3     1
      4     7     8
      3     9     0

数组函数

MATLAB提供了以下函数来对数组内容进行排序、旋转、排列、重塑或移位。

功能 目的
length 向量的长度或最大的数组维度
ndims 数组的维度数
numel 数组的元素个数
size 数组的维度
iscolumn 确定输入是否为列向量
isempty 确定数组是否为空
ismatrix 确定输入是否为矩阵
isrow 确定输入是否为行向量
isscalar 确定输入是否为标量
isvector 确定输入是否为向量
blkdiag 从输入参数构建块对角矩阵
circshift 循环地移动数组
ctranspose 复共轭转置
diag 对角矩阵和矩阵的对角线元素
flipdim 沿指定维度翻转数组
fliplr 从左到右翻转矩阵
flipud 从上到下翻转矩阵
ipermute 逆置N维数组的维度排列
permute 重新排列N维数组的维度
repmat 复制并平铺数组
reshape 重塑数组
rot90 将矩阵旋转90度
shiftdim 移动维度
issorted 确定集合元素是否按照排序顺序排列
sort 将数组元素按照升序或降序排序
sortrows 按照行的升序排序
squeeze 移除单例维度
transpose 转置
vectorize 向量化表达式

示例

以下示例说明了上面提到的一些函数。

长度、维度和元素数量 –

创建一个脚本文件,然后输入以下代码:

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x)      % length of x vector
y = rand(3, 4, 5, 2);
ndims(y)       % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s)       % no of elements in s

当您运行文件时,它会显示如下结果-

ans =  8
ans =  4
ans =  23

循环移位数组元素 –

创建一个脚本文件,并输入以下代码 –

a = [1 2 3; 4 5 6; 7 8 9]  % the original array a
b = circshift(a,1)         %  circular shift first dimension values down by 1.
c = circshift(a,[1 -1])    % circular shift first dimension values % down by 1 
                           % and second dimension values to the left % by 1.

运行文件时,它会显示以下结果 –

a =
   1     2     3
   4     5     6
   7     8     9

b =
   7     8     9
   1     2     3
   4     5     6

c =
   8     9     7
   2     3     1
   5     6     4

排序数组

创建一个脚本文件,并将以下代码键入其中 –

v = [ 23 45 12 9 5 0 19 17]  % horizontal vector
sort(v)                      % sorting v
m = [2 6 4; 5 3 9; 2 0 1]    % two dimensional array
sort(m, 1)                   % sorting m along the row
sort(m, 2)                   % sorting m along the column

当您运行该文件时,将显示以下结果 –

v =
   23    45    12     9     5     0    19    17
ans =
   0     5     9    12    17    19    23    45
m =
   2     6     4
   5     3     9
   2     0     1
ans =
   2     0     1
   2     3     4
   5     6     9
ans =
   2     4     6
   3     5     9
   0     1     2

单元数组

单元数组是一种索引单元的数组,每个单元可以存储不同维度和数据类型的数组。

使用 cell 函数创建单元数组。cell函数的语法如下:

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)

说明

  • C是一个单元数组;

  • dim是一个标量整数或整数向量,用于指定单元数组C的维度;

  • dim1,…,dimN是标量整数,用于指定C的维度;

  • obj是以下之一 –

    • Java数组或对象
    • .NET类型为System.String或System.Object的数组

示例

创建一个脚本文件,然后输入以下代码 –

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

当您运行该文件时,它将显示以下结果 –

c = 
{
   [1,1] = Red
   [2,1] =  1
   [1,2] = Blue
   [2,2] =  2
   [1,3] = Green
   [2,3] =  3
   [1,4] = Yellow
   [2,4] =  4
   [1,5] = White
   [2,5] =  5
}

在单元数组中访问数据

有两种方式可以引用单元数组的元素 –

  • 将索引括在第一个括号()中,引用一组单元格
  • 将索引括在大括号{}中,引用单个单元格中的数据

当您将索引括在第一个括号中时,它引用一组单元格。

平滑括号中的单元数组索引是一组单元格。

例如 –

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)

MATLAB将执行上述语句并返回以下结果 –

ans = 
{
   [1,1] = Red
   [2,1] =  1
   [1,2] = Blue
   [2,2] =  2
}

还可以通过花括号索引来访问单元格的内容。

例如 –

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}

MATLAB将执行上述语句并返回以下结果−

ans = Blue
ans = Green
ans = Yellow

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程