Pan*_*ryl 1 python fft spectrum
我有两个浮点值列表,一个表示时间,另一个表示从示波器获取的电压值(我假设)。我必须绘制一个振幅频谱图,但是我不确定我需要使用什么功能以及需要给它提供什么参数,我尝试了fft(u),但是没有用。
感谢您的帮助,如果需要更多信息,请告诉我。
使用numpy。
例如,让我展示如何分析立体声WAV文件中的频率。
首先,我读取数据并将其在左右声道中分开;
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]
Run Code Online (Sandbox Code Playgroud)
接下来,我对其执行离散傅立叶变换;
lf, rf = abs(np.fft.rfft(left)), abs(np.fft.rfft(right))
Run Code Online (Sandbox Code Playgroud)
然后用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')
Run Code Online (Sandbox Code Playgroud)
该图看起来像这样。

| 归档时间: |
|
| 查看次数: |
9834 次 |
| 最近记录: |