聘我网

新概念招聘3.0

MATLAB中(:)的语法问题

vote up0vote downstar
>> I=[2 1 3;3 2 4]

I =

     2     1     3
     3     2     4

>> I(:)

ans =

     2
     3
     1
     2
     3
     4

>> I(1:2)

ans =

     2     3

>> 

为何I(:)返回一个完整的列向量,而I(1:2)仅返回两项,而且是行向量?

 

1 个答复

vote up0vote downcheck

(:)操作符的语法参考此处,它的作用是将任意维度的矩阵reshape成一个列向量。

下面两句是等价的:

a = I(:);
a = reshape(I,[],1);

由于1:2返回的是个行向量,所以I(1:2)也是行向量,如果要返回列向量,可以用I((1:2)')

注意矩阵的索引运算是针对其中的元素(prod(size(I))),而不是其中的行或列,这是I(1:2)仅返回两项的原因。

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.