【发布时间】:2018-05-17 02:38:06
【问题描述】:
情况:
我试图比较具有不同长度 (len(y1)=1000>len(y2)=800) 的两个信号向量(y1 和 y2 与时间向量 x1 和 x2)。为此,我遵循了几乎无处不在的主要建议:使用 interp1 或 spline。为了通过插值将 y2 向 y1 的样本数量“扩展”。 所以我想要:
length(y1)=length(y2_interp)
但是,在这些函数中,您必须将点“x”指定到插值 (xq) 的位置,因此我使用要计算的重采样点生成一个向量:
xq = x2(1):(length(x2))/length(x1):x2(length(x2));
y2_interp = interp1(x2,y2,xq,'spline'); % or spline method directly
RMS = rms(y1-y2_interp)
问题:
当我对“xq”变量中的 x 向量重新采样时,因为长度不是整数,它给我的“y2_interp”长度与“y1”不同。我无法解决同样的问题。
我尝试使用“重采样”函数进行插值:
y2_interp=resample(y2,length(y1),length(y2),n);
但我遇到了一个别名问题,我想尽可能避免使用过滤器。如果 n=0(没有过滤器),我会遇到一些采样问题和更多 RMS。
这两个向量很长,所以我的错位只有 2 或 3 个点。
我在寻找什么:
我想找到一种插值向量的方法,但以另一个向量的长度为参考,而不是我想要插值的点。
我希望我已经解释清楚了......也许我有一些误解。这不仅仅是我对任何可能的想法感到好奇。
谢谢!!
【问题讨论】:
标签: arrays matlab spline resampling