根据时间值合并2个向量

wew*_*ewa 0 matlab

我想根据时间值合并2个向量.这应该是这样的(第1列=时间,第2列=实际值):

A =

           1         234
           3         121
           4         456
           6        6756

B =

           2         435
           5          90
          10         365
Run Code Online (Sandbox Code Playgroud)

结果:

C =

           1         234
           2         435
           3         121
           4         456
           5          90
           6        6756
          10         365
Run Code Online (Sandbox Code Playgroud)

在Matlab中有没有一种优雅的方法来实现这一点?

bea*_*ker 5

这是一个简单的单行:

C = sortrows([A;B])

C =

      1    234
      2    435
      3    121
      4    456
      5     90
      6   6756
     10    365
Run Code Online (Sandbox Code Playgroud)

请注意,这假定第1列中的所有时间值都是唯一的.如果不是这种情况,您可以使用accumarray:

A =

      1    234
      3    121
      4    456
      6   6756

B =

     2   435
     5    90
    10   365

B = [B; 1 512]
B =

     2   435
     5    90
    10   365
     1   512

C = [A;B];
D = accumarray(C(:,1),C(:,2));
U = unique(C(:,1));
E = [U,D(U)]
E =

      1    746    %// 764 = 234 + 512
      2    435
      3    121
      4    456
      5     90
      6   6756
     10    365
Run Code Online (Sandbox Code Playgroud)