Octave 入门教程:数组

Octave 入门教程目录,请点击: https://blog.csdn.net/benzhujie1245com/article/details/83146777



  本内容将介绍 Octave 中的数组的创建和操作。

一、数组

  Octave 中所有数据类型的所有变量都是数组。前面介绍的向量是一维数组,矩阵是二维数组。
  我们先来学习一下特殊类型的数组。

1.1 特殊数组

  我们将学习一些创建特殊数组的函数。对于这些函数(除 magic() 外),一个参数创建一个正方形阵列,双参数创建矩形阵列。另外,还可以通过 help 命令了解更多信息。

函数 描述
zeros() 创建一个全零数组。
ones() 创建一个所有元素为 1 的数组。
eye() 创建一个单位数组。
rand() 在 (0,1) 上创建均匀分布的随机数
magic() 魔方,创建一个魔术方阵(每行、每列和对角线的和都相等)。一个参数,并且是大于或等于 3 的标量。

  例如:

>> zeros(3)
ans =

   0   0   0
   0   0   0
   0   0   0

>> zeros(3, 4)
ans =

   0   0   0   0
   0   0   0   0
   0   0   0   0

>> ones(3, 4)
ans =

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

>> eye(3)
ans =

Diagonal Matrix

   1   0   0
   0   1   0
   0   0   1

>> rand(3, 5)
ans =

   0.8896180   0.3087815   0.3119780   0.0491327   0.3764484
   0.4404895   0.1463536   0.5014016   0.6479841   0.8865985
   0.7034544   0.5270160   0.0047581   0.9184260   0.5798495

>> magic(5)
ans =

   17   24    1    8   15
   23    5    7   14   16
    4    6   13   20   22
   10   12   19   21    3
   11   18   25    2    9

>>

1.2 多维数组

  具有二维以上的数组在 Octave 中被称为多维数组。Octave 中的多维数组是二维矩阵的扩展。
  通常要生成一个多维数组,需要先创建一个二维数组然后再扩展它。例如:

>> a = [1,2,3,4; 2,3,4,5; 3,4,5,6]; % 先创建一个 3x4 的数组
>> a(:, :, 2) = [1,1,1,1; 2,2,2,2; 3,3,3,3] % 添加第 3 维信息
a =

ans(:,:,1) =

   1   2   3   4
   2   3   4   5
   3   4   5   6

ans(:,:,2) =

   1   1   1   1
   2   2   2   2
   3   3   3   3

>>

  还可以通过 ones()zeros()rand() 函数来创建多维数组。例如:

>> rand(4, 3, 2)
ans =

ans(:,:,1) =

   0.32597   0.71631   0.98552
   0.67531   0.84928   0.79385
   0.37400   0.20648   0.36616
   0.49812   0.26846   0.53032

ans(:,:,2) =

   0.19587   0.74235   0.92824
   0.55542   0.18047   0.10010
   0.14898   0.89837   0.88884
   0.39869   0.93090   0.44189

>>

  也可以通过 cat() 函数来创建多维数组。它沿着指定的维度连接数组列表。cat() 的使用语法如下:

b = cat(dim, a1, a2 ...)

其中,各个参数的具体信息如下:

  • b 是创建的新数组。
  • a1,a2,… 是有连接的数组。
  • dim 是一起串联数组的维度,即 b 的维度。

  例如:

>> a = zeros(3);
>> b = ones(3);
>> c = rand(3);
>> d = cat(2, a, b, c) % d 是二维数组
d =

   0.00000   0.00000   0.00000   1.00000   1.00000   1.00000   0.57484   0.38160   0.04654
   0.00000   0.00000   0.00000   1.00000   1.00000   1.00000   0.57259   0.60139   0.29039
   0.00000   0.00000   0.00000   1.00000   1.00000   1.00000   0.54603   0.68865   0.45573

>> d = cat(3, a, b, c) % d 是三维数组
d =

ans(:,:,1) =

   0   0   0
   0   0   0
   0   0   0

ans(:,:,2) =

   1   1   1
   1   1   1
   1   1   1

ans(:,:,3) =

   0.574837   0.381605   0.046540
   0.572595   0.601393   0.290390
   0.546034   0.688649   0.455734

>>

1.3 排序数组

  在 Octave 中使用 sort 对数组排序,例如:

>> v = [12, 25, 45, 56, 36, 18];
>> sort(v)  % 对向量中的所有元素进行排序
ans =

   12   18   25   36   45   56

>> m = [2,6,4; 5,3,9; 2,0,1];
>> sort(m, 1) % 对矩阵中元素按行之间进行排序(即对每列的元素进行排序)
ans =

   2   0   1
   2   3   4
   5   6   9

>> sort(m, 2) % 对矩阵中元素按列之间进行排序(即对每行的元素进行排序)
ans =

   2   4   6
   3   5   9
   0   1   2

>>

1.4 数组函数

  Octave 提供以下对数组进行操作的函数:

函数 描述
length 向量的大小或数组的长度
ndims 数组的维数
size 数组的维度
numel 数组的元素数量
isempty 确定数组是否为空
isscalar 确定输入是否为标量
isvector 确定输入是否为向量
isrow 确定输入是否为行向量
iscolumn 确定输入是否为列向量
ismatrix 确定输入是否为矩阵
blkdiag 从输入参数构造块对角矩阵
circshift 循环移位
ctranspose 复共轭转置
diag 矩阵对角矩阵和对角线
flipdim 沿着指定的尺寸翻转数组
fliplr 从左到右翻转矩阵
flipud 向下翻转矩阵
ipermute 反转 N-D 阵列的置换维度
permute 重新排列 N-D 数组的维度
repmat 复制和平铺数组
reshape 重塑数组
rot90 旋转矩阵 90 度
shiftdim 移动维度
issorted 确定设置元素是否按排序顺序
sort 按升序或降序排列数组元素
sortrows 按升序排列行
squeeze 删除单例维度
transpose 转置
vectorize 向量化表达式

1.5 单元阵列

  后续使用时再更新具体内容

参考:
[1] https://www.w3cschool.cn/matlab/
[2] http://m.yiibai.com/matlab/

你可能感兴趣的:(04_工具使用,#,04.01_Octave,入门教程)