精华内容
下载资源
问答
  • 滑动平均滤波算法——MATLAB实现

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

    算法原理

    滑动平均滤波算法的基本思想是设定一个宽度固定的滑动窗口,该窗口沿着时间序列滑动,同时取窗内数据的算术平均值作为输出值,而由输出值组成另一个数字序列,也就是滤波后的序列。设N为滑动窗口的宽度,若N=2k+1,输入、输出分别为x(n)x(n)y(n)y(n),则
    y(n)=12k+1i=ki=kx(n+i) y(n)=\frac{1}{2k+1}\cdot\sum^{i=k}_{i=-k}{x(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
    
    展开全文
  • Python中滑动平均算法(Moving Average)方案:#!/usr/bin/env python# -*- coding: utf-8 -*-import numpy as np# 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。# yy = smooth(y) smooths the data in the...

    Python中滑动平均算法(Moving Average)方案:

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    import numpy as np

    # 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。

    # yy = smooth(y) smooths the data in the column vector y ..

    # The first few elements of yy are given by

    # yy(1) = y(1)

    # yy(2) = (y(1) + y(2) + y(3))/3

    # yy(3) = (y(1) + y(2) + y(3) + y(4) + y(5))/5

    # yy(4) = (y(2) + y(3) + y(4) + y(5) + y(6))/5

    # ...

    def smooth(a,WSZ):

    # a:原始数据,NumPy 1-D array containing the data to be smoothed

    # 必须是1-D的,如果不是,请使用 np.ravel()或者np.squeeze()转化

    # WSZ: smoothing window size needs, which must be odd number,

    # as in the original MATLAB implementation

    out0 = np.convolve(a,np.ones(WSZ,dtype=int),'valid')/WSZ

    r = np.arange(1,WSZ-1,2)

    start = np.cumsum(a[:WSZ-1])[::2]/r

    stop = (np.cumsum(a[:-WSZ:-1])[::2]/r)[::-1]

    return np.concatenate(( start , out0, stop ))

    # another one,边缘处理的不好

    """

    def movingaverage(data, window_size):

    window = np.ones(int(window_size))/float(window_size)

    return np.convolve(data, window, 'same')

    """

    # another one,速度更快

    # 输出结果 不与原始数据等长,假设原数据为m,平滑步长为t,则输出数据为m-t+1

    """

    def movingaverage(data, window_size):

    cumsum_vec = np.cumsum(np.insert(data, 0, 0))

    ma_vec = (cumsum_vec[window_size:] - cumsum_vec[:-window_size]) / window_size

    return ma_vec

    """

    以上这篇Python实现滑动平均(Moving Average)的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

    本文标题: Python实现滑动平均(Moving Average)的例子

    本文地址: http://www.cppcns.com/jiaoben/python/269869.html

    展开全文
  • 滑动时间窗算法matlab

    热门讨论 2010-05-11 14:09:35
    滑动时间的MATLAB程序实现,里面包括了两个窗口大小的设置
  • Python中滑动平均算法(Moving Average)方案:#!/usr/bin/env python# -*- coding: utf-8 -*-import numpy as np# 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。# yy = smooth(y) smooths the data in the...

    Python中滑动平均算法(Moving Average)方案:

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    import numpy as np

    # 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。

    # yy = smooth(y) smooths the data in the column vector y ..

    # The first few elements of yy are given by

    # yy(1) = y(1)

    # yy(2) = (y(1) + y(2) + y(3))/3

    # yy(3) = (y(1) + y(2) + y(3) + y(4) + y(5))/5

    # yy(4) = (y(2) + y(3) + y(4) + y(5) + y(6))/5

    # ...

    def smooth(a,WSZ):

    # a:原始数据,NumPy 1-D array containing the data to be smoothed

    # 必须是1-D的,如果不是,请使用 np.ravel()或者np.squeeze()转化

    # WSZ: smoothing window size needs, which must be odd number,

    # as in the original MATLAB implementation

    out0 = np.convolve(a,np.ones(WSZ,dtype=int),"valid")/WSZ

    r = np.arange(1,WSZ-1,2)

    start = np.cumsum(a[:WSZ-1])[::2]/r

    stop = (np.cumsum(a[:-WSZ:-1])[::2]/r)[::-1]

    return np.concatenate(( start , out0, stop ))

    # another one,边缘处理的不好

    """

    def movingaverage(data, window_size):

    window = np.ones(int(window_size))/float(window_size)

    return np.convolve(data, window, "same")

    """

    # another one,速度更快

    # 输出结果 不与原始数据等长,假设原数据为m,平滑步长为t,则输出数据为m-t+1

    """

    def movingaverage(data, window_size):

    cumsum_vec = np.cumsum(np.insert(data, 0, 0))

    ma_vec = (cumsum_vec[window_size:] - cumsum_vec[:-window_size]) / window_size

    return ma_vec

    """

    以上这篇Python实现滑动平均(Moving Average)的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    展开全文
  • Python中滑动平均算法(Moving Average)方案: #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np # 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。 # yy = smooth(y) smooths the data ...
  • Python中滑动平均算法(Moving Average)方案:#!/usr/bin/env python# -*- coding: utf-8 -*-import numpy as np# 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。# yy = smooth(y) smooths the data in the ...

    Python中滑动平均算法(Moving Average)方案:

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    import numpy as np

    # 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。

    # yy = smooth(y) smooths the data in the column vector y ..

    # The first few elements of yy are given by

    # yy(1) = y(1)

    # yy(2) = (y(1) + y(2) + y(3))/3

    # yy(3) = (y(1) + y(2) + y(3) + y(4) + y(5))/5

    # yy(4) = (y(2) + y(3) + y(4) + y(5) + y(6))/5

    # ...

    def smooth(a,WSZ):

    # a:原始数据,NumPy 1-D array containing the data to be smoothed

    # 必须是1-D的,如果不是,请使用 np.ravel()或者np.squeeze()转化

    # WSZ: smoothing window size needs, which must be odd number,

    # as in the original MATLAB implementation

    out0 = np.convolve(a,np.ones(WSZ,dtype=int),'valid')/WSZ

    r = np.arange(1,WSZ-1,2)

    start = np.cumsum(a[:WSZ-1])[::2]/r

    stop = (np.cumsum(a[:-WSZ:-1])[::2]/r)[::-1]

    return np.concatenate(( start , out0, stop ))

    # another one,边缘处理的不好

    """

    def movingaverage(data, window_size):

    window = np.ones(int(window_size))/float(window_size)

    return np.convolve(data, window, 'same')

    """

    # another one,速度更快

    # 输出结果 不与原始数据等长,假设原数据为m,平滑步长为t,则输出数据为m-t+1

    """

    def movingaverage(data, window_size):

    cumsum_vec = np.cumsum(np.insert(data, 0, 0))

    ma_vec = (cumsum_vec[window_size:] - cumsum_vec[:-window_size]) / window_size

    return ma_vec

    """

    以上这篇Python实现滑动平均(Moving Average)的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    展开全文
  • Python实现滑动平均(Moving Average)

    万次阅读 2018-01-19 00:33:04
    Python中滑动平均算法(Moving Average)方案: #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np # 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。 # yy = smooth(y) smooths the ...
  • Python中滑动平均算法(Moving Average)方案:#!/usr/bin/env python# -*- coding: utf-8 -*-import numpy as np# 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。# yy = smooth(y) smooths the data in the ...
  • Python中滑动平均算法(Moving Average)方案:#!/usr/bin/env python# -*- coding: utf-8 -*-import numpy as np# 等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。# yy = smooth(y) smooths the data in the ...
  • 书中精选科学和工程中常用的多个算法,全部采用MATLAB语言编程实现,并结合实例对算法程序进行验证和分析。其中详细讲解了MATLAB的基本知识、二维图形的绘制、三维图形的绘制、高级图形绘制技术、动画与视频、几何...
  • VC_调用Matlab实现图像处理的3种常用方法比较.pdf VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab...
  • VC_调用Matlab实现图像处理的3种常用方法比较.pdf VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab...
  • 数学建模方法:蚁群算法

    热门讨论 2010-05-21 15:35:07
    求解复杂多阶段决策问题的动态窗口蚁群优化算法 蚁群算法在铸造生产配料优化中的应用 多阶段输电网络最优规划的并行蚁群算法 求解旅行商问题的混合粒子群优化算法 微粒群优化算法研究现状及其进展 随机摄动蚁群...
  • VC_调用Matlab实现图像处理的3种常用方法比较.pdf VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab...
  • VC_调用Matlab实现图像处理的3种常用方法比较.pdf VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab...
  • 马克·吐温曾经说过,所谓经典小说,就是指很多人希望读过,但很少人真正花时间去读的小说。这种说法同样适用于“经典”的计算机... 有空看看基于滑动窗口的论文相似性检测。  如何用matlab画出一个数列(函数)...
  • 能解释用大小和形状不同的滑动窗口进行均值、中值滤波后图像所呈现的一些特征。 二、 实验内容: 1、图像直方图及均衡化 1)获取实验用图像:使用imread函数将图像读入Matlab。 2)计算图像的灰度直方图,并用plot等...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

matlab实现滑动窗口算法

matlab 订阅