Python振幅谱图

时间:2015-05-17 09:37:27

标签: python fft spectrum

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

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:3)

使用 $sectionform->add( $sectionform ->create('question_'.$formQuestion->getId(), 'text',array('attr'=>...)) ->addModelTransformer(/* your transformer */) );

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

首先,我读取数据并在左右声道中分开;

numpy

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

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]

我们用mathplotlib绘制左通道;

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

图表看起来像这样;

答案 1 :(得分:0)

这是存储在波形文件中的信号的频率-时间频谱

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

signal_wave = wave.open('voice.wav', 'r')
sample_frequency = 16000

data = np.fromstring(signal_wave.readframes(sample_frequency), dtype=np.int16)
sig = signal_wave.readframes(-1)

sig = np.fromstring(sig, 'Int16')

用于wave文件

sig = sig[:]

对于wave文件的某些段

sig = sig[25000:32000]

绘制信号波文件的频谱

plt.figure(1)
c = plt.subplot(211)
Pxx, freqs, bins, im = c.specgram(sig, NFFT=1024, Fs=16000, noverlap=900)
c.set_xlabel('Time')
c.set_ylabel('Frequency')
plt.show()

graph example