水光潋滟 发表于 2008-11-17 11:14

这是程序求出的结果是什么

这个程序,我对各参数进行赋值,运行后也得到了数据,只是在赋值过程中,Maxstep的值会影响输出结果,M取几,输出的结果就对应的是几个数据,我不明白为什么,输出的数据究竟代表的是什么呀,请教各位高手,深表感谢!

%AOLMM多步预测函数
function = FunctionChaosPredict(Data,N,mtbp,deltaT,tao,d,MaxStep)
%Data是一维信号时间序列,N是信号数据长度,mtbp,deltaT,tao,d分别是重构相空间的平均时间序列、采样周期、时延及嵌入维
roll=Data;%取横摇数据
M = N - (d - 1)*tao;
for i = 1 : M
    for j = 1 : d
      MatrixX(i,j) = roll(i + (j - 1)*tao);
    end
end
%计算相空间中第M点与各点的距离
for j = 1 : (M - 1)
         Dis(j) = norm(MatrixX(M,:) - MatrixX(j,:),2);
end
%排序计算相空间中第M点的(m+1)个参考邻近点
for i = 1 : (d + 1)
    NearDis(i) = Dis(i);
    NearPos(i) = i;
end
for i = (d + 2) : (M - mtbp)
    for j = 1 : (d + 1)
      if (abs(i-j)>mtbp) %& abs(i-j)<10*mtbp
      if(Dis(i) < NearDis(j))
            NearDis(j) = Dis(i);
            NearPos(j) = i;
            break;
      end
      end
    end
end
SortedDis = sort(NearDis);
MinDis = SortedDis(1);
%计算第M点的(m+1)个参考邻近点的权P
SumP = 0;
for i = 1 : (d + 1)
    P(i) = exp(-NearDis(i)/MinDis);
    SumP = SumP + P(i);
end
P = P/SumP;
%用最小二乘法计算a[],b[]
for step=1:1:MaxStep
    aCoe1 = 0;
    aCoe2 = d;
    bCoe1 = 0;
    bCoe2 = 0;
    e = 0;
    f = 0;
    for i = 1 : (d + 1)
      aCoe1 = aCoe1 + P(i)*sum(MatrixX(NearPos(i),:));
      bCoe1 = bCoe1 + P(i)*(MatrixX(NearPos(i),:)*MatrixX(NearPos(i),:)');
      e = e + P(i)*(MatrixX(NearPos(i) + step,:)*MatrixX(NearPos(i),:)');
      f = f + P(i)*sum(MatrixX(NearPos(i) + step,:));
    end
    bCoe2 = aCoe1;
    CoeMatrix = ;
    ResultMatrix = ;
    abResult = pinv(CoeMatrix)*ResultMatrix;
    a = abResult(1);
    b = abResult(2);
for j = 1 : d
%   MatrixX(M + step,j) = a + b*MatrixX(M,j); %以历史上相近点的演化规律作为中心点的演化规律以中心点为基准进行预报
   
    MatrixX(M + step,j) = 0;
    for i = 1 : (d + 1)
      MatrixX(M + step,j) = MatrixX(M + step,j) + P(i)*(a + b*MatrixX(NearPos(i),j)); %以历史上相近点的演化加权和直接作为中心点的演化点进行预报
    end
end
%误差修正
    if M-tao+step+(d-1)*tao < N+1
      for j=1:d-1
            err(j)=MatrixX(M + step,j)-roll(M+step+(j-1)*tao);
      end
      ppp=1:d-1;ttt=err;neterr=newrbe(ppp,ttt);xxx=2:d;errp=sim(neterr,xxx);
      PredictedData(step) = MatrixX(M + step,d) - errp(d-1);
      roll(N+step)=PredictedData(step);
    else    PredictedData(step) = MatrixX(M + step,d);
    end%      roll(N+k)=PredictedData(k);
FChaosPredict(step) = PredictedData(step);
% FChaosPredict(step) = MatrixX(M + step,d);
end

水光潋滟 发表于 2008-11-17 15:10

补充问题

MaxStep 的赋值要遵循什么原则,我按照最大李亚普诺夫值的倒数的整数部分赋值的,得出的结果让我很迷茫,不知道该怎么处理得出的数据,这个程序是用什么方法进行的预测呢?还有,我对于“重构相空间的平均时间序列”这个概念不是很理解,虽然通过赋值验证发现,它对最后结果影响不大,但是很想知道正确的赋值方法,忘告人指点,谢谢

无水1324 发表于 2008-11-18 13:28

回复 楼主 水光潋滟 的帖子

这个输出的是关联维数?

水光潋滟 发表于 2008-11-19 08:08

不是关联维数,是一种预测方法,但是具体求出的结果是什么,我也不是很清楚,所以才来请教,看起来像是加权一阶局域法的求解过程,但不确定

水光潋滟 发表于 2008-11-19 16:10

对这个程序的新发现

参数a,b与输出结果是对应的,也就是说MaxStep的取值影响的是参数a,b,至于为什么会这样,还是不清楚

水光潋滟 发表于 2008-12-1 09:37

经过反复赋值,得出结论,输出结果是预测值,MaxStep的取值是预测的相点的个数,取几,就能预测出接下来的多少个相点的值

liushuiwen520 发表于 2010-11-15 10:23

回复 6 # 水光潋滟 的帖子

但是重构相空间的平均时间序列mtbp到底指什么呢?这个搞清楚了没有?

hit050230225 发表于 2011-4-13 15:15

回复 7 # liushuiwen520 的帖子

我也想知道这个mtbp是什么含义?时间延迟窗口?还是时间序列平均周期呢?

原来是小飞 发表于 2013-10-23 16:47

hit050230225 发表于 2011-4-13 15:15 static/image/common/back.gif
回复 7 # liushuiwen520 的帖子

我也想知道这个mtbp是什么含义?时间延迟窗口?还是时间序列平均周期呢?

应该是时间序列的平均周期,另外,您知道这个mtbp怎么计算吗?
页: [1]
查看完整版本: 这是程序求出的结果是什么