我必须矩阵A(n,2)和B(m,2)。它们都在规定的时间显示信号电压。在这两个矩阵中,第一列显示该时间点的时间,第二列显示该时间点的电压。
为了便于演示,我在下面的图片中以水平形式展示了它们:
我将在测试中比较这些信号,因此我需要使它们的时间戳彼此相同。 因此,时间戳记应为A和B的时间戳记并集,即 [1 2 3 4 5 10 11 13 15 16]
使用这个新的时间戳,我需要扩展A和B,以便在有样本且该时刻必须反映其值,否则应将该时刻的电压视为 0 下面:
在我的实际应用程序中,我有成千上万个像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]
答案 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,:);