matlab:在合并了相关时间戳后扩展矩阵

时间:2019-03-01 17:13:54

标签: matlab timestamp time-series

我必须矩阵A(n,2)和B(m,2)。它们都在规定的时间显示信号电压。在这两个矩阵中,第一列显示该时间点的时间,第二列显示该时间点的电压。 为了便于演示,我在下面的图片中以水平形式展示了它们:enter image description here

我将在测试中比较这些信号,因此我需要使它们的时间戳彼此相同。 因此,时间戳记应为A和B的时间戳记并集,即 [1 2 3 4 5 10 11 13 15 16]

使用这个新的时间戳,我需要扩展A和B,以便在有样本且该时刻必须反映其值,否则应将该时刻的电压视为 0 下面: enter image description here

在我的实际应用程序中,我有成千上万个像A和B这样的矩阵,因此我在包含所有时间戳的矩阵上使用了unique,因此我将拥有所有时间戳。在我以前的问题中,我使用interp1来处理缺少时间戳的情况,它将对缺少的样本进行插值,但是当前我需要在样本丢失时将 0 用作电压值。 我想知道如何处理此案?

输入:

A= [1   2   3   4   10  11  15; 1.01    1.02    1.03    1.04    1.10    1.11    1.15]


B= [1   3   5   10  13  16;2.01 2.03    2.05    2.10    2.13    2.16]

输出:

Ax  = [1    2   3   4   5   10  11  13  15  16; 1.01    1.02    1.03    1.04    0   1.10    1.11    0   1.15    0]
Bx = [1  2  3   4   5   10  11  13  15  16;2.01 0   2.03    0   2.05    2.10    0   2.13    0   2.16]

1 个答案:

答案 0 :(得分:1)

这是一种简单的方法。假设每个矩阵的第一行都没有重复的值,并利用了以下事实:扩展矩阵时缺少的值会自动设置为0

u = unique([A(1,:) B(1,:)]);
Ax = u;
Ax(2, ismember(u, A(1,:))) = A(2,:);
Bx = u;
Bx(2, ismember(u, B(1,:))) = B(2,:);