亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> 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

我们还可以使用 one()、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 提供以下函数来对数组内容进行排序、旋转、置换、整形或移位。

函数 目的
长度 向量长度或数组最大维度
ndims 数组维数
数字 数组元素个数
大小 数组维度
iscolumn 判断输入是否为列向量
isempty 判断数组是否为空
ismatrix 判断输入是否为矩阵
isrow 判断输入是否为行向量
isscalar 判断输入是否为标量
isvector 判断输入是否为向量
blkdiag 从输入参数构造块对角矩阵
circshift 循环移动数组
ctranspose 复共轭转置
诊断 对角矩阵和矩阵的对角线
flipdim 沿指定维度翻转数组
fliplr 从左到右翻转矩阵
翻转 上下翻转矩阵
ipermut 反转 N 维数组的置换维度
置换 重新排列 N 维数组的维度
repmat 复制和平铺数组
重塑 重塑数组
rot90 将矩阵旋转 90 度
shiftdim 改变尺寸
已排序 判断集合元素是否有序
排序 按升序或降序对数组元素进行排序
排序 按升序对行进行排序
挤压 移除单一维度
转置 转置
矢量化 向量化表达式

示例

下面的例子说明了上面提到的一些功能。

长度、尺寸和元素数量 -

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

现场演示
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

元胞数组

元胞数组是索引元胞的数组,其中每个元胞可以存储不同维度和数据类型的数组。

细胞 函数用于创建元胞数组。单元格函数的语法是 -

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

在哪里,

示例

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

现场演示
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

MATLAB

  1. C# 数组
  2. C# 锯齿状数组
  3. C++ 数组
  4. Java 复制数组
  5. C++ 中的数组 |声明 |初始化 |指向数组示例的指针
  6. C++ 动态分配数组的例子
  7. MATLAB - 概述
  8. MATLAB - 变量
  9. MATLAB - 命令
  10. MATLAB - 矩阵
  11. MATLAB - 数字
  12. MATLAB - 字符串