【问题标题】:MATLAB: Conditionally matrix elements into two separate cell arraysMATLAB:有条件地将矩阵元素转换为两个单独的单元格数组
【发布时间】:2013-03-12 07:33:45
【问题描述】:

一个矩阵有 2 行和几列,第一个包含交替的 1 和 0 字符串。我想使用这个二进制文件来决定将它下面的信息复制到两个单元格数组之一中。我知道这可以通过使用 IF 条件或 while 循环的迭代来完成,但我在清理它时遇到了麻烦。

例如,对于

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 ]

我想输出两个元胞数组,一个用于“1s”,一个用于“0s”:

1 2 3
6 7
5 6 7

和:

4 5
1 2 3 4 

【问题讨论】:

  • 将每个序列放在单独的行中是否重要?

标签: matlab matrix indexing conditional cells


【解决方案1】:

我敢肯定,有几种方法可以做到这一点。一个可能正在使用循环;但是,您也可以充分利用内置的查找功能。以下是基于您的示例的示例解决方案。

对于“1”, 在这里,我们想从第一行获取带有 '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);

对于输出格式(您想要的格式),我相信您知道该怎么做。祝你好运。

【讨论】:

  • 在这种情况下不需要使用“find”,mat(2, mat(1,:)==0) 就可以了。
  • 我也建议logical(mat(1,:))not(mat(1,:)。我认为 Matlab 比 find 更喜欢逻辑索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多