matlab大数据平滑程序.doc
Matlab 数据平滑程序一、matlab自带平滑函数clear,clctic,t=linspace(0,2*pi,500)'%产生一个从0到2*pi的向量,长度500y=100*sin(t);%产生正弦波信号%产生500行1列的服从N0,15*15分布的随机数,作为噪声信号noise=normrnd(0,15,500,1);y=y+noise;%将噪声信号参加正弦波信号figure;%新建一个图形窗口plot(t,y);%绘制加噪波形图xlabel('t');%为X轴加标签ylabel('y=sin(t)+噪声');%为Y轴加标签 yy1=smooth(y,50);%利用移动平均法对y做平滑处理figure;%新建一个图形窗口plot(t,y,'k:');%绘制加噪波形图hold on;plot(t,yy1,'k','linewidth',3);%绘制平滑后波形图xlabel('t');ylabel('moving');legend('加噪波形','平滑后波形');yy2=smooth(y,50,'lowess');%利用lowess方法y做平滑处理figure;plot(t,y,'k');plot(t,y,'k:');hold on;plot(t,yy2,'k','linewidth',3);xlabel('t');ylabel('lowess方法平滑后得到的值');legend('加噪波形','平滑后波形');yy3=smooth(y,50,'rlowess');%利用rlowess方法y做平滑处理figure; plot(t,y,'k:');hold on; plot(t,yy3,'k','linewidth',3);xlabel('t'); ylabel('rlowess'); legend('加噪波形','平滑后波形'); yy4=smooth(y,50,'loess');%利用loess方法y做平滑处理figure;plot(t,y,'k:');hold on;plot(t,yy4,'k','linewidth',3);xlabel('t');ylabel('loess');legend('加噪波形','平滑后波形'); yy5=smooth(y,50,'sgolay',3);%利用sgolay方法y做平滑处理figure;plot(t,y,'k:');hold on;plot(t,yy5,'k','linewidth',3); xlabel('t'); ylabel('sgolay');legend('加噪波形','平滑后波形');toc他们依次平滑后生成的曲线二、七点平滑法的matlab数据平滑clear,clc tic,t=linspace(0,2*pi,500)'y=100*sin(t);noise=normrnd(0,15,500,1);y=y+noise;figure;plot(t,y,'k:');hold on;for j=0:10000 y1(1)=(39.0*y(1)+8.0*y(2)-4.0*y(3)-4.0*y(4)+1.0*y(5)+4*y(6)-2*y(7)/42.0; y1(2)=(8.0*y(2)+19.0*y(3)+16.0*y(4)+6.0*y(5)+4.0*y(6)-7*y(7)+4*y(8)/42.0; y1(3)=(-4.0*y(3)+16.0*y(4)+19.0*y(5)+12.0*y(6)+2.0*y(7)-4*y(8)+1*y(9)/42.0; for i=4:497 y1(i)=(-2*(y(i-3)+y(i+3)+3.0*(y(i-2)+1*y(i+2)+6.0*(y(i-1)+1*y(i+1)+7*y(i)/21.0; end y1(498)=(-4.0*y(498)+16.0*y(497)+19.0*y(496)+12.0*y(495)+2.0*y(494)-4*y(493)+1*y(492)/42.0; y1(499)=(8.0*y(499)+19.0*y(498)+16.0*y(497)+6.0*y(496)+4.0*y(495)-7*y(494)+4*y(493)/42.0; y1(500)=(39.0*y(500)+8.0*y(499)-4.0*y(498)-4.0*y(497)+1.0*y(496)+4*y(495)-2*y(494)/42.0; y=y1;endplot(t,y1,'k','linewidth',3); title('七点迭代平滑法图片') xlabel('t') ylabel('平滑后计数') grid toc