【问题标题】:MatLab: Find numeric values in cell arrayMatLab:在元胞数组中查找数值
【发布时间】:2014-05-26 09:48:34
【问题描述】:

在我的单元格数组test = cell(1,2,20,14); 中,我想在子集 test(:,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..

如何找到相应的索引?

谢谢。

【问题讨论】:

    标签: matlab find cell-array


    【解决方案1】:

    试试这个直接访问第三列的值 -

    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))
    

    【讨论】:

    • 真的很好!您能否将此代码扩展到两个条件,例如:给我第三列,其中第一列 == 0.9,第二列是 0.95?
    • @PeterRussel 查看编辑 1
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 2011-03-28
      • 2015-04-23
      • 2012-08-07
      • 2016-08-01
      • 2013-10-27
      相关资源
      最近更新 更多