[python科学计算] 用python进行频域分析

选择python的一个重要原因是它拥有数量极多,质量上乘的第三方库,比如,用两个库numpy和pylab就很方便的实现了对时域波形,调用傅里叶变换进行频域分析,效果图如下:

用优雅的python实现如下:

 

testFFT.py
from pylab import *
import numpy as np
nSampleNum = 5120
ncount = 2048.0
df = nSampleNum / ncount
sampleTime = ncount / nSampleNum
freqLine = 800

x
= np.linspace(0,sampleTime,ncount)#时域波形x轴坐标
sinx
= np.sin(2*pi*250*x)
sinx2
= 0.5*np.sin(2*pi*500*x)
sinx3
= 0.3*np.sin(2*pi*1000*x) #以上是三个标准正弦波形

sinx
+= sinx2
sinx
+= sinx3 #叠加一个时域波形

fft
= np.fft.fft(sinx)[0:freqLine] #调用fft变换算法计算频域波形
fftx
= np.linspace(0,df*freqLine,freqLine) #频域波形x轴坐标311)
plot(x,sinx)
xlabel(
'time(s)')
ylabel(
'amplitude')
title(
'time domain graph')

subplot(
313)
plot(fftx,abs(fft))
xlabel(
'freqency(Hz)')
ylabel(
'amplitude')
title(
'frequency domain graph')

show()

我坚信,类似的功能,用python实现比用matlab实现要更加愉快! 

 

 

 

posted @ 2010-03-09 21:22  stuarts  Views(9715)  Comments(1Edit  收藏  举报