您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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 square是一个正方形,当其元素按行,列或对角线相加时,会产生相同的和。

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(:, :, 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是创建的新数组

  • A1A2,...是要串联的数组

  • 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-D 数组的维数

permute

重新排列N-D数组的维数

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函数用于创建单元格数组。单元格功能的语法是-

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

联系我
置顶