x(:)和x(1:end)的矩阵索引输出是不同的

Hua*_*ang 3 indexing matlab matrix

以下是测试代码及其矩阵索引输出.在MATLAB中是不是x(:)x(1:end)同样的事情?为什么他们的产出不同?

>>x = [1 2 3;4 5 6]
x =
     1     2     3
     4     5     6
>> xx = x(:)
xx =
     1
     4
     2
     5
     3
     6
>> xx = x(1:end)
xx =
     1     4     2     5     3     6
Run Code Online (Sandbox Code Playgroud)

Cri*_*ngo 7

在MATLAB中有许多不同的索引方法.这个问题涉及其中两种模式.总之,x(:)不是捷径x(1:end).

x(1:end)相当于x(1:numel(x)),在这种情况下是x(1:6).p=1:6是带索引的行向量.在这里,我们告诉MATLAB创建一个新的行向量,其中每个元素i对应x(p(i)).执行x((1:6).')将产生列向量,因为索引数组是列向量.x([1,2;3,4;5,6])将产生3x2矩阵,因为索引数组是3x2矩阵.

x(:)告诉MATLAB将数组重新整形x为列向量.它相当于reshape(x,[],1).