2014-06-05 1 views
0

에서 다른 배열의 모든 요소와 배열의 요소를 비교하기 위해 노력하고, 내가 다른 배열의 모든 요소 하나 개의 배열의 요소를 비교하기위한 벡터화 해결책을 마련하기 위해 노력하고있어. 특히 차이점을 찾아서이 차이가 특정 임계 값 미만인지 확인하고자합니다.내가 matlab에 사용하고 MATLAB

예 A는 = [1 5 10 (15)] 및 B = [12 13 14 (15), 임계 값을 만족시키는 것 인에서 임계 값 = 6

때문에 소자 (10) 및 (15) 될 각 값이 온다 때문에 b의 값 중 6 개 이내에 1과 5는 그렇지 않습니다. 현재는 for 루프를 가지고 a의 요소를 통과하고 b에서 등가 크기의 행렬을 뺍니다 (5는 5 = 5 5 5 일 것입니다). 이것은 분명히 오랜 시간이 걸리므로 벡터화 된 솔루션을 찾으려고합니다. 또한 현재 데이터 형식은 실제로 각 셀 요소의 크기가 [1 2] 인 셀이며 내 뺄셈을 수행하기 위해 cellfun 함수를 사용하고 있습니다. 이것이 두 번째 셀의 [1 2] 블록과 각 [1 2] 블록의 솔루션을 복잡하게하는지 잘 모르겠습니다. 벡터화 된 솔루션 응답은 양호합니다. 임계 값 분석을 수행 할 필요가 없습니다. 방금 배경을 추가했습니다. 사전에

감사합니다,

Manwei 찬

답변

1

사용 bsxfun :

>> ind = any(abs(bsxfun(@minus,a(:).',b(:)))<threshold) 
ind = 
    0  0  1  1 

>> a(ind) 
ans = 
    10 15 
+1

[태그 : bsxfun] 너무 재미 있습니다! – Shai

+1

@Shai 예, 좋습니다! –