【问题标题】:resample function of MATLAB signal processing toolbox does not work with "linear" methodMATLAB 信号处理工具箱的重采样功能不适用于“线性”方法
【发布时间】:2020-05-05 12:32:03
【问题描述】:

我正在尝试使用resample函数,我在MATLAB信号处理工具箱(https://www.mathworks.com/help/signal/ref/resample.html#d117e155565)的文档中发现了以下内容:

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

以下是我的代码:

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

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

【问题讨论】:

  • 重采样总是使用过滤器完成,因此您希望使用线性方法进行插值,而不是重采样。试试 doc interp1 看看一个很好的例子

标签: matlab signal-processing


【解决方案1】:

文档有点难以阅读。你可能发现:

y = resample(x,tx,___,method) 指定沿的插值方法 使用该组中先前语法中的任何参数。这 插值方法可以是“linear”、“pchip”或“spline”。

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

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

函数将 x 线性插值到均匀间隔的向量上 具有与 tx 相同端点和样本数的瞬间。 NaN 是 被视为缺失数据并被忽略。

它在使用upfirdn 重新采样之前进行插值。对于此插值,您可以更改方法。我不知道该行为的具体原因,但该函数执行它记录的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2018-05-27
    • 1970-01-01
    相关资源
    最近更新 更多