滑动平均滤波算法——MATLAB实现

算法原理

滑动平均滤波算法的基本思想是设定一个宽度固定的滑动窗口,该窗口沿着时间序列滑动,同时取窗内数据的算术平均值作为输出值,而由输出值组成另一个数字序列,也就是滤波后的序列。设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
  • 23
    点赞
  • 176
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值