同步两个数据向量

时间:2018-03-17 11:52:41

标签: matlab

我有两个数据向量,每个都有不同的采样率,在每个向量内部,一些样本被遗漏,因此采样频率不固定。我想将它们映射在一起,以便我可以在正确的时间比较两个图形。我知道插值(matlab中的interp1)可用于修复各个向量中采样频率的不规则性,但是如何将两个向量映射到同时开始和结束。 我有每个向量的时间向量,你能指导我什么是解决这个问题的最佳方法吗?

1 个答案:

答案 0 :(得分:3)

要将两个信号转换为相同的时间矢量,请定义新的时间矢量,并为每个输入信号调用interp1。下面是具有不同采样间隔(t1和t2)的2个信号的示例。第一个信号(y1)是一个幅度为1的正弦波,第二个(y2)是一个幅度为2的正弦波。

% define first signal with dropouts 
t1 = [0:.02:0.5, 0.7:.02:1]; 
y1 = sin(2*pi*t1);
figure; plot(t1, y1, '.')

% define second signal with dropouts 
t2 = [0:.01:0.2, 0.3:.01:1];
y2 = 2*sin(2*pi*t2);
figure; plot(t2, y2, '.')

% convert both signals to new time 
t_new = 0:0.01:1;
y1_new = interp1(t1, y1, t_new);
y2_new = interp1(t2, y2, t_new);

figure; plot(t_new, [y1_new; y2_new], '.')

如果开始和结束时间不同,下面的代码可以计算它。

t_new = min([t1(1) t2(1)]):0.01:max([t1(end) t2(end)]);

有几种方法可以在时间间隔(最近,前一个,线性等)之间插值。输入以下命令以获取更多信息。

help interp1