0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是滑动均值滤波?matlab如何实现滑动平均滤波?详细分析

0BFC_eet_china 来源:未知 作者:易水寒 2018-07-15 09:18 次阅读

什么是滑动均值滤波

滑动平均滤波就是把连续取得的N个采样值看成一个队列,队列的长度固定为N,每次采样得到一个新数据放到队尾,并丢掉原来队首的一次数据,把队列中的N个数据进行平均运算,就可以获得新的滤波结果。

具体的matlab代码

clear

clc

load boxinfo.mat %载入音频数据

T = data;

figure(1)

plot(T,'-*')

title('原始数据')

hold on;

%%

%滑动平滑滤波

L = length(T);

N=10; % 窗口大下

k = 0;

m =0 ;

for i = 1:L

m = m+1;

if i+N-1 > L

break

else

for j = i:N+i-1

k = k+1;

W(k) = T(j) ;

end

T1(m) = mean(W);

k = 0;

end

end

plot(T1,'r-o')

grid

legend('原始数据','滤波之后')

滤波前后对比图

什么是滑动均值滤波?matlab如何实现滑动平均滤波?详细分析

简单分析一下

经过滑动滤波之后,波形整体变得平滑,这里我们重点关注一下x轴附近的点,可以发现,在波形与x轴交叉的地方,波形都平稳过度,这极大方便的我们后期进行统计。

窗口大小选择

从代码中我们可以发现窗口大小我们选择的是10,如何选择窗口大小,这里我们需要进行一些简单的分析和测试。如果x轴附近的噪点数量(一上一下)比较多,那么窗口大小就应该大一些,反之,小一些。但是过大又会出现过拟合的现象,所以可以多取几个值,然后对比一下,选择一个最好的即可。

不同的窗口大小对比图

什么是滑动均值滤波?matlab如何实现滑动平均滤波?详细分析

简单分析一下

从图中我们可以很明显的看出,当N=4的时候,滤波效果还不是很好,在x轴附近依然有噪点(一上一下),当N=7的时候,已经基本满足我们的要求,图形已经可以很平稳的过度了,但是从右边的标记处可以看出还是不是很平稳,所以可以继续提高N值,当N=10的时候,波形就完全能够达到我们的要求,所以取10即可。

滑动平均(movingaverage):在地球物理异常图上,选定某一尺寸的窗口,将窗口内的所有异常值做算术平均,将平均值作为窗口中心点的异常值。按点距或线距移动窗口,重复此平均方法,直到对整幅图完成上述过程,这种过程称为滑动平均。

滑动平均相当于低通滤波,在重力勘探和测井资料处理解释中常用此方法。如果滑动窗长为n的话,滑动平均就是让数据通过一个n点的FIR滤波器,滤波器抽头系数都是1,这样取滑动平均就是起到序列平滑的作用。

利用filter函数求滑动平均

Matlab有多种计算滑动平均的方法,现介绍基于filter函数的计算方法。设原始数据为x,平均窗口设为a(a为正整数),那么无权重滑动平均后的数据y为:windowSize =a;y=filter(ones(1,windowSize)/windowSize,1,x);上述命令实际上计算的是:y(1)=(1/a)*x(1);y(2)=(1/a)*x(2)+(1/a)*x(1);... ...y(a)=(1/a)*x(a)+(1/a)*x(a-1)+...+(1/a)*x(1);... ...y(i)=(1/a)*x(i)+(1/a)*x(i-1)+...+(1/a)*x(i-a+1);... ....可以看出,计算某一位置处的平均值时,窗口的前端位于该处。有时为了将窗口中部放在所计算的位置处,这样上述计算方式则变为(为叙述方便起见,设a为奇数):y(1)=(1/a)*x(1)+(1/a)*x(2)+...+(1/a)*x((a+1)/2);y(2)=(1/a)*x(1)+(1/a)*x(2)+...+(1/a)*x((a+1)/2+1);... ...y((a+1)/2)=(1/a)*x(1)+(1/a)*x(2)+...+(1/a)*x((a+1)/2)+...+(1/a)*x(a);... ...y(i)=(1/a)*x(i-(a-1)/2)+(1/a)*x(i-(a-1)/2+1)+...+(1/a)*x(i)+...+(1/a)*x(i+(a-1)/2);... ...这种方式的滑动平均称为中心滑动平均,其Matlab的计算语句为:windowSize =a;y1=filter(ones(1,a/2+1)/windowSize,1,x);y2=filter(ones(1,a/2+1)/windowSize,1,fliplr(x));y=y1+fliplr(y2)-(1/a)*x;如利用1-2-1 滤波器计算有权重的中心滑动平均,其Matlab语句为:y1=filter([0.50.25],1,x);y2=filter([0.5 0.25],1,fliplr(x));y=y1+fliplr(y2)-0.5*x;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    182

    文章

    2963

    浏览量

    230247
  • 滤波
    +关注

    关注

    10

    文章

    664

    浏览量

    56613
  • 数据
    +关注

    关注

    8

    文章

    6926

    浏览量

    88867

