如何比较包含2组不同数据的2组不同日期



我有 2 组日期,它们的 1 个和最后一个日期分别相同,但它们的日期可能彼此不同。DateA 和 DateB 在每个日期上都包含不同的值,即数组 A 和 B。

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]

我已将日期转换为日期编号,即

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 在日期 A(n)

的值与 B 在日期 B 上的值,而日期 B 是最接近日期 A(n) 日期且早于日期的日期。

例如

比较日期 A '2016-01-12' 的值

与日期 B 在日期 B '2016-01-11' 的值。

请帮助并非常感谢。

它会给你想要的输出!

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

相关内容

  • 没有找到相关文章

最新更新