【问题标题】:Different result using welch function between Matlab and PythonMatlab和Python之间使用welch函数的不同结果
【发布时间】:2017-04-05 01:11:57
【问题描述】:

当我在 Matlab 和 Python 中对相同数据运行 welch 函数时,PSD 估计值略有不同,而样本频率相同。

这是我在 Matlab 和 Python 中使用的参数: MATLAB:

winlength=512;
overlap=0;
fftlength=1024;
fs=127.886;
[PSD, freqs] = pwelch(data, winlength, overlap, fftlength, fs);

Python:

freqs, PSD = welch(data, fs=127.886, window='hamming', nperseg=512,
noverlap=None, nfft=1024)

这是一个展示差异的情节: enter image description here

有谁知道我应该改变什么来获得相同的 PSD 结果?

【问题讨论】:

    标签: python matlab


    【解决方案1】:

    在 Matlab 文档 https://se.mathworks.com/help/signal/ref/pwelch.html 中,它说重叠参数必须是正整数,因此 0 不是有效值。

    如果您省略重叠值 -(或声明无效值),参数将自动设置为 50% 重叠,即更改曲线。

    尝试将 Python 函数设置为 50% 的重叠,看看它们是否匹配。

    顺便说一句,您很少希望有零重叠,因为这可能会导致信号瞬变。

    【讨论】:

    • 我所做的是设置 noverlap=o (当然是在 Python 中),它看起来好多了。谢谢!
    • 那很好。出于好奇,为什么“无”和“0”之间有区别。 Python 方法是否有类似的文档,只接受正整数,从而在您写“无”时应用 50% 的重叠?如果答案对您有帮助,请记得点赞:)
    猜你喜欢
    • 2017-02-24
    • 2015-06-16
    • 2015-08-02
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多