根据列表数据计算时频谱并显示1Hz~100Hz的频谱的python代码
时间: 2023-04-12 21:01:17 浏览: 58
以下是计算时频谱并显示1Hz~100Hz的频谱的Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成随机信号
fs = 1000 # 采样率
t = np.arange(0, 1, 1/fs)
x = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t) + np.sin(2*np.pi*50*t)
# 计算时频谱
N = len(x)
f = np.arange(0, fs/2, fs/N)
X = np.fft.fft(x)
X = X[:N//2]
Pxx = np.abs(X)**2 / (fs*N)
# 显示1Hz~100Hz的频谱
plt.plot(f, Pxx)
plt.xlim([1, 100])
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power Spectral Density (V^2/Hz)')
plt.show()
```
希望能够帮到您!
相关问题
计算列表数据list的时频谱并显示(1Hz~100Hz)的python代码
以下是计算列表数据list的时频谱并显示(1Hz~100Hz)的Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成测试数据
fs = 1000 # 采样率
t = np.arange(0, 1, 1/fs) # 时间序列
f1 = 10 # 信号频率
f2 = 50
f3 = 80
x = np.sin(2*np.pi*f1*t) + 0.5*np.sin(2*np.pi*f2*t) + 0.2*np.sin(2*np.pi*f3*t)
# 计算时频谱
N = len(x) # 信号长度
f = np.linspace(0, fs/2, N//2+1) # 频率序列
X = np.fft.fft(x) / N # 快速傅里叶变换
Pxx = 2 * np.abs(X[:N//2+1])**2 # 功率谱密度
# 显示时频谱
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(t, x)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Signal')
plt.subplot(2, 1, 2)
plt.plot(f, Pxx)
plt.xlim([1, 100])
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power Spectral Density')
plt.title('Spectrum')
plt.show()
```
这段代码可以计算一个包含多个频率分量的信号的时频谱,并将其显示在图像上。其中,使用了numpy库和matplotlib库来进行计算和绘图。
对列表数据x1计算时频谱并显示(1Hz-100Hz)的python代码
以下是计算时频谱并显示的 Python 代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成测试数据
x1 = np.random.randn(1000)
# 计算时频谱
f, t, Sxx = signal.spectrogram(x1, fs=1000, nperseg=256, noverlap=128)
# 绘制时频谱图
plt.pcolormesh(t, f, np.log10(Sxx))
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
```
这段代码使用了 `signal.spectrogram` 函数计算时频谱,并使用 `matplotlib` 库绘制时频谱图。其中,`x1` 是输入的列表数据,`fs` 是采样率,`nperseg` 是每个段的长度,`noverlap` 是相邻段之间的重叠长度。绘制时频谱图时,使用了 `pcolormesh` 函数绘制矩形图,并使用 `log10` 函数对数据进行对数变换,以便更好地显示。
相关推荐










