- 积分
- 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 |
|