python实现滑动窗口滤波

阅读: 评论:0

python实现滑动窗口滤波

python实现滑动窗口滤波

最近想实现这么一个功能,另输出与过去时段的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.filterdata&#s(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.filterdata&#s(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):result&#s(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小时内删除。

标签:窗口   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23