벡터

2013-07-30 10 views
0
I 벡터 B 각 요소에 작은 음이 아닌 차분 벡터 A의 요소의 ROWNUMBER 반환하는 벡터 C을 작성하고자
A = [1 3 5 8] 
B = [1 2 3 4 5 6 7 8] 

에서 소자 사이의 최소의 양의 차이를 찾는다.벡터

그래서, 위의 예를 감안할 때, 그것은 반환해야합니다 :

C = [1 2 2 3 3 4 4 4]  
+2

에 오신 것을 환영합니다. 당신이 시도한 것을 보여줄 때 더 많은 도움을 얻고, 어디서 붙어 있는지 설명하십시오. 페이지 상단의 "도움말"링크를 통해 해당 사이트의 둘러보기, 질문하는 방법 등을 확인하십시오. – John

+0

배열이 예제 에서처럼 항상 정렬되어 있습니까? – japreiss

+0

예, 배열은 항상 정렬됩니다. – AJM

답변

1

을 나는이 작업을 수행하는 방법에는 여러 가지가 있습니다 확신 해요. 여기에 하나 :

A = [1 3 5 8] 
B = [1 2 3 4 5 6 7 8] 

%create matrices of the values to subtract 
[a,b] = meshgrid(A,B); 
%subtract 
aLessB = a-b; 
%make sure we don't use the negative values 
aLessB(aLessB < 0) = Inf; 
%sort the subtracted matrix 
[dum, idx] = sort(aLessB, 2, 'ascend'); 

idx (:, 1)은 찾고있는 해결책입니다.

1

대안 솔루션 : 스택 오버플로

D = bsxfun(@minus, A', B); 
D(D < 0) = Inf; 
[~, C] = min(D, [], 1);