Python 读取串行数据进行实时fft

Python 读取串行数据进行实时fft,python,serial-port,fft,Python,Serial Port,Fft,我正在为实时fft编写python脚本。该代码使用arduino作为adc转换器,并通过串行端口读取值。在while循环的每一步,我加载数据数组,然后对其进行傅里叶变换。问题在于,在第一个周期后(构建阵列只需0.01秒),其他周期需要更长的时间,即0.98秒。 先谢谢你 import time import math import serial from scipy.fftpack import fft import matplotlib.pyplot as plt from scipy.sig

我正在为实时fft编写python脚本。该代码使用arduino作为adc转换器,并通过串行端口读取值。在while循环的每一步,我加载数据数组,然后对其进行傅里叶变换。问题在于,在第一个周期后(构建阵列只需0.01秒),其他周期需要更长的时间,即0.98秒。 先谢谢你

import time
import math
import serial
from scipy.fftpack import fft
import matplotlib.pyplot as plt
from scipy.signal import blackman
import numpy as np
t=0
maxLenght=256
stringa=np.zeros(shape=(maxLenght))

seriale=serial.Serial('/dev/ttyACM0',57600, timeout=0.1)
time.sleep(3)

cycle=0
while cycle<100:
    print cycle
    cycle+=1
    #seriale.flushInput()
    t = time.time()
    for i in range(0,maxLenght):
        try:
            stringa[i]=seriale.readline()
        except:
            ()
    elapsed = time.time() - t
    print elapsed    
            #dati=float(dati)
            #print dati
            #print stringa
    s = time.time()
    T=0.005
    xf = np.linspace(0.0, 1.0/(2.0*T), maxLenght/2)
    w = blackman(maxLenght)
    ywf = fft(stringa*w)
    elapseds = time.time() - s
    print elapseds
    time.sleep(0.5)
    stringa=np.zeros(shape=(maxLenght))
seriale.close()
导入时间
输入数学
导入序列号
从scipy.fftpack导入fft
将matplotlib.pyplot作为plt导入
从scipy.signal导入blackman
将numpy作为np导入
t=0
最大长度=256
stringa=np.Zero(形状=(最大长度))
serial=serial.serial('/dev/ttyACM0',57600,超时=0.1)
时间。睡眠(3)
循环=0
while循环