You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于interp1/spline的不等长信号重采样长度匹配问题求助

解决信号插值匹配长度的问题

我之前也踩过类似的手动构造插值点的坑,给你分享几个靠谱的解决方案:

1. 精准生成对应长度的插值点(最直接的方法)

你之前手动计算xq的方式容易因为浮点精度或非整数比例出现长度偏差,换用linspace函数就能完美解决——它可以精确生成指定数量的均匀分布点,覆盖原时间向量x2的整个区间,完全不需要担心长度不匹配:

% 生成恰好与y1长度一致的查询时间向量
xq = linspace(x2(1), x2(end), length(y1));
% 用spline插值得到匹配长度的y2_interp
y2_interp = interp1(x2, y2, xq, 'spline');
% 计算RMS误差
RMS = rms(y1 - y2_interp);

linspace会自动计算每个点的间隔,不管原长度比例是不是整数,都能保证生成的xq长度正好是length(y1),彻底解决你之前的长度匹配问题。

2. 时间轴对齐的插值(更严谨的信号比较方式)

如果x1和x2是对应信号的实际时间轴,其实更合理的做法是直接把y2插值到x1的时间点上,这样不仅长度匹配,信号的时间维度也完全对齐,避免单纯拉伸长度带来的物理意义偏差:

% 直接用y1的时间轴x1作为插值查询点
y2_interp = interp1(x2, y2, x1, 'spline');
RMS = rms(y1 - y2_interp);

这种方式下,y2_interp的长度自然和y1一致(因为x1的长度就是length(y1)),同时保证每个插值点都对应y1的实际采样时间,比较结果更有意义。

关于resample的替代说明

你提到resample有混叠问题且不想滤波,上面的interp1方法完全不需要滤波步骤,它是纯插值操作,不会引入resample的低通滤波,正好符合你的需求。如果用resample且关闭滤波(n=0),本质是直接重采样,容易出现采样失真,所以不推荐。

内容的提问来源于stack exchange,提问作者RubenS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:02:48