MATLAB - 数组(Arrays)

MATLAB - 数组(Arrays) 首页 / MATLAB入门教程 / MATLAB - 数组(Arrays)

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

Oones()      -  函数创建一个包含所有One-的数组

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

A Magic Square

A magic square是一个方块,当其元素按行、列或对角线相加时,它会产生相同的和,它需要一个单数参数,给出正方形的大小,参数必须是大于或等于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...)

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

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提供了以下函数来排序、旋转、置换、重塑或移位数组内容。

Function Purpose
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 向量化表达

以下示例说明了上面提到的一些函数。元素的length、ndims和numel,创建一个脚本文件,并在其中键入以下代码-

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开发一款iOS App -〔朱德权〕

苏杰的产品创新课 -〔苏杰〕

人人都能学会的编程入门课 -〔胡光〕

A/B测试从0到1 -〔张博伟〕

Python自动化办公实战课 -〔尹会生〕

MySQL 必知必会 -〔朱晓峰〕

流程型组织15讲 -〔蒋伟良〕

技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕

深入拆解消息队列47讲 -〔许文强〕

好记忆不如烂笔头。留下您的足迹吧 :)