选择单元格数组中第一行中包含特定值的所有列?

时间:2016-07-21 20:15:17

标签: matlab cell

我目前有一个4x3500的单元阵列。第一行是单个数字,第2行是单个字符串,第3行和第4行也是单个数字。

例如:

1    1    2   3   3   4   5   5   5   6
hi   no   ya  he ........ % you get the idea
28   34   18  0   3 ......
55   2    4   42  24 .....

我希望能够选择第一行中具有特定值的所有列。 ie 如果我想要'1'作为第一行值,它将返回

1    1
hi   no
28   34
55   2

然后我想基于第二行的字符串进行排序。 ie 如果我想要'shi',它会返回:

1
hi
28
55

我试图这样做:

variable = cellArray{:,find(cellArray{1,:} == 1)}

但是我一直在接受:

Error using find
Too many input arguments.

Error using ==
Too many input arguments.

任何帮助将不胜感激! :)

1 个答案:

答案 0 :(得分:3)

{}索引将返回comma separated list,这将提供多个输出。当您将其传递给find时,它与将单元格数组的每个元素作为单独的输入传递相同。这就是导致许多输入参数出错的原因。

您需要使用[]将逗号分隔列表括起来以创建一个或多个数组。此外,您不需要find,因为您可以使用逻辑索引来获取所需的列。此外,您还需要使用()进行索引以获取相关行,再次避免使用以逗号分隔的列表。

variable = cellArray(:, [cellArray{1,:}] == 1)