分享

Matlab数组

 薛定谔的猫leo 2019-07-03

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

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

MATLAB中的特殊数组

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

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

例如 -

zeros(5)
MATLAB

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

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
Shell

ones()函数创建一个所有元素为1的数组 -

例如 -

ones(4,3)
MATLAB

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

Trial>> ones(4,3)

ans =

     1     1     1
     1     1     1
     1     1     1
     1     1     1
Shell

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

例如 -

eye(4)
MATLAB

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

Trial>> eye(4)

ans =

     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
Shell

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

例如 -

rand(3, 5)
MATLAB

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

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
Shell

魔方

魔方是一个平方,它产生相同的和,它的元素被逐行,逐列或者对角线地添加时。

magic()函数创建一个魔术方阵。这需要一个参数,指定正方形的大小。 参数必须是大于或等于3的标量。

magic(4)
MATLAB

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

Trial>> magic(4)

ans =

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

多维数组

具有二维以上的数组在MATLAB中被称为多维数组。MATLAB中的多维数组是正常二维矩阵的扩展。

通常要生成一个多维数组,首先创建一个二维数组然后再扩展它。

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

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

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

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

a =

     7     9     5
     6     1     9
     4     3     2
Shell

数组a3×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
Shell

还可以使用ones()zeros()rand()函数来创建多维数组。

例如,

b = rand(4,3,2)
MATLAB

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

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
Shell

也可以使用cat()函数来构建多维数组。它沿着指定的维度连接数组列表 -

cat()函数的语法是 -

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

其中,

  • 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])
MATLAB

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

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
Shell

数组函数

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
MATLAB

运行文件时,显示以下结果 -

ans =  8
ans =  4
ans =  23
Shell

数组元素的循环移位

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

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.
MATLAB

运行文件文件时,显示以下结果 -

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
Shell

排序数组

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

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
MATLAB

运行文件文件时,显示以下结果 -

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
Shell

单元阵列

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

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

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

其中,

  • 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}
MATLAB

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

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
}
Shell

访问单元格数组数据

有两种方法来引用单元格数组的元素 -

  • 将第一个括号()中的索引包围,以引用单元格集

  • 将大括号{}中的索引括起来,以引用单个单元格内的数据

当将索引包围在第一个括号中时,它指的是这组单元格。

括号中的单元格数组索引是指单元格集。

例如:

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
}
Shell

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

例如 -

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

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

ans = Blue
ans = Green
ans = Yellow
Shell

上一篇: Matlab矩阵 下一篇: Matlab冒号符号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多