我目前有一个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.
任何帮助将不胜感激! :)
答案 0 :(得分:3)
{}
索引将返回comma separated list,这将提供多个输出。当您将其传递给find
时,它与将单元格数组的每个元素作为单独的输入传递相同。这就是导致许多输入参数出错的原因。
您需要使用[]
将逗号分隔列表括起来以创建一个或多个数组。此外,您不需要find
,因为您可以使用逻辑索引来获取所需的列。此外,您还需要使用()
进行索引以获取相关行,再次避免使用以逗号分隔的列表。
variable = cellArray(:, [cellArray{1,:}] == 1)