当前位置: 首页 > 教程 > Matlab >

Matlab数组

精华
小牛编辑
144浏览
2023-03-14

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

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

MATLAB中的特殊数组

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

zeros()函数是用来创建一个全零的数组 -

例如 -

zeros(5)

执行上面示例代码,得到以下结果 -

Trial>> zeros(5)

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)

执行上面示例代码,得到以下结果 -

Trial>> ones(4,3)

ans =

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

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

例如 -

eye(4)

执行上面示例代码,得到以下结果 -

Trial>> eye(4)

ans =

     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1

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

例如 -

rand(3, 5)

执行上面示例代码,得到以下结果 -

Trial>> rand(3, 5)

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)

执行上面示例代码,得到以下结果 -

Trial>> magic(4)

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]

执行上面示例代码,得到以下结果 -

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

a =

     7     9     5
     6     1     9
     4     3     2

数组a3×3数组; 可以通过提供以下值来添加第三维:

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

执行上面示例代码,得到以下结果 -

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)

执行上面示例代码,得到以下结果 -

Trial>> b = rand(4,3,2)

b(:,:,1) =

    0.1419    0.9595    0.9340
    0.4218    0.6557    0.6787
    0.9157    0.0357    0.7577
    0.7922    0.8491    0.7431


b(:,:,2) =

    0.3922    0.0318    0.8235
    0.6555    0.2769    0.6948
    0.1712    0.0462    0.3171
    0.7060    0.0971    0.9502

也可以使用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

单元阵列

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

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

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

其中,

  • C是单元阵列;
  • dim是一个整数或整数向量,它指定单元格数组C的维数;
  • dim1,...,dimN是指定C大小的标量整数;
  • obj是以下之一:
    • Java数组或对象
    • 类型为System.StringSystem.Object的.NET数组

示例

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

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)

运行文件时,得到以下结果 -

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}

运行文件时,得到以下结果 -

ans = Blue
ans = Green
ans = Yellow

最后更新:

类似资料

  • 主要内容:示例,匿名函数,主函数和次函数,示例,嵌套函数,私有函数,示例,全局变量一个函数是一组在一起执行任务的语句。 在MATLAB中,函数在单独的文件中定义。文件的名称和函数的名称应该是一样的。 函数在自己的工作空间内的变量上运行,这个变量也称为本地工作空间,与在MATLAB命令提示符下访问的工作区(称为基本工作区)不同。 函数可以接受多个输入参数,并可能返回多个输出参数。 函数语句的语法是 - 示例 以下名称为的函数应写入名称为的文件中。它需要五个数字作为参数,并返回参数

  • 主要内容:转换为各种数值数据类型,最小和最大的整数,最小和最大的浮点数,以下是纠正/补充内容:MATLAB支持包括有符号和无符号整数以及单精度和双精度浮点数的各种数字类型。 默认情况下,MATLAB将所有数值存储为双精度浮点数。 可以选择将任何数字或数组的数字存储为整数或单精度数字。 所有数字类型都支持基本的数组运算和数学运算。 转换为各种数值数据类型 MATLAB提供以下函数来将数值转换为各种数字数据类型 - 函数 描述说明 转换为双精度数 转换为单精度数 转换为位有符号整数 转换为位有

  • 主要内容:示例,写到日记文件,将数据导出到具有低级I/O的文本数据文件MATLAB中的数据导出(或输出)可以理解为写入文件。 MATLAB允许在其他应用程序中使用读取ASCII文件的数据。 为此,MATLAB提供了几个数据导出选项。 可以创建以下类型的文件: 来自数组的矩形,有分隔符的ASCII数据文件。 日记(或日志)文件的按键和结果文本输出。 使用等低级函数的专用ASCII文件。 MEX文件访问写入特定文本文件格式的C/C++或Fortran例程。 除此之外,还

  • 主要内容:示例 - 1,示例 - 2,示例 - 3,低级文件I/O,导入具有低级别I/O的文本数据文件,示例在MATLAB中导入数据意味着从外部文件加载数据。importdata函数允许加载不同格式的各种数据文件。它有以下五种形式 - 序号 函数 描述 1 从文件filename中将数据加载到数组A中。 2 从系统剪贴板而不是从文件加载数据。 3 解析作为在文件,文件名或剪贴板数据中的列分隔符。可以使用与上述语法中的任何输入参数。 4 从ASCII文件,文件名或剪贴板加载数据,从行头标题开始读取

  • 主要内容:MATLAB数据类型,示例,数据类型转换,数据类型确定,示例MATLAB不需要任何类型声明或维度语句。当MATLAB遇到新的变量名称时,它将创建变量并分配适当的内存空间。 如果变量已经存在,则MATLAB将使用新内容替换原始内容,并在必要时分配新的存储空间。 例如, 上述语句创建一个名为的矩阵,并将值存储在其中。 MATLAB数据类型 MATLAB提供种基本数据类型。每种数据类型存储矩阵或数组形式的数据。矩阵或数组的最小值是到,并且是可以到任何大小的矩阵或

  • 主要内容:基本微分规则的验证,指数,对数和三角函数的导数,计算高阶导数,查找曲线的最大和最小值,求解微分方程MATLAB提供用于计算符号导数的命令。 以最简单的形式,将要微分的功能传递给命令作为参数。 例如,计算函数的导数的方程式 - 例子 创建脚本文件并在其中键入以下代码 - 执行上面示例代码,得到以下结果 - 以下是使用Octave 计算的写法 - 执行上面示例代码,得到以下结果 - 基本微分规则的验证 下面简要说明微分规则的各种方程或规则,并验证这些规则。 为此,我们将写一个第一阶导数和二