我正在尝试使用重采样功能,并且在MATLAB信号处理工具箱(https://www.mathworks.com/help/signal/ref/resample.html#d117e155565)的文档中找到了以下内容:
以下是我的代码:
clear;
a = [1, 2, 3, 2, 0.5]; %original signal
tx = [0, 1, 2, 3, 4];
fs = 20; % resample frequency
[a_rs, ty] = resample(a, tx, fs, 'linear');
plot(tx, a, 'o', ty, a_rs, '.');
legend('original', 'resampled');
我得到的是下图:
resampled signal vs original signal
显然,它不是从原始信号“线性”插入的。相反,似乎应用了低通滤波器。谁能告诉我这是怎么回事?非常感谢?
该文档有些难以阅读。您可能会发现:
y = resample(x,tx,___,method)指定沿着的插值方法与该组中以前语法中的任何参数一起使用。的插值方法可以是“线性”,“ pchip”或“样条曲线”。
注意:如果x的变化不是缓慢的,请考虑将interp1与'pchip'插值方法。它使用线性插值x插值,不是
因此,您必须查找它实际使用插值的位置。重采样本身将通过upfirdn
完成,而不是通过插值完成。对于您的通话语法,相关句子为:
该函数将x线性插值到等距向量上端点和样本数量与tx相同的瞬间。 NaN是被视为丢失的数据,将被忽略。
它在用upfirdn
重采样之前进行插值。对于此插值,可以更改方法。我不知道该行为的具体原因,但是该功能确实可以完成其记录。