2016-10-03 206 views
0

我试图把一个数组中的值按照一定的顺序放到另一个数组中。但是,它们与原始数据放置在相同的维度中。操纵矩阵尺寸

nodeState = [2 8 5; 1 6 4; 9 0 5]; 

cState = []; 

cState = [nodeState(1,1) nodeState(1,2) nodeState(1,3) 
        nodeState(2,3) nodeState(3,3) nodeState(3,2) 
        nodeState(3,1) nodeState(2,1) nodeState(2,2)]; 

我所期待是我cState是这个产品尺寸

2 8 5 4 5 0 9 1 6

,而不是这个产品尺寸

2  8  5 

4  5  0 

9  1  6 

我需要什么做的?

回答

3

如果将一个声明拆分为多行,则必须使用...否则Matlab会将Carriage返回值解释为一个新行,因此它将创建一个矩阵而不是一个向量。

只要做到:

cState = [nodeState(1,1) nodeState(1,2) nodeState(1,3) ... 
      nodeState(2,3) nodeState(3,3) nodeState(3,2) ... 
      nodeState(3,1) nodeState(2,1) nodeState(2,2)]; 
+0

哇,这是它!他们需要把这个放在初学者文档中。 – Jam1

+0

@ Jam1实际上,虽然有点难以找到:https://www.mathworks.com/help/matlab/matlab_prog/symbol-reference.html#bsgigzp-29 - 请参阅*定义数组*。 – rayryeng

+1

我真的认为Matlab应该强制用户使用分号';'开始一个新行以避免像这样的混淆。同样在我看来,允许使用空间来分隔列是一个坏主意。填充矩阵值时,用户应该被迫使用逗号','和分号';'。我认为他们不是出于兼容性的原因,因为这会打破现有的大量程序。 –