2014-05-21 1 views
1

두 개의 다른 셀 배열에서 같은 위치에 있고 특정 값을 가진 셀을 찾고 싶습니다.MatLab은 두 개의 셀 배열에서 특정 값을 가진 셀을 찾습니다.

셀 어레이 C1= cell(20,1) :

두 셀 어레이는 다음의 구조를 갖는다. 각 셀에는 [0,1]의 범위에서 double 값을 갖는 다른 셀 cell(8129,8)이 있습니다.

셀 어레이 C2= cell(20,1). 각 셀에는 [0,1]의 범위에서 이중 값을 갖는 또 다른 셀 cell(8192,8)이 있습니다.

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

감사합니다. 이 방법은 당신을 위해 작동하는 경우

+0

힌트 : http://www.mathworks.co.uk/help/matlab/ref/cellfun.html – kkuilla

+0

샘플 케이스의 출력은 얼마입니까? '736'? 또는 '2'와 '19'? – Divakar

답변

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_cellnumC2_cellnum19로하고 736subcellnum, 2있다.

+0

신난다, 고마워! –

+0

@ PeterRussel 다행스럽게도 흥미로운 문제 였고 셀 어레이에 대한 통찰력을 얻었으므로 문제가 발생했습니다! – Divakar