根据频率范围限制pyplot.psd y轴图

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

所以我试图找到以不同频率采样的各种信号的psd,并在0-50Hz的范围内进行比较

我有此代码:

for i, th in enumerate(ths): 
    NFFT = 2**(int(np.log2(th.size)) - 8)
    ax.psd(th, Fs = freq[i], NFFT = NFFT, scale_by_freq = False)
ax.set_xlabel("freq (Hz)")
ax.set_xlim(0,50)
#ax.relim()              #These
#ax.autoscale()          #Didn't work

我正在尝试做的事情:

由于信号在50Hz以下进行低通滤波,因此任何采样频率高于100Hz的信号都有一部分下降到非常低的psd。所以我的ylim很大,我想看的psd部分不容易看到。每次调用该函数时,我都可以手动设置set_ylim,但是我想通过某种方式自动设置ylim以适合psd,但是我在SO上找到的每个手动方法都假定我知道y值已经。但是psd在我不知道如何访问的后端进行了大量计算。

有什么方法可以选择:

  1. psd图中的y值读取到数组,或
  2. 以某种方式基于pyplot中的当前x轴重新设置y轴?
python matplotlib psd
1个回答
1
投票

您可以使用matplotlib.pyplot.psd的返回值。返回

  • matplotlib.pyplot.psd(一维数组)-缩放前功率谱的值Pxx(实际值)
  • P_{xx}(一维数组)-对应于Pxx中元素的频率。
  • freqline)-此函数创建的行。仅在return_lineLine2D时返回。
  • 在这种情况下,我相信可以使用频率值以编程方式适当地设置y限制,如下所示:

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