matlab5点3次平滑程序,三次指数平滑法MATLAB代码

clear;clc;

z=xlsread('PA.xlsx');

x=z';

p=input('ê?è??óè¨?μêy');

n=length(x);

s1_0=mean(x(1:3));

s2_0=s1_0;

s3_0=s1_0;

s1(1)=p*x(1)+(1-p)*s1_0;

s2(1)=p*s1(1)+(1-p)*s2_0;

s3(1)=p*s2(1)+(1-p)*s3_0;

for t=2:n

s1(t)=p*x(t)+(1-p)*s1(t-1);

s2(t)=p*s1(t)+(1-p)*s2(t-1);

s3(t)=p*s2(t)+(1-p)*s3(t-1);

end

s1=[s1_0,s1];

s2=[s2_0,s2];

s3=[s3_0,s3];

a=3*s1-3*s2+s3;

b=p/(2*(1-p)^2)*((6-5*p)*s1-2*(5-4*p)*s2+(4-3*p)*s3);

c=p^2/(2*(1-p)^2)*(s1-2*s2+s3);

y=a+b+c

plot(1:n,x,'-g',1:n,y(1:n),'-r');title('PA')

legend('êμ?ê?μ','?¤2a?μ',2);

xishu=[c(n+1),b(n+1),a(n+1)];

yt=polyval(xishu,2);

sum=0;

for i=1:n

sum=sum+((y(1,i)-x(1,i))./(850*4)).^2;

end

r1=(1-sqrt(sum/n))*100

sum0=0;

for i=1:n

B=1-(x(1,i)-y(1,i))/(850*4);

if B>=0.75

Bk=1;

else

Bk=0;

end

sum0=sum0+Bk;

end

r2=(sum0/n)*100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值