Skip to main content
 首页 » 编程设计

Python 振幅谱图

2025年05月04日15xxx_UU

我有两个浮点值列表,一个用于时间,另一个用于从示波器获取的电压值(我假设)。我必须绘制一个幅度谱图,但我不确定我需要使用什么函数以及我需要给它什么参数,我尝试了 fft(u),但它没有用。

感谢任何帮助,如果您需要更多信息,请告诉我。

请您参考如下方法:

使用numpy。

举个例子,让我展示一下我是如何分析立体声 WAV 文件中的频率的;

首先我读取了数据,并将其分离在左右 channel 中;

import wave 
import numpy as np 
 
wr = wave.open('input.wav', 'r') 
sz = 44100 # Read and process 1 second at a time. 
da = np.fromstring(wr.readframes(sz), dtype=np.int16) 
left, right = da[0::2], da[1::2] 

接下来我对其运行离散傅立叶变换;

lf, rf = abs(np.fft.rfft(left)), abs(np.fft.rfft(right)) 

然后我们用 mathplotlib 绘制左声道;

import matplotlib.pyplot as plt 
 
plt.figure(1) 
a = plt.subplot(211) 
r = 2**16/2 
a.set_ylim([-r, r]) 
a.set_xlabel('time [s]') 
a.set_ylabel('sample value [-]') 
x = np.arange(44100)/44100 
plt.plot(x, left) 
b = plt.subplot(212) 
b.set_xscale('log') 
b.set_xlabel('frequency [Hz]') 
b.set_ylabel('|amplitude|') 
plt.plot(lf) 
plt.savefig('sample-graph.png') 

图表看起来像这样;