MATLAB信号处理工具箱的重采样功能不适用于“线性”方法

问题描述 投票:0回答:1

我正在尝试使用重采样功能,并且在MATLAB信号处理工具箱(https://www.mathworks.com/help/signal/ref/resample.html#d117e155565)的文档中找到了以下内容:

  • y = resample(x,tx,___,method)指定插值方法以及该组中以前语法中的任何参数。插值方法可以是“线性”,“ pchip”或“样条曲线”。

以下是我的代码:

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

显然,它不是从原始信号“线性”插入的。相反,似乎应用了低通滤波器。谁能告诉我这是怎么回事?非常感谢?

matlab signal-processing
1个回答
0
投票

该文档有些难以阅读。您可能会发现:

y = resample(x,tx,___,method)指定沿着的插值方法与该组中以前语法中的任何参数一起使用。的插值方法可以是“线性”,“ pchip”或“样条曲线”。

注意:如果x的变化不是缓慢的,请考虑将interp1与'pchip'插值方法。它使用线性插值x插值,不是

因此,您必须查找它实际使用插值的位置。重采样本身将通过upfirdn完成,而不是通过插值完成。对于您的通话语法,相关句子为:

该函数将x线性插值到等距向量上端点和样本数量与tx相同的瞬间。 NaN是被视为丢失的数据,将被忽略。

它在用upfirdn重采样之前进行插值。对于此插值,可以更改方法。我不知道该行为的具体原因,但是该功能确实可以完成其记录。

© www.soinside.com 2019 - 2024. All rights reserved.