场合:
我试图比较具有不同长度的两个信号矢量(y1和y2与时间矢量x1和x2)(len(y1)= 1000> len(y2)= 800)。为此,我遵循几乎无处不在的主要建议:使用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' as' y1'。我无法解决同样的问题。
我尝试使用' resample'进行插值。功能:
y2_interp=resample(y2,length(y1),length(y2),n);
但是我遇到了别名问题,如果可能的话我想避免使用过滤器。如果n = 0(没有滤波器),我会遇到一些采样问题和更多的RMS。
这两个向量很长,所以我的错位只有2或3个点。
我在寻找什么:
我想找到一种内插一个向量的方法,但是将另一个向量的长度作为参考,而不是我想要插入的点。
我希望我已经解释得很好......也许我有一些误解。这不仅仅是我对任何可能的想法感到好奇。
谢谢!
答案 0 :(得分:2)
答案 1 :(得分:1)
仅插入y2
以获得正确数量的样本是不够的,样本应位于与y1
样本对应的位置。
因此,您希望在y2
的样本处的x坐标处插入y1
,由x1
给出:
y2_interp = interp1(x2,y2,x1,'spline');
RMS = rms(y1-y2_interp)