最近想实现这么一个功能,另输出与过去时段的x相关
y=a*x+a^2*x+a^.a^n*3
按正常来说这是用到一个队列来实现,但这个在求y的时候需要将队列里面的值取出来相加,但是队列get之后数值就删除了,python里并没有队列求和的函数,因此在这里用到numpy数组来操作,通过数组移位后相乘来实现这个功能:
其中size就是n的大小,channel是通道数,比如用的是机器人,想做xyz三个方向的滤波,就让channel=3,ganma就是上面公式的a
import numpy as np
from scipy.ndimage.interpolation import shift
class Filter:def __init__(self,size,ganma,channel):self.size=sizeself.channel=channel#self.ganma=ganmaself.filterdatas(size*channel).reshape(channel,size)#新的数据排在最前面self.ganma=[np.power(ganma,i) for i in range(size)]print(")print("filterdata=",self.filterdata)print("ganma=",self.ganma)def Clear(self):self.filterdatas(self.size*self.channel).reshape(self.channel,self.size)def Add(self,data):#data=[x,y,z,..]self.filterdata = np.roll(self.filterdata, 1, axis=1)#移位self.filterdata[:,0]=0#清零self.filterdata[:,0]=self.filterdata[:,0]+data#加入新值print("ADD:",self.filterdata)Nonedef GetResult(self):results(self.channel)result = np.dot(self.filterdata,self.ganma)print("GetResult=",result)return result#返回array[x,y,z..]F=Filter(size=3,ganma=0.5,channel=2)
F.Add([1,2])
F.GetResult()
F.Add([3,4])
F.GetResult()
F.Add([5,6])
F.GetResult()
F.Add([7,8])
本文发布于:2024-01-29 00:37:44,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170645987011455.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |