2016-10-03 246 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應該強制用戶使用分號';'開始一個新行以避免像這樣的混淆。同樣在我看來,允許使用空間來分隔列是一個壞主意。填充矩陣值時,用戶應該被迫使用逗號','和分號';'。我認爲他們不是出於兼容性的原因,因爲這會打破現有的大量程序。 –