| 
 
	积分5181贡献 精华在线时间 小时注册时间2018-9-15最后登录1970-1-1 
 | 
 
 
 楼主|
发表于 2018-11-6 11:05:48
|
显示全部楼层 
| function hurst=hurst_test(data)
 [M,N]=size(data);
 for n=3:N%子区间长度
 H=fix(N/n);
 Rs=zeros(1,H);
 for h=1:H%子区间个数
 xna=zeros(1,n);
 x=data(1,n*h-n+1:n*h);
 for r=1:n
 for t=1:r
 xna(r)=xna(r)+(x(t)-mean(x));%计算累积极差
 end
 end
 R=max(xna)-min(xna);
 s=std(x,1);
 Rs(h)=R/s;
 end
 Rsn(n-2)=mean(Rs);
 end
 n0=3:N;
 lnRs=log(Rsn(:));
 lnn=log(n0);
 p2=polyfit(lnn,lnRs',1);
 hurst=p2(1); % 赫斯特指数
 v=Rsn./n0.^0.5;
 figure(1)
 plot(lnn,v);
 figure(2)
 scatter(lnn,lnRs,'o','k');hold on;
 plot(lnn,lnn.*hurst+p2(2),'r--');
 xlabel('ln(t)');ylabel('ln(R/S)');
 r2=corrcoef(lnn,lnRs'); %拟合R的平方
 if (p2(2)<0)
 str1=['y=',num2str(p2(1)),'*x',num2str(p2(2))];
 else
 str1=['y=',num2str(p2(1)),'*x+',num2str(p2(2))];
 end
 a=get(gca);
 text(a.XLim(1)+0.2,a.YLim(2)-0.2,str1);  %依据横纵坐标上下限,标注text
 str2=['H=',num2str(p2(1))];str3=['R^2=',num2str(r2(1,2)^2)];
 text(a.XLim(1)+0.2,a.YLim(2)-0.4,str2); text(a.XLim(1)+0.2,a.YLim(2)-0.6,str3);
 end
 | 
 |