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/

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值