【问题标题】:synchronizing two data vectors同步两个数据向量
【发布时间】:2018-08-26 09:39:15
【问题描述】:

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

【问题讨论】:

  • 所以您的意思是在 1 个图表上绘制 2 个数据?
  • 是的,我需要考虑它们之间的误差,我知道即使样本数量不同,我们也可以将它们绘制在同一张图中,但我也需要它来进行比较。

标签: matlab


【解决方案1】:

要将两个信号转换为相同的时间向量,请定义一个新的时间向量,并为每个输入信号调用 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

【讨论】:

  • 非常感谢!这很有帮助!我现在可以轻松比较它们,我已经更改了 t_new 中的步长以尽可能多地保留信号
猜你喜欢
  • 2019-08-02
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多