全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2185 6
2011-12-10
麻烦大侠帮忙看看下面的程序有什么问题:
是算hurst的。
请问这个maxT是时间窗口吧?
我在窗口输入
H=genhurst(S,2,100)
为什么H只有一个值?是循环出问题了嘛?


function [mH,sH]=genhurst(S,q,maxT)



if nargin < 2, q = 1; maxT = 19; end
if nargin < 3, maxT = 19; end
if size(S,1)==1 && size(S,2)>1
S = S';
elseif size(S,1)>1 && size(S,2)>1
fprintf('S must be 1xT \n')
return
end
if size(S,1) < (maxT*4 | 60)
warning('Data serie very short!')
end
L=length(S);%l表示的是观测值个数
lq = length(q);%这个值肯定是1?
loo=0;
ll = [];%赋值为空数组
H1 = [];
H2 = [];
H = [];
ttmm =[];
k = 0;
for Tmax=5:maxT % Tmat=初值:步长,但为什么从5开始呢?
k = k+1;
x = 1:Tmax;
ttmm(end+1)=Tmax;
mcord1 = [];
mcord2 = [];
for tt = 1:Tmax
dV = S((tt+1):tt:L) - S([(tt+1):tt:L]-tt);
VV = S([(tt+1):tt:(L+tt)]-tt)';
ll(tt)= length(dV);
N = ll(tt)+1;
X = 1:N;
Y = VV;
mx = sum(X)/N;
SSxx = sum(X.^2) - N*mx^2;
my = sum(Y)/N;
SSxy = sum(X.*Y) - N*mx*my;
cc(1) = SSxy/SSxx;
cc(2) = my - cc(1)*mx;
ddVd = dV - cc(1);
VVVd = VV - cc(1).*[1:ll(tt)+1] - cc(2);
for qq=1:lq
mcord(tt,qq)=mean(abs(ddVd).^q(qq))/mean(abs(VVVd).^q(qq));
end
end
mx = mean(log10(x));
SSxx = sum(log10(x).^2) - Tmax*mx^2;
for qq=1:lq
my = mean(log10(mcord(:,qq)));
SSxy = sum(log10(x).*log10(mcord(:,qq))') - Tmax*mx*my;
H(k,qq) = SSxy/SSxx;
end
end
mH = mean(H)'./q(:);
if nargout == 2
sH = std(H)'./q(:);
elseif nargout == 1
sH = [];
end
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-12-11 11:38:05
实至名归。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-11 16:03:52
% S is 1xT data series (T>50 recommended)
% specifies the exponent q which can be a vector (default value q=1)
% specifies value maxT of the scaling window, default value maxT=19
S=cumsum(randn(10000,1));
q=[1,2,3];
H=genhurst(S,q)
ans =

    0.5106
    0.5090
    0.5064
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-11 19:51:14
epoh 发表于 2011-12-11 16:03
% S is 1xT data series (T>50 recommended)
% specifies the exponent q which can be a vector (default ...
这个结果我懂了,请问maxT是什么作用?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-12 14:31:30
tiaotiaotang 发表于 2011-12-11 19:51
这个结果我懂了,请问maxT是什么作用?
当计算generalized Hurst exponent H时,
maxT是用来决定取样的窗宽范围
  http://en.wikipedia.org/wiki/Hurst_exponent
假设maxT=19,则Tmax=5,6,7,.....19.
    每个Tmax可以计算出一个 H value
    H'=[0.3604    0.4488    0.4660    0.4515    0.4511   
           0.4241    0.4009    0.3667    0.3632    0.3468   
           0.3507    0.3527    0.3560    0.3267    0.2995]
    mH = mean(H)'./q(:)
          = 0.3843
底下以S=cumsum(randn(100,1));q=[1];Tmax=5为例说明:
   Tmax=5:maxT
   Tmax=5
   x = 1:Tmax   % 1 2 3 4 5
   tt = 1:Tmax
   当tt=1,取样N=100 (1,2,3,.........100)
   当tt=2,取样N= 50 (1,3,5,.........100)
   当tt=3,取样N= 34 (1,4,7,.........100)
   当tt=4,取样N= 25 (1,5,9,.......... 97)
   当tt=5,取样N= 20 (1,6,11,.........96)
   计算出一个 H = 0.3604
同理类推当maxT=6
   Tmax=5:maxT
   Tmax=5
   x = 1:Tmax   % 1 2 3 4 5
   tt = 1:Tmax
   当tt=1,取样N=100 (1,2,3,.........100)
   当tt=2,取样N= 50 (1,3,5,.........100)
   当tt=3,取样N= 34 (1,4,7,.........100)
   当tt=4,取样N= 25 (1,5,9,.......... 97)
   当tt=5,取样N= 20 (1,6,11,.........96)
   
   Tmax=6
   x = 1:Tmax   % 1 2 3 4 6
   tt = 1:Tmax
   当tt=1,取样N=100 (1,2,3,.........100)
   当tt=2,取样N= 50 (1,3,5,.........100)
   当tt=3,取样N= 34 (1,4,7,.........100)
   当tt=4,取样N= 25 (1,5,9,......... 97)
   当tt=5,取样N= 20 (1,6,11,.........96)
   当tt=6,取样N= 17 (1,7,13,.........97)
   

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-12 20:02:31
epoh 发表于 2011-12-12 14:31
当计算generalized Hurst exponent H时,
maxT是用来决定取样的窗宽范围
  http://en.wikipedia.org/w ...
谢谢,。我仔细看看,消化消化
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群