【问题标题】:MatLab find cells with specific values in two cell arraysMatLab 在两个元胞数组中查找具有特定值的元胞
【发布时间】:2014-07-10 05:25:58
【问题描述】:

我想找到两个不同单元格数组中相同位置且具有特定值的单元格。

这两个元胞数组的结构如下:

元胞数组C1= cell(20,1)。在每个单元格中都有另一个单元格cell(8129,8) 保存 [0,1] 范围内的双精度值。

元胞数组C2= cell(20,1)。在每个单元格中都有另一个单元格cell(8192,8) 也包含 [0,1] 范围内的双精度值。

我知道想要找到那些 (1) 具有我确定的特定值的单元格(例如 C1_value = 0.8 和 C2_value = 0.85)和 (2) 在相应子单元格 (!) 数组中的相同位置(例如 C1{2}(736) == 0.8 和 C2(19)(736) == 0.85)。注意:同一位置仅指子单元格数组 (cell(8192,8)) 而不是“主”单元格数组 C1(:)C2(:)

提前致谢!

【问题讨论】:

标签: arrays matlab indexing cell cell-array


【解决方案1】:

看看这种方法是否适合你 -

sz = cell2mat(cellfun(@size,C1(1),'uni',0))
row1 = sz(1);
col1 = sz(2);

t1 = reshape(horzcat(C1{:}),row1,col1,[])
t2 = reshape(horzcat(C2{:}),row1,col1,[])

b1 = t1==C1_value
b2 = t2==C2_value

tt1 = reshape(b1,row1*col1,[])' %//'
tt2 = reshape(b2,row1*col1,[])' %//'

tt22 = permute(tt2,[3 2 1])
tt3 = bsxfun(@and,tt1,tt22)
[C1_cellnum,subcellnum,C2_cellnum] = ind2sub(size(tt3),find(tt3)) %// outputs

因此,对于您的样本数据,您必须 -

C1_cellnum 作为2C2_cellnum 作为19subcellnum 作为736

【讨论】:

  • @PeterRussel 很高兴它对你有用,这是一个非常有趣的问题,我自己对单元阵列的了解很少,所以感谢你的问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
相关资源
最近更新 更多