MatLab在两个单元阵列中查找具有特定值的单元格

时间:2014-05-21 13:58:00

标签: arrays matlab indexing cell cell-array

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

两个单元阵列具有以下结构:

单元格数组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))而不是" main"单元格数组C1(:)C2(:)

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

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_cellnum2C2_cellnum19subcellnum736