原文标题:matlab实现滑动平均滤波

文章出处:【微信号:eet-china,微信公众号:电子工程专辑】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA的多级CIC滤波器原理

    实现多级CIC滤波器前我们先来了解滑动平均滤波器、微分器、积分器以及梳状滤波器原理。CIC
    的头像 发表于 12-03 11:55 5775次阅读
    基于FPGA的多级CIC<b class='flag-5'>滤波</b>器原理

    rtt4.1.1做滑动平均值滤波的时候,被意外赋值,为什么?

    1. 问题描述 我使用rtt4.1.1版本,其中adc采样直接采用cubemx生成的库函数,用DMA读取方式读取AD的值。并在DMA中断内回调AD值计算函数。 结果在做滑动平均值滤波的时候出现了
    发表于 09-13 06:33

    FPGA实现滑动平均滤波算法和LZW压缩算法

    采集数据中的量化噪声,在进行数据压缩前采用滤波的预处理技术。介绍LZW算法和滑动滤波算法的基本理论,详细阐述用单片FPGA实现两种算法的方法
    发表于 04-24 09:05

    平均值滤波

    平均值滤波
    发表于 07-18 16:37

    如何利用labview对CSV文件里的数据进行一阶滞后滤波滑动

    如何利用labview对CSV文件里的数据进行一阶滞后滤波滑动平均滤波?会做的大神帮我讲解一下哈,谢谢!!
    发表于 03-01 20:41

    uboot代码详细分析

    [url=]uboot代码详细分析[/url]
    发表于 01-29 13:51

    用LabVIEW设计简易逐点式滑动平均滤波

    每n个点的和2.创建输入控件,对采样长度设定,输出端除以采样长度就得到滑动平均值了。注意采样长度是整型,到除数段应转化为浮点数以避免精度损失。3.封装成子VI,就可以调用啦。是不是很简单?
    发表于 11-30 12:28

    详细分析stm32f10x.h

    每日开讲---学习STM32不得不看的剖析(详细分析stm32f10x.h)摘要: 学习STM32不得不看的剖析(详细分析stm32f10x.h)。/**这里是STM32比较重要的头文件*******************************************
    发表于 08-05 07:44

    一种基于改进的滑动平均滤波器的DDoS 攻击检测方法

    本文通过对网络流量统计的分析,提出了一种基于滑动平均滤波器的DDoS 攻击检测方法。该方法不同于以往单一根据网络流量的突变或根据攻击对流量分布的影响来
    发表于 06-17 09:41 35次下载

    一种基于改进的滑动平均滤波器的DDoS攻击检测方法

    本文通过对网络流量统计的分析,提出了一种基于滑动平均滤波器的DDoS 攻击检测方法。该方法不同于以往单一根据网络流量的突变或根据攻击对流量分布的影响来
    发表于 06-17 09:44 5次下载

    滑动滤波器型谱分析器在极窄带滤波中的应用

    【摘 要】滑动滤波器型谱分析器是通过短时傅立叶变换来进行实时谱分析的,本文详细分析了其用作滤波
    发表于 05-22 20:46 1193次阅读
    <b class='flag-5'>滑动</b><b class='flag-5'>滤波</b>器型谱<b class='flag-5'>分析</b>器在极窄带<b class='flag-5'>滤波</b>中的应用

    采用MATLAB对SPWM进行辅助设计与详细分析和解决方法

    采用MATLAB对SPWM进行辅助设计与详细分析和解决方法
    发表于 09-14 14:22 18次下载
    采用<b class='flag-5'>MATLAB</b>对SPWM进行辅助设计与<b class='flag-5'>详细分析</b>和解决方法

    均值滤波均值滤波算法程序

    均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像
    发表于 12-19 15:35 6713次阅读

    通过滑动平均滤波器解决数控系统加减速控制的跳变问题

    本文通过在直线加减规划之后,通过滑动平均滤波器来解决加速度的跳变问题,在不改变原有程序结构的情况下,实现了和S形曲线等效的加减速效果。
    的头像 发表于 04-29 08:30 4724次阅读
    通过<b class='flag-5'>滑动</b><b class='flag-5'>平均</b><b class='flag-5'>滤波</b>器解决数控系统加减速控制的跳变问题

    模拟量平均值滤波是什么

    的模拟量输入模块一般都有平均滤波的功能,例如,S7-200编程软件的系统块中模拟量输入滤波器的“样本数日”就是用来设置平均值滤波的采样周期的
    发表于 12-22 11:34 1866次阅读