当前位置:   article > 正文

c语言混沌序列,混沌时间序列的C-C法计算太阳黑子月度数据的tau和tw与书上的不同,咋么办?...

太阳黑子最大数量c代码

%C-C法子函数

function [Smean,Sdeltmean,Scor,tau,tw]=C_CMethod(data,max_d)               %原理参考:吕金虎-混沌时间序列分析及其应用——P67-70

N=length(data);                                                            %时间序列的长度

Smean=zeros(1,max_d);                                                      %初始化矩阵

Scmean=zeros(1,max_d);                                                     %C_CMethod 经使用后证实可以运行,不过其中有一个小错误,在初始化矩阵的位置要把Scmean改为Sdeltmean

Scor=zeros(1,max_d);

sigma=std(data);                                                           %计算序列的标准差

for t=1:max_d                                                              %计算Smean,Sdeltmean,Scor

S=zeros(4,4);

Sdelt=zeros(1,4);

for m=2:5

for j=1:4

r=sigma*j/2;

Xdt=disjoint(data,t);                                          %将时间序列data分解成t个不相交的时间序列

s=0;

for tau=1:t

N_t=floor(N/t);                                            %分成的子序列长度

Y=Xdt(:,tau);                                              %每个子序列

Cs1(tau)=0;                                                %计算C(1,N/t,r,t),相当于调用Cs1(tau)=correlation_integral1(Y,r)

for ii=1:N_t-1

for jj=ii+1:N_t

d1=abs(Y(ii)-Y(jj));                               %计算状态空间中每两点之间的距离,取无穷范数

if r>d1

Cs1(tau)=Cs1(tau)+1;

end

end

end

Cs1(tau)=2*Cs1(tau)/(N_t*(N_t-1));

Z=reconstitution(Y,m,1);                                   %相空间重构

M=N_t-(m-1);

Cs(tau)=correlation_integral(Z,M,r);                       %计算C(m,N/t,r,t)

s=s+(Cs(tau)-Cs1(tau)^m);                                  %对t个不相关的时间序列求和

end

S(m-1,j)=s/tau;

end

Sdelt(m-1)=max(S(m-1,  :  ))-min(S(m-1,  :  ));                            %差量计算

end

Smean(t)=mean(mean(S));                                                %计算平均值

Sdeltmean(t)=mean(Sdelt);                                              %计算平均值

Scor(t)=abs(Smean(t))+Sdeltmean(t);

end

for i=2:length(Sdeltmean)-1                                                %寻找时间延迟tau:即Sdeltmean第一个极小值点对应的t

if Sdeltmean(i)

tau=i;

break;

end

end

for i=1:length(Scor)                                                       %寻找时间窗口tw:即Scor最小值对应的t

if Scor(i)==min(Scor)

tw=i;

break;

end

end

%**************************************************************************

我的程序:

clc;clear;close all;

data=xlsread('Sunspot_17531_200112.xlsx');

d0=data(:,3);

figure;plot(d0,'r');grid on;xlabel('时间/月');

ylabel('太阳黑字数');title('1753年1月--2001年12月太阳黑子曲线图');

%--------------------------------------------------------------------------

[Smean,Sdeltmean,Scor,tau,tw]=C_CMethod(d0,400);                           %tau=31,tw=81,m=4这样的结果与书上m=8不相符合?????

这个怎么办呢?

附件是所有涉及到的程序(其中xlsx为太阳黑子月度数据,数据的第三列是月度数据,第四列是方差)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/134905
推荐阅读
相关标签
  

闽ICP备14008679号