MatLab:在单元格数组中查找数值

时间:2014-05-26 09:48:35

标签: matlab find cell-array

在我的单元格数组test = cell(1,2,20,14);中,我想在子集测试中找到数值(:,1,1,1)。

例如test(:,:,1,1)如下所示:

>> test(:,:,1,1)

ans = 

[     0]    [0.1000]    [57]
[0.9000]    [0.9500]    [73]

我想在第一列中找到包含0.9的单元格的索引,因此我可以访问第三列(在本例中为值73)。我试过了:

find(test{:,:,1,1} == 0.9)给出:

Error using == Too many input arguments.

如何找到相应的索引?

感谢。

2 个答案:

答案 0 :(得分:2)

尝试此操作直接访问第三列值 -

cell2mat(test(vertcat(test{:,1,1,1})==0.9,3,1,1))

编辑1:如果您想测试匹配w.r.t. test的子集的前两列,请使用此 -

v1 = reshape(vertcat(test{:,[1 2],1,1}),[],2)
cell2mat(test(ismember(v1,[0.9 0.95],'rows'),3,1,1))

答案 1 :(得分:1)

只需在[]周围添加test{:,:,1,1}括号即可。这将不同的单元格值一起包装到一个向量/矩阵中。 像这样:

[index1, index2] = find([test{:,:,1,1}] == 0.9)