2013-04-21 3 views
0

인덱스의 셀 배열을 만들어야합니다.인덱스 집합 빌딩을 벡터화합니다.

oriVals = unique(ori); 
oriIndicies = cell(numel(oriVals), 1); 
for kOri = 1:numel(oriVals) 
    oriIndicies{kOri} = find(ori == oriVals(kOri)); 
end 

내가 MATLAB의 기본 기능을 통해 더 컴팩트하게이 쓸 수 : 각 셀은 다음 코드에서 ori의 고유 한 값에 해당하는 모든 인덱스를 포함? 나는 내 자신의 글을 쓰기 전에 어떤 것도 존재하지 않도록하고 싶다.

oriIndicies = cell(numel(oriVals), 1); 
for kOri = 1:numel(oriVals) 
    oriIndicies{kOri} = find(ori == oriVals(kOri)); 
end 

당신이 쓸 수 있습니다 :

답변

1
대신

oriIndicies = arrayfun(@(x) find(ori == x), oriVals, 'UniformOutput', false); 

하지만 조심, oriIndicies 이제 행이 아닌 열입니다. 또한 익명 함수를 평가하는 속도가 느리기 때문에 메모리 할당이있는 for 루프보다 확실히 느립니다.

+0

차가움. 경고를 주셔서 감사합니다. – Memming

+1

아마 더 컴팩트하지만, 달리는 데는 시간이 더 걸릴 것입니다. –

관련 문제