我有一个python上的算法可以计算一个过滤器(低通,高通…),在我的程序中,我从实时设备读取数据,我需要处理它,并将它传输回设备。 每个数据块每隔10毫秒出现一次,所以在这段时间里,我必须计算尽可能多的过滤器。 我的算法:
def do_calculation(self,indata,outdata):
for i in range(0,len(indata)):
val=self.a0*indata[i]
val+=self.a1*self.xn1
val+=self.a2*self.xn2
val-=self.b1*self.yn1
val-=self.b2*self.yn2
outdata[i]= val
self.xn2 = self.xn1
self.xn1 = indata[i]
self.yn2 = self.yn1
self.yn1 = outdata[i]
开始读/写之前我计算的系数(a0、a1、a2、b1、b2)
我使用从设备获得的每个输入从主函数调用此函数,对其进行处理,然后使用outdata将其写回设备。 indata的列表大小为512,如下所示 列表[[x0,x1][x1,x2]…[x510,x511]]
有什么方法可以提高此功能的性能?或许python在这方面有很大的局限性。 现在,每个过滤器都需要2或3毫秒(有些过滤器甚至需要5毫秒),我想减少它,以便在10毫秒的范围内创建更多的过滤器
谢谢你的帮助
下面的第三个版本
do_calculation3
的速度是您的版本的两倍时间安排
相关问题 更多 >
编程相关推荐