python生成频谱图代码
时间: 2023-10-13 15:26:37 浏览: 167
生成频谱图可以使用Python中的Matplotlib库和Numpy库。以下是一个简单的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
from scipy.io import wavfile
# 加载音频文件
sampling_freq, audio = wavfile.read('audio.wav')
# 计算音频信号的幅度谱
fft_spectrum = np.fft.fft(audio)
# 计算幅度谱的绝对值
magnitude_spectrum = np.abs(fft_spectrum)
# 创建频率轴
freqs = np.linspace(0, sampling_freq, len(magnitude_spectrum))
# 绘制频谱图
plt.plot(freqs[:int(len(freqs)/2)], magnitude_spectrum[:int(len(magnitude_spectrum)/2)])
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.show()
```
这个代码将读取名为“audio.wav”的音频文件,并绘制其幅度谱。可以根据需要进行修改和扩展。
相关问题
python绘制频谱图
要绘制频谱图,一般使用Python中的matplotlib库完成。下面是一个基本的频谱图绘制代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成示例数据
fs = 1000 # 采样率
t = np.linspace(0, 1, fs, endpoint=False) # 时域范围
x = np.sin(2 * np.pi * 50 * t) # 正弦波信号
x += 0.5 * np.sin(2 * np.pi * 150 * t) # 加入噪声
# 计算频谱图
f, Pxx_den = plt.psd(x, NFFT=1024, Fs=fs, window=np.hanning(1024), noverlap=512, scale_by_freq=True)
# 绘制频谱图
plt.figure(figsize=(8, 4))
plt.plot(f, Pxx_den)
plt.xlabel('Frequency [Hz]')
plt.ylabel('Power Spectral Density [dB/Hz]')
plt.show()
```
上述代码中,我们首先生成了示例数据(一个带噪声的正弦波信号),然后使用`plt.psd`计算信号的功率谱密度,并绘制频谱图。这里使用了汉宁窗口(`np.hanning(1024)`)作为窗口函数,并且采用了50%的重叠率(`noverlap=512`)来平滑频谱图。最后,使用matplotlib的函数将频谱图展示出来。
希望这个代码示例能够帮助你解决问题。
python求频谱代码
以下是Python中求频谱的代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成信号
fs = 1000 # 采样率
t = np.arange(0, 1, 1/fs) # 时间序列
f1 = 50 # 信号频率
f2 = 120
x = np.sin(2*np.pi*f1*t) + np.sin(2*np.pi*f2*t)
# 计算频谱
N = len(x)
X = np.fft.fft(x)
X_mag = np.abs(X)/N # 频谱幅值
f = np.arange(0, fs/2, fs/N) # 频率序列
# 绘制频谱图
plt.plot(f, X_mag[:N//2])
plt.xlabel('Frequency [Hz]')
plt.ylabel('Magnitude')
plt.show()
```
阅读全文