2013-03-12 140 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

相关问题