24小时热门版块排行榜    

查看: 477  |  回复: 0

cwhe_10

新虫 (小有名气)

[求助] 混沌加权一阶局域法预测和基于最大Lyapunov指数预测的相关问题?

1.如题,我自己写了个加权一阶局域法预测的代码,如下:
   程序预测的图像是条直线,不知道何故?求指导!
%**************************************************************************
%函数功能:          加权一阶局域法实现一步预测
%公式来源:      吕金虎—混沌时间序列分析及其应用—P102-104
%               完成人:何**(cwhe_10@163.com)       2015年6月22日23时30分
%I/o口说明:
%           data:原始数据               ——输入、输出—必须是行向量!
%           d1  :预测数据(包含原始数据)——输出!
%           m   :嵌入维数               ——输入
%           tau :时间延迟               ——输入
%           Q   :邻近点个数            ——输入
%           a   :权参数                ——输入
%           NN  :预测数量              ——输入
%**************************************************************************
function [data,d1]=Jiaquan_yijie_yuce(data,m,tau,Q,a,NN)

port=[];
port=[port data];                                                          %方便将预测值更新!
N=length(data);
%--------------------------------------------------------------------------
for i=1:NN
    i
    Y=Reconstitution(port,m,tau);                                          %相空间重构!
    M=N-(m-1)*tau;                                                         %相空间点数!
    Center=Y(:,M);                                                         %中心点—最后一个相点!
   
    if  Q > M-1
        error('You should change the value of Q');                         %防止Q的取值过大!
    end

    D=[];
    for k=1:M-1
        D1=sqrt((Y(:,k)-Center)'*(Y(:,k)-Center));                          %各点与中心点之间的距离!
        D=[D D1];
    end
   
    di=zeros(1,Q);                                                         %参考相空间点集—P102(5.15)!
    di_location=zeros(1,Q);                                                %对应邻近点从小到大的原始相空间相点的序列号!
    for i=1:Q                                                              %寻找Q个最近邻近点!
        [value,location]=min(D);
        di(1,i)=value;                                                     %获取参考相空间最小相点间距值!
        di_location(1,i)=location;                                         %对应坐标!
        D(1,location)=1e10;                                                %取完值后,赋较大的值,以防下次被取到!
    end
   
    dm=di(1,1);                                                            %相点与中心点的最小间距!
    Pi=zeros(1,Q);                                                         %邻近点与中心点距离的权值!
    mei_yon=zeros(1,Q);
    for k=1:Q
        mei_yon(1,k)=exp(-a*(di(k)-dm));
    end
    Pi(1 , : )=mei_yon/sum(mei_yon);                                          %权重向量—P102(公式5.15)!
   
%--------------------------------------------------------------------------
%加权最小二乘解方程组
    fenzi=0;
    fenmu=0;
    for jj=1:Q
        location=di_location(1,i);
        f1=Y(:,location+1).*Y(:,location);
        fenzi=fenzi+Pi(jj)*f1;
        
        f2=Y(:,location).*Y(:,location);
        fenmu=fenmu+Pi(jj)*f2;
    end
    B=fenzi/fenmu;                                                         %先解算B值!
   
    fenzi1=0;
    fenzi2=0;
    fenmu2=sum(Pi);
    for jj=1:Q
        location=di_location(1,i);
        FL=Pi(jj)*Y(:,location);
        fenzi1=fenzi1+FL;
        
        FR=Pi(jj)*Y(:,location+1);
        fenzi2=fenzi2+FR;
    end
    A=(B*fenzi1-fenzi2)/fenmu2;                                            %再解算A值
%--------------------------------------------------------------------------
%加权一阶预测
    data_yuce=A+B*Center;
    data_yuce=data_yuce(m);
    port=[port data_yuce];                                                 %for循环里可以循环更新预测值到序列中去,从而反复建模—提高精度!
end                                                                        
d1=port;
%--------------------------------------------------------------------------


2.第二个问题是,基于最大Lyapunov指数预测时,得出的值会有2个,如何取舍呢?

热烈欢迎各位虫子来信提问题提建议,合作共赢,谢谢!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cwhe_10 的主题更新
信息提示
请填处理意见