【MATLAB】平滑处理

从现实环境采集到的数据中经常混叠有微弱噪声,其中包括由于系统不稳定产生的噪声,也有周围环境引入的毛刺,这些弱噪声都需要在处理信号之前尽可能地消除或减弱。这一工作往往作为预处理的一部分。在本节中将通过案例介绍几种简单又实用的平滑处理方法:五点三次平滑法、MATLAB自带平滑处理的smooth函数和Savitzky-Golay平滑滤波器等。

五点三次平滑法

1.概 述

对于带毛刺或弱噪声的数据经常会采用五点三次平滑法来进行平滑处理。给出了相应的MATLAB程序,这里编写成如下函数mean5_3:函数:mean5 3;功能:对数据进行五点三次平滑处理

调用格式:y=mean5 3(x,m)

说明:x是要平滑的输入序列,m是对数据进行多次循环平滑的次数;y是平滑后的输出序列。数据x能进行多次五点三次的平滑处理,但m必须选择一个适当的值,不宜太大,否则容易使峰值降低,峰值频带变宽。

function y=mean5_3(x,m)
% x为被处理的数据
% m 为循环次数
n=length(x);
  a=x;
  for k=1: m
     b(1) = (69*a(1) +4*(a(2) +a(4)) -6*a(3) -a(5)) /70;
     b(2) = (2* (a(1) +a(5)) +27*a(2) +12*a(3) -8*a(4)) /35;
     for j=3:n-2
       b (j) = (-3*(a(j-2) +a(j+2)) +12*(a(j-1) +a(j+1)) +17*a(j)) /35;
     end
     b (n-1) = (2*(a(n) +a(n-4)) +27*a(n-1) +12*a(n-2) -8*a(n-3)) /35;
     b (n) = (69*a(n) +4* (a(n-1) +a(n-3)) -6*a(n-2) -a(n-4)) /70;
     a=b;
  end
  y =a;

有一组带噪信号数据文件xnoisedata.txt,数据的第1列是时间,第2列是实验检测到的数据。由于环境的原因,实验数据中含有噪声,要求通过平滑方法对数据进行处理。本例采用五点三次平滑法,程序清单如下:

clear all; clc; close all;
xx=load('xnoisedata1.txt');     % 读入数据
time=xx(:,1);                   % 时间序列
x=xx(:,2);                      % 带噪数据
xmean=mean5_3(x,50);            % 调用mean5_3函数,平滑数据
% 作图
subplot 211; plot(time,x,'k');
xlabel('时间/s'); ylabel('幅值')
title('原始数据'); xlim([0 max(t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB科研小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值