2013-03-12 142 views
0

矩陣有2行和幾列,第一個矩陣包含1和0的交替字符串。我想使用這個二進制作爲一個決定,將它下面的信息複製到兩個單元陣列之一中。我知道這可以通過使用IF條件或while循環進行迭代來完成,但我無法清理它。MATLAB:有條件的矩陣元素分成兩個單獨的單元陣列

例如,對於

mat = [ 1 1 1 0 0 1 1 0 0 0 0 1 1 1 ;... 
     1 2 3 4 5 6 7 1 2 3 4 5 6 7 ] 

我想輸出兩個單元陣列,一個用於 '1',和一個爲 '0':

1 2 3 
6 7 
5 6 7 

和:

4 5 
1 2 3 4 
+0

將每個序列放在一個單獨的行中至關重要嗎? – 2013-03-12 07:46:47

回答

0

我相信有幾種方法可以做到這一點。有人可能會使用循環;但是,您也可以使用內置的查找功能。以下是基於您的示例的示例解決方案。

'1s', 在這裏,我們希望從第一行得到'1'的索引。

on_array= mat(2, find(mat(1,:))); 

或通過@ H.Muster

on_array= mat(2, mat(1,:)==1); 

爲 '0', 在這裏建議,我們想從第一個 '0',以獲得指數行。

off_array = mat(2, find(mat(1,:)==0)); 

或建議由@ H.Muster

off_array= mat(2, mat(1,:)==0); 

輸出格式(你想要的),我相信你知道怎麼做。祝你好運。

+3

在這種情況下'使用'找不到'mat(2,mat(1,:)== 0)'就好了。 – 2013-03-12 08:08:05

+0

@ H.Muster,我們走吧,謝謝! – 2013-03-12 08:08:57

+0

我也提出'邏輯(mat(1,:))'和'not(mat(1,:)'。我認爲Matlab喜歡比'find'更好的邏輯索引。 – 2013-03-12 12:19:15

相關問題