Array

  • MATLAB 面向数组设计, 其中的任何数据类型, 都是按照数组的形式进行存储和运算的
  • 这里说的数组是广义的,它可以只有一个元素,也可以是一行或一列元素, 二维数组多维数组
  • 数组内元素也可以是任意数据类型, 如数值型逻辑型, 字符型, 元胞型
    • 但非异构类数组 (cellstructure 等) 内的元素类型必须相同
  • MATLAB 中的 array 也有类似的 Python Sequence Unpacking
    • 但不同于 Python 中的无括号默认为原则, MATLAB 中不能省略方括号 []
  • 数组中区分同维数元素的分隔符为逗号 ,空格
  • 对数组的有返回值的操作返回的都是新数组

数组分类

  • 按照元素个数和排列方式:
    • 空数组 empty array - 0 个元素
      • 空数组为 double 类
    • 标量 scalar - 1 个元素 (一行一列)
    • 向量 vector - 一行或一列元素 (一维数组)
    • 二维数组
    • 多维数组
  • 对于 empty array, scalar, vector, 大部分情况 MATLAB 仍作为二维数组处理
  • 按照储存方式
    • 普通数组
    • 稀疏数组 (大部分元素为 0)
  • 按照元素类型
    • 数值数组
    • 字符数组
    • 逻辑数组等

数组属性

  • 结构测试函数 (返回逻辑值)
    • isempty
    • ismatrix
    • isvector
    • isrow
    • iscolumn
    • isscalar
    • issparse
  • 数组大小
  • 数据类型测试函数
    • isnumeric
    • isreal
    • isfloat
    • isinteger
    • islogical
    • ischar
    • isstruct
    • iscell
    • iscellstr
  • 顺序测试函数
    • issorted: issorted(A,__) = isequal(A,sort(A,__))
    • issortedrows: issortedrows(A,__) = isequal(A,sortrows(A,__))

Matlab Array - Indexing

通过数组索引可以

  • 访问/截取数组中部分元素
  • 扩展数组
  • 删除数组中部分元素: A(index) = []

Matlab Array - Creating

Matlab Array - Concatenating

Expanding

通过数组索引中的 position index 可以扩展数组大小, 如下

>> A = ones(3)
A =
     1     1     1
     1     1     1
     1     1     1
 
>> A(5,5) = 2
A =
     1     1     1     0     0
     1     1     1     0     0
     1     1     1     0     0
     0     0     0     0     0
     0     0     0     0     2
  • Position index 需大于 A 的大小, 否则为修改 A 的元素
  • 其余位置填 0

Reshaping

r 以下所有操作均返回新数组

  • Fliping
    • 函数 flip
    • 函数 flipud: flipud(A) 上下翻转, 即沿第 1 维翻转
    • 函数 fliplr: fliplr(A) 左右翻转, 即沿第 2 维翻转
    • 函数 rot90: rot90(A,<k>)
      • 逆时针旋转数组 A
      • 对于多维数组, 旋转的是1, 2维形成的平面

多维数组

多维数组的大于 2 的维数称为 “页”, 直观的理解是每页储存的是 matrices.

一个规律是, 一般适用于 matrices 的操作也适用于多维数组, 而操作的就是多维数组1, 2维形成的平面, 即页中的 matrices.

  • 维数置换A
    • 函数 permute
    • 函数 ipermute
  • Transpose '
  • 函数 reshape
  • 函数 squeeze: squeeze(A) 在至少保留两维的情况下, 去除 A 长度为 1 的维数, 返回数组中元素与 A 相同

Rearranging

  • 轮换
    • 函数 circshift
    • 函数 shiftdim: B = shiftdim(A,n) shifts the dimensions of an array A by n positions
  • 排序

Finding

Matlab Functions - find