2016-07-11 7 views
0

Ich habe 2 Sätze von Datum, ihre ersten und letzten Daten sind jeweils gleich, aber ihre Daten innerhalb sind möglicherweise nicht die gleichen zueinander. Sowohl DatumA und DateB enthalten unterschiedliche Werte auf ihrem jeweiligen Datum, die Arrays A und B sindWie kann man 2 verschiedene Datensätze vergleichen, die 2 verschiedene Datensätze enthalten?

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] 

ich die Daten in datenumber konvertiert haben, dh

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 

Jetzt möchte ich den Wert vergleichen A am DatumA (n) zu dem von B am DateB, während DateB das Datum ist, das dem Datum von DateA (n) am nächsten kommt und vor diesem liegt.

Zum Beispiel

den Wert von A auf DatumA ‚2016.01.12‘ zu dem von B auf DateB ‚2016.01.11‘ verglichen wird.

Bitte helfen und vielen Dank.

+0

Was meinst du mit ** Vergleich **? Welches Ergebnis erwartest du? –

+0

Um zu sehen, ob A größer als das entsprechende B ist, sollte das Ergebnis 1 (größer) oder 0 (nicht größer) sein. – kelvin

+0

Wie Sie geschrieben haben: "' DateB' ist das Datum, das dem Datum von DateA (n) '", was sollte das Ergebnis sein, wenn DateA '' 2016-01-01'' ist? Da es in DateB keinen Eintrag gibt, der am nächsten und vor "2016-01-01" steht? –

Antwort

-1

Sie erhalten die gewünschte Ausgabe!

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 

Ausgang: -

ans = 

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

Es funktioniert! Vielen Dank! – kelvin

+0

Eigentlich habe ich 1 weitere Kriterien, dass jeder Eintrag von DateB nur einmal verglichen werden kann. Das ist DateB wird nur mit dem nächsten und nach DateB verglichen. 1 0 0 1 0 (0 0 1) 0 1 0 0 1 0 0 (0) 1 Der Wert mit Klammern sollte aussortiert werden. – kelvin

+0

1 0 0 1 0 (0 0 1) 0 1 0 0 1 0 0 (0) 1, Der Wert in Klammern sollte aussortiert werden, da das DateA in diesen Aufträgen mit Klammern mit den DateBs verglichen wird, die bereits einmal verglichen werden . Also ist mein gewünschter Ausgang [1 0 0 1 0 0 1 0 0 1 0 0 1] und nicht [1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1]. Tut mir leid für die Unannehmlichkeiten, da ich hier zum ersten Mal Fragen stelle. – kelvin

Verwandte Themen