matlab后代容貌预测,人类移动位置预测

clc

clear all

% 本程序主要用来计算根据灰色理论建立的模型的预测值。

% 应用的数学模型是 GM(1,1)。

% 原始数据的处理方法是一次累加法。

x=[0:1:10];

x1=[10:1:19];

x2=[0:1:9];

y=[116.51172,116.51135,116.51627,116.47186,116.47217,116.47179,116.45617,116.47191,116.50661,116.49625];

n=length(y);

yy=ones(n,1);

yy(1)=y(1);

for i=2:n

yy(i)=yy(i-1)+y(i);

end

B=ones(n-1,2);

for i=1:(n-1)

B(i,1)=-(yy(i)+yy(i+1))/2;

B(i,2)=1;

end

BT=B';

for j=1:n-1

YN(j)=y(j+1);

end

YN=YN';

A=inv(BT*B)*BT*YN;

a=A(1);

u=A(2);

t=u/a;

t_test=5;  %需要预测个数

i=1:t_test+n;

yys(i+1)=(y(1)-t).*exp(-a.*i)+t;

yys(1)=y(1);

for j=n+t_test:-1:2

ys(j)=yys(j)-yys(j-1);

end

x=1:n;

xs=2:n+t_test;

yn=ys(2:n+t_test);

det=0;

for i=2:n

det=det+abs(yn(i)-y(i));

end

det=det/(n-1);

subplot(2,2,1),plot(x,y,'^r-',xs,yn,'b-o'),title('单调递增' ),legend('实测值','预测值');

disp(['百分绝对误差为:',num2str(det),'%']);

disp(['预测值为: ',num2str(ys(n+1:n+t_test))]);

%递减

y1=[116.51172,116.51135,116.51627,116.47186,116.47217,116.47179,116.45617,116.47191,116.50661,116.49625];

n1=length(y1);

yy1=ones(n1,1);

yy1(1)=y1(1);

for i=2:n1

yy1(i)=yy1(i-1)+y1(i);

end

B1=ones(n1-1,2);

for i=1:(n1-1)

B1(i,1)=-(yy1(i)+yy1(i+1))/2;

B1(i,2)=1;

end

BT1=B1';

for j=1:n1-1

YN1(j)=y1(j+1);

end

YN1=YN1';

A1=inv(BT1*B1)*BT1*YN1;

a1=A1(1);

u1=A1(2);

t1=u1/a1;

t_test1=5;  %需要预测个数

i=1:t_test1+n1;

yys1(i+1)=(y1(1)-t1).*exp(-a1.*i)+t1;

yys1(1)=y1(1);

for j=n1+t_test1:-1:2

ys1(j)=yys1(j)-yys1(j-1);

end

x21=1:n1;

xs1=2:n1+t_test1;

yn1=ys1(2:n1+t_test1);

det1=0;

for i=2:n1

det1=det1+abs(yn1(i)-y1(i));

end

det1=det1/(n1-1);

subplot(2,2,2),plot(x1,y1,'^r-',xs1,yn1,'b-o'),title('单调递增' ),legend('实测值','预测值');

disp(['百分绝对误差为:',num2str(det1),'%']);

disp(['预测值为: ',num2str(ys1(n1+1:n1+t_test1))]);

%整个区间

y2=[116.51172,116.51135,116.51627,116.47186,116.47217,116.47179,116.45617,116.47191,116.50661,116.49625];

n2=length(y2);

yy2=ones(n2,1);

yy2(1)=y2(1);

for i=2:n2

yy2(i)=yy2(i-1)+y2(i);

end

B2=ones(n2-1,2);

for i=1:(n2-1)

B2(i,1)=-(yy2(i)+yy2(i+1))/2;

B2(i,2)=1;

end

BT2=B2';

for j=1:n2-1

YN2(j)=y2(j+1);

end

YN2=YN2';

A2=inv(BT2*B2)*BT2*YN2;

a2=A2(1);

u2=A2(2);

t2=u2/a2;

t_test2=5;  %需要预测个数

i=1:t_test2+n2;

yys2(i+1)=(y2(1)-t2).*exp(-a2.*i)+t2;

yys2(1)=y2(1);

for j=n2+t_test2:-1:2

ys2(j)=yys2(j)-yys2(j-1);

end

x22=1:n2;

xs2=2:n2+t_test2;

yn2=ys2(2:n2+t_test2);

det2=0;

for i=2:n2

det2=det2+abs(yn2(i)-y2(i));

end

det2=det2/(n2-1);

subplot(2,1,2),plot(x2,y2,'^r-',xs2,yn2,'b-o'),title('全区间' ),legend('实测值','预测值');

disp(['百分绝对误差为:',num2str(det2),'%']);

disp(['预测值为: ',num2str(ys2(n2+1:n2+t_test2))]);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值