一、五点三次平滑法

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(time)]);
subplot 212; plot(time,xmean,'k');
xlabel('时间/s'); ylabel('幅值')
title('平滑处理后的数据'); xlim([0 max(time)]);
set(gcf,'color','w');

二、smooth函数

1.函数调用:

2.范例:

clear all; clc; close all;
k=1:500;                    % 产生一个从0到2*pi的向量,长为500
dn=2*pi/500;
x=cos((k-1)*dn);            % 产生一个周期余弦信号
[val,loc]=min(x);           % 求出余弦信号中的最小值幅值和位置
N=length(x);                % 数据长
ns=randn(1,N);              % 产生随机信号
y=x+ns(1:N)*0.1;            % 构成带噪信号
Err=var(x-y);               % 求x-y的方差
fprintf('%4d   %5.4f   %5.6f\n',loc,val,Err);%y=y';                       % 转成列向量
z1=smooth(y,51,'moving');   % 'moving'平滑
Err1=var(x'-z1);            % 求x-z1的方差
[v1,k1]=min(z1);            % 求出平滑信号z1中的最小值幅值和位置
fprintf('1  %4d   %5.4f   %4d   %5.6f\n',k1,v1,abs(loc-k1),Err1);  % 显示z2=smooth(y,51,'lowess');   % 'lowess'平滑
Err2=var(x'-z2);            % 求x-z2的方差
[v2,k2]=min(z2);            % 求出平滑信号z2中的最小值幅值和位置
fprintf('2  %4d   %5.4f   %4d   %5.6f\n',k2,v2,abs(loc-k2),Err2);z3=smooth(y,51,'loess');    % 'loess'平滑
Err3=var(x'-z3);            % 求x-z3的方差
[v3,k3]=min(z3);            % 求出平滑信号z3中的最小值幅值和位置
fprintf('3  %4d   %5.4f   %4d   %5.6f\n',k3,v3,abs(loc-k3),Err3);z4=smooth(y,51,'sgolay',3); % 'sgolay'平滑
Err4=var(x'-z4);            % 求x-z4的方差
[v4,k4]=min(z4);            % 求出平滑信号z4中的最小值幅值和位置
fprintf('4  %4d   %5.4f   %4d   %5.6f\n',k4,v4,abs(loc-k4),Err4);z5=smooth(y,51,'rlowess');  % 'rlowess'平滑
Err5=var(x'-z5);            % 求x-z5的方差
[v5,k5]=min(z5);            % 求出平滑信号z5中的最小值幅值和位置
fprintf('5  %4d   %5.4f   %4d   %5.6f\n',k5,v5,abs(loc-k5),Err5);z6=smooth(y,51,'rloess');   % 'rloess'平滑
Err6=var(x'-z6);            % 求x-z6的方差
[v6,k6]=min(z6);            % 求出平滑信号z6中的最小值幅值和位置
fprintf('6  %4d   %5.4f   %4d   %5.6f\n',k6,v6,abs(loc-k6),Err6);
% 作图
subplot 211; plot(k,x,'k');
grid; xlim([0 500]); title('一周期余弦信号')
xlabel('样点'); ylabel('幅值')
subplot 212; plot(k,y,'k'); %hold on
grid; axis([0 500 -1.5 1.5]); title('带噪一周期余弦信号')
xlabel('样点'); ylabel('幅值')
set(gcf,'color','w');figure
subplot 321; plot(k,z1,'k'); title('moving法')
grid; axis([0 500 -1.5 1.5]); ylabel('幅值')
subplot 322; plot(k,z2,'k');  title('lowess法')
grid; axis([0 500 -1.5 1.5]); ylabel('幅值')
subplot 323; plot(k,z3,'k'); title('loess法')
grid; axis([0 500 -1.5 1.5]); ylabel('幅值')
subplot 324; plot(k,z4,'k'); title('sgolay法')
grid; axis([0 500 -1.5 1.5]); ylabel('幅值')
subplot 325; plot(k,z5,'k'); title('rlowess法')
grid; axis([0 500 -1.5 1.5]); xlabel('样点'); ylabel('幅值')
subplot 326; plot(k,z6,'k'); title('rloess法')
grid; axis([0 500 -1.5 1.5]); xlabel('样点'); ylabel('幅值')
set(gcf,'color','w');

无噪声信号与有噪声信号如下图所示:

经过不同平滑后的信号如下图所示:

以上结果不是固定不变的,这是因为每次叠加的随机数不用,这说明平滑处理的效果与叠加的噪声有关

三、Savitzky-Golay滤波器

MATLAB实现平滑处理相关推荐

  1. matlab图像处理——平滑滤波

    平滑滤波--matlab图像处理 平滑滤波的目的是消除或尽量减少噪声,改善图像的质量.假设加性噪声是随机独立分布,这样利用图像像素领域的平均或加权平均即可有效地抑制噪声干扰.从信号分析的观点来看,图像 ...

  2. matlab输出高质量图片,Matlab 画平滑轮廓 print 高质量 figure | 学步园

    Matlab 画平滑轮廓 print 高质量 figure 在matlab中,想将分割的结果以轮廓的形式显示到灰度图上,要提取.绘制平滑轮廓. 自己提取轮廓.绘制,不方便,效果差. matlab提供了 ...

  3. 将实验数据用matlab连成平滑的曲线图

    将实验数据用matlab连成平滑的曲线图在实验课程中是较为有用的,下面以理论截止频率为600Hz的有源高通滤波器所测得的幅频数据为例,可以编写如下代码: f=[170 250 340 400 500 ...

  4. matlab进行数据平滑,matlab数据平滑程序Word版

    <matlab数据平滑程序Word版>由会员分享,可在线阅读,更多相关<matlab数据平滑程序Word版(9页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 , ...

  5. matlab - 信号平滑、移动平均滤波

    matlab - 信号平滑.移动平均滤波 对信号进行平滑操作的重要性不言而喻 1.信号提取 matlab内置了一个这样的数据:某个地方一个月内的温度变化数据,1小时测量一次,所以总数据量是24*31. ...

  6. matlab sglay平滑,基于MATLABGUI的谱线平滑处理.PDF

    基于MATLABGUI的谱线平滑处理 第41 卷 第6 期 核 技 术 Vol.41, No.6 2018 年6 月 NUCLEAR TECHNIQUES June 2018 基于MATLAB GUI ...

  7. matlab数据平滑 smooth函数的python实现

    数据平滑是数据处理中的一种简单且常用的操作,matlab中比较好用的一个函数是smooth函数, 其调用方式为 smoothed_y = smooth(y, window_length, method ...

  8. matlab cam orbit,如何在MATLAB中平滑旋转3D绘图?

    我会说这是你正在绘制的大量积分导致经济放缓.一个选项是缩减采样..也可以使用较低级别的功能进行绘制(检查此相关帖子以比较plot3 / scatter3 /线性能). 考虑以下针对速度优化的动画: [ ...

  9. matlab怎让3d旋转,如何在MATLAB中平滑旋转3D绘图?

    我会说这是你正在绘制的大量积分导致经济放缓.一个选项是缩减采样..也可以使用较低级别的功能进行绘制(检查 this related post以获得plot3 / scatter3 / line性能的比 ...

  10. matlab 一维 平滑,一维加噪信号的平滑处理(3)

    %-------------------------------------------------------------------------- % 调用medfilt1函数对加噪正弦波信号进行 ...

最新文章

  1. 创建包含CRUD操作的Web API接口-第一部
  2. matlab reshape函数_numpy中的np.ascontiguousarray()函数
  3. 迭代器模式和组合模式混用
  4. chrome 历史版本_2020 年最后一次更新,Chrome 性能大提升的新版本来了
  5. Apache和Nginx的区别
  6. javascript中的Base64.UTF8编码与解码详解
  7. php web mysql数据库_使用php从web访问mysql
  8. kissy 淘宝网脚本库
  9. 活动报名小程序源码/thinkphp后台管理报名小程序源码
  10. Oracle 2021年度安全警报: Critical Patch Update 发布8个数据库警告
  11. SAP License:BASIS 事务代码速记
  12. C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标
  13. Qos测试浅析 20090323
  14. 电脑用户计算机名文件夹,电脑用户名文件夹名称更改
  15. 2018湘潭大学程序设计竞赛【E】
  16. 宏基台式计算机设置硬盘启动,Acer宏碁台式电脑bios设置u盘启动详细步骤
  17. 观音菩萨是企业家和领导者的好榜样
  18. k8s--基础--12.2--pod--生命周期,状态,重启策略
  19. 计算机前置usb应用,usb前面不能用,详细教您解决电脑前置USB接口不能使用
  20. Moment.js 常见用法总结

热门文章

  1. w10运行游戏计算机中丢失xinput1-3.dll,win10游戏缺少xinput1_3.dll如何修复_win10电脑找不到xinput1_3.dll怎么解决...
  2. C库-atoi(), atol(), atoll(), atof(), ceil(), ceilf(), ceill()
  3. vue热敏打印机_如何在vue项目中调用打印机,打印指定区域
  4. BREW:3G移动增值服务的黎明(转)
  5. nodog+adbyby实现密码认证与视频广…
  6. SMAIL 语法大全(Dalvik 虚拟机操作码)
  7. 第二十次CCF CSP认证考试经验
  8. 儿童计算机编程课程,少儿编程基础课程介绍
  9. 5款好用的项目管理软件推荐
  10. 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第7章 数据挖掘