• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: Matlab
  • 标签: 灰色预测  

资源简介

灰色预测模型的matlab源代码,可对一些线性变换的数据进行预测

资源截图

代码片段和文件信息

 %by allen @ 红嘴海鸥 

%灰色模型预测是在数据不呈现一定规律下可以采取的一种建模和预测方法,其预测数据与原始数据存在一定的规律相似性

%下面程序是灰色模型GM(11)程序二次拟合和等维新陈代谢改进预测程序matlab6.5 使用本程序请注明,程序存储为gm1.m

%x = [59995903584857007884];gm1(x);  测试数据 

%二次拟合预测GM(11)模型
function  [x51fcast]=gm1(x)
sizexd2 = size(x2);
%求数组长度

k=0;
for y1=x
    k=k+1;
    if k>1
        x1(k)=x1(k-1)+x(k);
        %累加生成
        z1(k-1)=-0.5*(x1(k)+x1(k-1));   
        %z1维数减1,用于计算B
        yn1(k-1)=x(k);
    else
        x1(k)=x(k);
    end
end
%x1z1kyn1

sizez1=size(z12);
%size(yn1);
z2 = z1‘;
z3 = ones(1sizez1)‘;

YN = yn1‘;   %转置
%YN

B=[z2 z3];
au0=inv(B‘*B)*B‘*YN;
au = au0‘;
%Bau0au

afor = au(1);
ufor = au(2);
ua = au(2)./au(1);
%aforuforua 
%输出预测的  a u 和 u/a的值

constant1 = x(1)-ua;
afor1 = -afor;
x1t1 = ‘x1(t+1)‘;
estr = ‘exp‘;
tstr = ‘t‘;
leftbra = ‘(‘;
rightbra = ‘)‘;
%constant1afor1x1t1estrtstrleftbrarightbra

strcat(x1t1‘=‘num2str(constant1)estrleftbranum2str(afor1)tstrrightbra‘+‘leftbranum2str(ua)rightbra)
%输出时间响应方程

%******************************************************
%二次拟合

k2 = 0;
for y2 = x1
    k2 = k2 + 1;
    if k2 > k  
    else
        ze1(k2) = exp(-(k2-1)*afor);  
    end
end
%ze1

sizeze1 = size(ze12);
z4 = ones(1sizeze1)‘;
G=[ze1‘ z4];
X1 = x1‘;
au20=inv(G‘*G)*G‘*X1;
au2 = au20‘;
%z4X1Gau20

Aval = au2(1);
Bval = au2(2);
%AvalBval
%输出预测的  AB的值

strcat(x1t1‘=‘num2str(Aval)estrleftbranum2str(afor1)tstrrightbra‘+‘leftbranum2str(Bval)rightbra)
%输出时间响应方程

nfinal = sizexd2-1 + 1;
%决定预测的步骤数5  这个步骤可以通过函数传入

%nfinal = sizexd2 - 1 + 1;
%预测的步骤数 1

for  k3=1:nfinal
    x3fcast(k3) = constant1*exp(afor1*k3)+ua;
end
%x3fcast
%一次拟合累加值

for  k31=nfinal:-1:0
    if k31>1
        x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1);
    else
        if k31>0
            x31fcast(k31+1) = x3fcast(k31)-x(1);
    

评论

共有 条评论