最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Matlab灰色预测工具箱

来源:动视网 责编:小OO 时间:2025-09-30 21:11:35
文档

Matlab灰色预测工具箱

Matlab灰色预测工具箱——走过数模2009-07-0223:05灰色预测几乎是每年数模培训必不可少的内容,相对来说也是比较简单,这里写了四个函数,方便在Matlab里面调用,分别是GM(1,1),残差GM(1,1),新陈代谢GM(1,1),Verhust自己写得难免有所疏忽,需要的朋友自己找本书本来试验一下。Gm(1,1)function[px0,ab,rel]=gm11(x0,number)%[px0,ab,rel]=gm11(x0,number)%px0为预测数列,rel为平均相对误差
推荐度:
导读Matlab灰色预测工具箱——走过数模2009-07-0223:05灰色预测几乎是每年数模培训必不可少的内容,相对来说也是比较简单,这里写了四个函数,方便在Matlab里面调用,分别是GM(1,1),残差GM(1,1),新陈代谢GM(1,1),Verhust自己写得难免有所疏忽,需要的朋友自己找本书本来试验一下。Gm(1,1)function[px0,ab,rel]=gm11(x0,number)%[px0,ab,rel]=gm11(x0,number)%px0为预测数列,rel为平均相对误差
Matlab灰色预测工具箱——走过数模

2009-07-02 23:05

灰色预测几乎是每年数模培训必不可少的内容,相对来说也是比较简单,这里写了四个函数,方便在Matlab里面调用,分别是GM(1,1),残差GM(1,1),新陈代谢GM(1,1),Verhust

自己写得难免有所疏忽,需要的朋友自己找本书本来试验一下。

Gm(1,1)

function [px0,ab,rel]=gm11(x0,number)

%[px0,ab,rel]=gm11(x0,number)

%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)

%默认的number参数为原数组大小

if nargin==1

    number=max(size(x0));

end

n=max(size(x0));

x1=zeros(size(x0));

for k=1:n

    for i=1:k

        x1(k)=x1(k)+x0(i);

    end

end

z=zeros(size(x0));

for k=2:n

    z(k)=0.5*(x1(k)+x1(k-1));

end

y=x0';

y(1)=[];

b(:,1)=-z';

b(:,2)=1;

b(1,:)=[];

ab=inv(b'*b)*b'*y;

a=ab(1);

b=ab(2);

px0(1)=x0(1);

%求还原值系列

for k=1:number-1

    px0(k+1)=(1-exp(a)) * ( x0(1)-b/a ) * exp(-a*k);

end

temp=px0(1:n);

x0;

temp=(temp-x0)./x0;      %相对误差

temp(1)=[];         %删除第一个为零的误差

temp=abs(temp);

rel=sum(temp)/(n-1)*100;

残差Gm(1,1)

function [px0,ab,rel]=ccgm11(x0,number)

%[px0,ab,rel]=gm11(x0,number)

%px0为残差预测数列,ab为求得的系数,rel为平均相对误差(为百分比)

%默认的number参数为原数组大小

if nargin==1

    number=max(size(x0));

end

n=max(size(x0));    %数组大小..

[px0,ab,rel]=gm11(x0,number);

wucha=x0-px0(1:n);

i=n;

%求后面的同号的数目.

while(wucha(i)*wucha(i-1)>0 & i>=2)

    i=i-1;

end

start=i;

length=n-i+1;

new=wucha(start:n);

if length>=4

    pwucha=gm11(new);

px0(start:n)=px0(start:n)+pwucha 

clear wucha;

wucha=px0-x0;

wucha=wucha./x0;    %相对误差

wucha=abs(wucha);

rel=sum(wucha)/(n-1)*100;

end

verhust

function [px0,ab,rel]=verhust(x1,number)

%[px0,ab,rel]=verhust(x0,number)

%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)

%默认的number参数为原数组大小

if nargin==1

    number=max(size(x1));

end

n=max(size(x1));

x0(1)=x1(1);

for k=2:n

    x0(k)=x1(k)-x1(k-1);

    z(k)=0.5*(x1(k)+x1(k-1));

end

x0;

z;

B=[-(z(2:n))' (z(2:n).^2)'];

B;

Y=(x0(2:n))';

Y;

ab=inv(B'*B)*B'*Y;

a=ab(1);b=ab(2);

for k=1:number

    px0(k)=(a*x1(1))/(b*x1(1)+(a-b*x1(1)).*exp(a*(k-1)));

end

temp=px0(1:n);

x1;

temp=(temp-x1)./x1;      %相对误差

temp(1)=[];         %删除第一个为零的误差

temp=abs(temp);

rel=sum(temp)/(n-1)*100;

新陈代谢Gm(1,1)

function [px0,ab,rel]=xcdxgm11(x0,number,step)

%[px0,ab,rel]=xcdxgm11(x0,number,step)

%x0为原系列,number为要预测的数目,step为基本步长

%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)

%默认的number参数为原数组大小

%模型假设预测的数据和原始数据都要大于等于5

if nargin==1

    number=max(size(x0));

    step=max(size(x0));

end

if nargin==2

    step=max(size(x0));

end

n=max(size(x0));

if n    error('此模型要求至少有五个原始数据,并且原始数据个数要大于新陈代谢的步长.');

end

[px0,ab,rel]=gm11(x0,n);

last=n;

x0;

px0;

while last    begin=last-step+1;

    temp=px0(begin:last);

    temp=gm11(temp,step+1);

    last=last+1;

    px0(last)=temp(step+1);

end

文档

Matlab灰色预测工具箱

Matlab灰色预测工具箱——走过数模2009-07-0223:05灰色预测几乎是每年数模培训必不可少的内容,相对来说也是比较简单,这里写了四个函数,方便在Matlab里面调用,分别是GM(1,1),残差GM(1,1),新陈代谢GM(1,1),Verhust自己写得难免有所疏忽,需要的朋友自己找本书本来试验一下。Gm(1,1)function[px0,ab,rel]=gm11(x0,number)%[px0,ab,rel]=gm11(x0,number)%px0为预测数列,rel为平均相对误差
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top