精华内容
下载资源
问答
  • 滑动平均滤波代码,可用于matlab中相关数据的滤波处理,可以自行更改程序中的m自变量以更改滑动的窗宽
  • 主要介绍了Python极简实现滑动平均滤波(基于Numpy.convolve)的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • labview滑动平均滤波.vi

    2020-04-16 13:47:25
    该程序为数据的滑动平均滤波在labview中的实现,系计算机测控课程中本人所编写的程序,若有雷同,实属巧合
  • 用siemens 300实现递推平均滤波法(又称滑动平均滤波法)代码和siemens FM350测速测长实现代码。rar,用siemens 300实现递推平均滤波法(又称滑动平均滤波法)代码和siemens FM350测速测长实现代码。
  • 滑动平均滤波

    2012-10-07 15:40:12
    关于matlab的音频信号处理,平均滤波算法能够实现声音的降噪处理
  • 介绍LZW算法和滑动滤波算法的基本理论,详细阐述用单片FPGA实现两种算法的方法。最终测试结果表明,该设计方案能够有效滤除数据中的高频噪声,同时也可获得较好的压缩比和压缩速度,具有一定实用价值。
  • 为改善电网电能质量,提出一种采用滑动平均滤波的无锁相环谐波和无功电流检测方法.该方法通过选择滑动窗宽度,采用移动指针的方法构建滑动平均滤波器,代替传统的低通滤波器以减小检测延时,并采用电网电压矢量的同步...
  • /// ///滑动平均滤波算法(递推平均滤波法)/// /// /// GN为数组value_buf[]的元素个数,该函数主要被调用,利用参数的数组传值/// private const int GN = 12;private int filterPtr = 0;private bool isFirstGF = ...

    ///

    ///滑动平均滤波算法(递推平均滤波法)

    ///

    ///

    /// GN为数组value_buf[]的元素个数,该函数主要被调用,利用参数的数组传值

    ///

    private const int GN = 12;

    private int filterPtr = 0;

    private bool isFirstGF = true;

    public float gSum = 0;

    float[] gbuf = new float[GN];

    public float GlideFilterAD(float ADNum)

    {

    if (isFirstGF)

    {

    isFirstGF = false;

    for (int i = 0; i < GN; i++)

    gbuf[i] = ADNum;

    gSum = ADNum * GN;

    return ADNum;

    }

    else

    {

    gSum += ADNum - gbuf[filterPtr] ;

    gbuf[filterPtr++] = ADNum;

    if (filterPtr == GN)

    filterPtr = 0;    //先进先出,再求平均值

    return (gSum / GN);

    }

    }

    ///

    /// 限幅防抖滤波法

    ///

    ///

    /// RANG:幅度  LPNUM :测试计数

    ///

    private const int RANGE = 100;

    private const int LPNUM = 5;

    private float currentValue = 0;

    private int tmpCount = 0;

    private bool isFirstLF = true;

    public float LimitFilterAD(float ADNum)

    {

    if (isFirstLF)

    {

    isFirstLF = false;

    currentValue = ADNum;

    }

    if (Math.Abs(ADNum - currentValue) > RANGE)

    {

    if(tmpCount++ >LPNUM)

    {

    isFirstLF = true;    // 初始化滑动平均值

    tmpCount =0;

    currentValue = ADNum;

    }

    }

    else

    {

    tmpCount =0;

    }

    return currentValue;

    }

    展开全文
  • 滑动平均滤波算法——MATLAB实现

    千次阅读 2020-12-25 20:38:58
    滑动平均滤波算法的基本思想是设定一个宽度固定的滑动窗口,该窗口沿着时间序列滑动,同时取窗内数据的算术平均值作为输出值,而由输出值组成另一个数字序列,也就是滤波后的序列。设N为滑动窗口的宽度,若N=2k+1,...

    算法原理

    滑动平均滤波算法的基本思想是设定一个宽度固定的滑动窗口,该窗口沿着时间序列滑动,同时取窗内数据的算术平均值作为输出值,而由输出值组成另一个数字序列,也就是滤波后的序列。设N为滑动窗口的宽度,若N=2k+1,输入、输出分别为 x ( n ) x(n) x(n) y ( n ) y(n) y(n),则
    y ( n ) = 1 2 k + 1 ⋅ ∑ i = − k i = k x ( n + i ) y(n)=\frac{1}{2k+1}\cdot\sum^{i=k}_{i=-k}{x(n+i)} y(n)=2k+11i=ki=kx(n+i)

    MATLAB代码实现:

    function x1 = MovingAverageFilter(x,win_sz)
    % x:待滑动平均的数据
    % win_sz:窗宽
    
    if nargin < 2  %默认窗宽等于7
        win_sz=7;
    end
    
    L = length(x); %数据长度
    x1 = zeros(L,1); %平均之后的数据
    
    half_win = ceil(win_sz/2);
    half_win_ = floor(win_sz/2);
    if half_win==half_win_
        half_win = half_win+1;
    end
    
    x1(1:half_win) = x(1:half_win);
    x1(L-half_win:L) = x(L-half_win:L);
    
    for i = half_win:L-half_win
        k=0;
        for j = i-half_win_:i+half_win_  %对第i个窗里面的数求平均
            k = k+1;
            temp(k) = x(j) ; %临时存储第i个窗的数据
        end
        x1(i) = mean(temp); %第i个窗里面的平均值给第i个数
    end
    end
    
    展开全文
  • 滤波原理: 采用队列方式,当来一个新数据时,将队列...1、滑动平均滤波算法 python 程序代码: from microbit import * a = [0, 0, 0, 0] i = 0 while True: data = pin0.read_analog() a[i % 4] = data i +=1 s

    滤波原理:
    采用队列方式,当来一个新数据时,将队列里面的最老的数据替换掉。计算队列里面数据的平局值或加权平均值。

    例如采样数据为 1,2,3,4,5,6,7,8
    滑动窗口为4时:
    在这里插入图片描述

    1、滑动平均滤波算法

    python 程序代码:

    from microbit import *
    
    a = [0, 0, 0, 0]
    i = 0
    while True:
        data = pin0.read_analog()
        a[i % 4] = data
        i +=1
        sum = 0
        for k in a:
            sum += k
        ave = sum / 4
        print("{},{}".format(data, ave))
        sleep(100)
    

    滤波效果:
    红色为原始采样数据,蓝色为滑动平均后的数据

    在这里插入图片描述

    2、加权滑动滤波算法

    在滑动平局滤波程序里面,队列里面的数据的权值都是一致的,当队列长度为N时,权值为1/N。有时我们希望新数据有较高的权值,程序可以进行如下更改。使用加权滑动滤波算法后,对于新数据更加敏感。

    # 在这里写上你的代码 :-)
    from microbit import *
    
    a = [0, 0, 0, 0]
    weight = [0.4, 0.3, 0.2, 0.1]
    while True:
        data = pin0.read_analog()  # 读取AD值
        for i in range(0, 3):
            a[i + 1] = a[i]  # 窗口移动
        a[0] = data
        # 滑动平均
        sum = 0
        ave1 = 0
        for j in a:
            sum += j
        ave1 = sum / 4
        # 加权平均
        ave2 = 0
        for j in range(0, 4):
            ave2 += a[j] * weight[j]
        print("{},{},{}".format(data, ave1, ave2))
        sleep(100)
    
    
    

    在这里插入图片描述

    3、对比

    实际采样了100个数据,使用excel,分别计算滑动平均和加权平均,窗口大小为4.
    从下图中可以看出,加权平均能够更快的跟随原始值的变化,而加权平均计算出来的数据更平滑。
    在这里插入图片描述

    展开全文
  • [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve) 1.滑动平均概念 滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ,每次采样到一个新数据放入队尾...

    [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)

    1.滑动平均概念

    滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)  把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 

    优点:  对周期性干扰有良好的抑制作用,平滑度高  适用于高频振荡的系统  

    缺点:  灵敏度低  对偶然出现的脉冲性干扰的抑制作用较差  不易消除由于脉冲干扰所引起的采样值偏差  不适用于脉冲干扰比较严重的场合  比较浪费RAM  

     

    2.解决思路

    可以发现滑动平均滤波法计算很类似与一维卷积的工作原理,滑动平均的N就对应一维卷积核大小(长度)。

    步长会有些区别,滑动平均滤波法滑动步长为1,而一维卷积步长可以自定义。还有区别就是一维卷积的核参数是需要更新迭代的,而滑动平均滤波法核参数都是一。

    我们应该怎么利用这个相似性呢?其实也很简单,只需要把一维卷积核大小(长度)和N相等,步长设置为1,核参数都初始为1就可以了。由于一维卷积具备速度快,然后我们就可以使用一维卷积来实现这个功能了,快速高效。

    使用深度学习框架实现这个功能是否有些大材小用了?是有些大材小用了,因为这里使用卷积的核参数不用更新,其实没必要使用复杂的深度学习框架,如果Numpy中可以实现这些功能就更简单方便了。

    说干就干,经过查找发现Numpy.convolve可以实现我们想要的功能。

     

    3.Numpy.convolve介绍

    numpy.convolve(a, v, mode=‘full’)
    参数:
        a:(N,)输入的一维数组
        v:(M,)输入的第二个一维数组
        mode:{‘full’, ‘valid’, ‘same’}参数可选
          ‘full’ 默认值,返回每一个卷积值,长度是N+M-1,在卷积的边缘处,信号不重叠,存在边际效应。
          ‘same’ 返回的数组长度为max(M, N),边际效应依旧存在。
          ‘valid’  返回的数组长度为max(M,N)-min(M,N)+1,此时返回的是完全重叠的点。边缘的点无效。

    和一维卷积参数类似,a就是被卷积数据,v是卷积核大小。

     

    4.算法实现
     

    def np_move_avg(a,n,mode="same"):
        return(np.convolve(a, np.ones((n,))/n, mode=mode))

    原理说明

    运行平均值是卷积数学运算的一个例子。对于运行平均值,沿着输入滑动窗口并计算窗口内容的平均值。对于离散的1D信号,卷积是相同的,除了代替计算任意线性组合的平均值,即将每个元素乘以相应的系数并将结果相加。那些系数,一个用于窗口中的每个位置,有时称为卷积。现在,N值的算术平均值是(x_1 + x_2 + ... + x_N) / N,所以相应的内核是(1/N, 1/N, ..., 1/N),这正是我们通过使用得到的np.ones((N,))/N

    边缘处理

    mode的参数np.convolve指定如何处理边缘。在这里选择了same模式,这样可以保证输出长度一种,但你可能还有其他优先事项。这是一个说明模式之间差异的图:

    import numpy as np
    import matplotlib.pyplot as plt
    
    def np_move_avg(a,n,mode="same"):
        return(np.convolve(a, np.ones((n,))/n, mode=mode))
    
    modes = ['full', 'same', 'valid']
    for m in modes:
        plt.plot(np_move_avg(np.ones((200,)), 50, mode=m));
    
    plt.axis([-10, 251, -.1, 1.1]);
    
    plt.legend(modes, loc='lower center');
    
    plt.show()

     

    5.参考

    1.https://stackoverflow.com/questions/13728392/moving-average-or-running-mean

     

    展开全文
  • 1.介绍滑动平均值滤波可以...例如第80采样点的5次平均值滤波:Y[80] = 1/5( X[80] + X[81] + X[82] + X[83] + X[84] )这个平均值滤波有时间延迟,最明显的若在正弦采样序列上使用移动平均滤波,则会造成过零点会发生...
  • MATLAB滑动平均滤波

    千次阅读 2019-09-21 20:21:54
    示例 R = 50; d = rand(R,1)-0.5; m = 0:1:R-1;...M = input('输入滤波重复采样数 :'); subplot(211) plot(m,d,'r-',m,s,'b--',m,x,'k--') xlabel('Time index n'); ylabel('Amplitude') legend(...
  • 1 卡尔曼滤波 详见博客 https://blog.csdn.net/moge19/article/details/81750731 2 低通滤波 2.1 算法推导 一阶RC滤波器的硬件电路如图: 图中输入电压是Vi,电阻R,电容C,输出电压为Vo。 假设电路的输出阻抗...
  • 算法学习笔记之滑动平均滤波算法

    千次阅读 2017-08-08 13:51:29
    滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用。如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区。每新采集一个数据便存入暂存区中,同时去掉一...
  • C语言实现的滑动平均滤波算法

    万次阅读 多人点赞 2017-09-27 10:37:47
    最近采集压力传感器的电压信号,采集到的数据波动挺大的,所以采用滤波的方法进行处理一下。  因为在matlab中依靠matlab的画图函数很容易... 在matlab中采用了三种滤波方法:1、滑动平均滤波 2、中值滤波 3、卡尔曼滤
  • 作者|小宋是呢来源 |CSDN博客1.滑动平均概念滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ,每次采样到一个新数...
  • 对数字信号进行快速傅里叶变换+画图,主要针对肌电信号,包含平均滑动滤波等小程序
  • matlab实现滑动平均滤波(一)

    万次阅读 多人点赞 2017-03-11 23:04:27
    最近时间在研究滤波算法,目的是为了更好的识别音频数据。...滑动平均滤波就是把连续取得的N个采样值看成一个队列,队列的长度固定为N,每次采样得到一个新数据放到队尾,并丢掉原来队首的一次数据,把队列中的
  • FPGA实现滑动平均滤波算法和LZW压缩算法.pdf
  • matlab实现滑动平均滤波(二)

    万次阅读 2017-03-11 23:08:42
    滑动平均(moving average):在地球物理异常图上,选定某一... 滑动平均相当于低通滤波,在重力勘探和测井资料处理解释中常用此方法。 如果滑动窗长为n的话,滑动平均就是让数据通过一个n点的FIR滤波器,滤波器抽头
  • GPS驯服中无偏滑动平均滤波算法的研究.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,595
精华内容 1,838
关键字:

滑动平均滤波