2016-07-11 2 views
0

날짜가 2 세트 있습니다. 첫 번째 날짜와 마지막 날짜는 각각 동일하지만 그 날짜가 서로 같지 않을 수 있습니다. DateA 및 DateB 모두 내가 datenumber으로 날짜를 변환 한2 개의 다른 데이터 세트를 포함하는 서로 다른 날짜의 2 세트를 비교하는 방법은 무엇입니까?

DateA= '2016-01-01' 
      '2016-01-02' 
      '2016-01-04' 
      '2016-01-05' 
      '2016-01-06' 
      '2016-01-07' 
      '2016-01-08' 
      '2016-01-09' 
      '2016-01-10' 
      '2016-01-12' 
      '2016-01-13' 
      '2016-01-14' 
      '2016-01-16' 
      '2016-01-17' 
      '2016-01-18' 
      '2016-01-19' 
      '2016-01-20' 


DateB= '2016-01-01' 
      '2016-01-02' 
      '2016-01-03' 
      '2016-01-04' 
      '2016-01-05' 
      '2016-01-09' 
      '2016-01-10' 
      '2016-01-11' 
      '2016-01-12' 
      '2016-01-13' 
      '2016-01-15' 
      '2016-01-16' 
      '2016-01-17' 
      '2016-01-19' 
      '2016-01-20' 

A = [5, 2, 3, 4, 6, 1, 7, 9, 3, 6, 1, 7, 9, 2, 1, 4, 6] 

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

배열 A와 B 그들의 각 날짜에 다른 값을 포함 즉

datenumberA= 736330 
       736331 
       736333 
       736334 
       736335 
       736336 
       736337 
       736338 
       736339 
       736341 
       736342 
       736343 
       736345 
       736346 
       736347 


datenumberB= 736330 
       736331 
       736332 
       736333 
       736334 
       736338 
       736339 
       736340 
       736341 
       736342 
       736344 
       736345 
       736346 
       736348 
       736349 

지금은 값을 비교하려면 A는 DateA (n)을 B의 B (DateB)로, DateB는 DateA (n)의 날짜와 가장 가까운 날짜입니다. DateB '2016년 1월 11일'에서 B의 것과 DateA '2016년 1월 12일'상의 값을 비교 예

,

.

많은 도움과 고마워요.

+0

당신이 ** 비교하여 무엇을 의미합니까 **? 어떤 결과를 기대합니까? –

+0

A가 해당 B보다 큰지 확인하려면 결과가 1 (큰 값) 또는 0 (큰 값이 아님)이되어야합니다 – kelvin

+0

"DateB"는 DateA n)' ", DateA가''2016-01-01 '일 때 결과는 무엇입니까? DateB에는 '2016-01-01 '전에 가장 가까운 항목이 없으므로? –

답변

-1

원하는 출력을 얻을 수 있습니다!

all_k=0; 
out(1)=1; % not comparing the first index as you mentioned 
for n=2:size(datenumberA,1) 
    j=0; 
    while 1 
     k=find(datenumberB+j==datenumberA(n)-1); %finding the index of DateB closest to and before DateA(n) 
     if size(k,1)==1 break; end %if found, come out of the while loop 
     j=j+1;   % otherwise keep adding 1 in the values of datenumberB until found 
    end 
    if size(find(all_k==k),2) ~=1 % to avoid if any DateB is already compared 
     out(end+1)=A(n)> B(k); %Comparing Value in A with corresponding value in B 
     all_k(end+1)=k; end %Storing which indices of DateB are already compared 
end 
out' %Output 

출력 : -

ans = 

1 
0 
0 
1 
0 
0 
1 
0 
0 
1 
0 
0 
1 
+0

그것은 작동합니다! 고맙습니다! – kelvin

+0

실제로 나는 DateB의 각 항목을 한 번만 비교할 수있는 기준을 1 개 더 갖고 있습니다. 즉, DateB는 가장 가까운 첫 번째 날짜와 DateB 이후에만 비교됩니다. 1 0 0 1 0 (0 0 1) 0 1 0 0 1 0 0 1 대괄호가있는 값을 정렬해야합니다. – kelvin

+0

1 0 0 1 0 (0 0 1) 0 1 0 0 1 0 0 1, 대괄호가있는 값은 대괄호가있는 해당 주문의 DateA가 이미 비교중인 DateB와 비교되므로 정렬해야합니다 . 따라서 원하는 출력은 [1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1]이 아니라 [1 0 0 1 0 0 1 0 0 1 0 0 1]입니다. 불편을 끼쳐 드려 죄송합니다. 여기 처음 질문을하는 것이므로 – kelvin

관련 문제