gpt4 book ai didi

matplotlib - scipy.signal.spectrogram 与 matplotlib.pyplot.specgram 相比

转载 作者:行者123 更新时间:2023-12-04 12:16:38 29 4
gpt4 key购买 nike

以下代码使用 scipy.signal.spectrogram 生成频谱图或 matplotlib.pyplot.specgram .
specgram的颜色对比不过功能比较低。
有没有办法增加它?

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

# Generate data
fs = 10e3
N = 5e4
amp = 4 * np.sqrt(2)
noise_power = 0.01 * fs / 2
time = np.arange(N) / float(fs)
mod = 800*np.cos(2*np.pi*0.2*time)
carrier = amp * np.sin(2*np.pi*time + mod)
noise = np.random.normal(scale=np.sqrt(noise_power), size=time.shape)
noise *= np.exp(-time/5)
x = carrier + noise

使用 matplotlib.pyplot.specgram给出以下结果:
Pxx, freqs, bins, im = plt.specgram(x, NFFT=1028, Fs=fs)
x1, x2, y1, y2 = plt.axis()
plt.axis((x1, x2, 0, 200))
plt.show()

Image obtained with matplotlib.pyplot.specgram

使用 scipy.signal.spectrogram给出以下情节
f, t, Sxx = signal.spectrogram(x, fs, nfft=1028)
plt.pcolormesh(t, f[0:20], Sxx[0:20])
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()

Image obtained with scipy.signal.spectrogram

这两个函数似乎都使用“jet”颜色图。

我通常也会对这两个函数之间的区别感兴趣。虽然它们做了类似的事情,但它们显然并不相同。

最佳答案

plt.specgram不仅返回Pxx , f , t ,而且还会自动为您绘图。绘图时,plt.specgram地块10*np.log10(Pxx)而不是 Pxx .
然而,signal.spectrogram只返回 Pxx , f , t .它根本不做绘图。这就是为什么您使用 plt.pcolormesh(t, f[0:20], Sxx[0:20]) .您可能想绘制 10*np.log10(Sxx) .

关于matplotlib - scipy.signal.spectrogram 与 matplotlib.pyplot.specgram 相比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48598994/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com