如何归一化Matlab中wfbm生成的分数布朗运动信号?
关于Matlab wfbm函数生成分数布朗运动的归一化问题
我最近在用Matlab的wfbm函数生成一维类点粒子的扩散轨迹,分别对应亚扩散(Hurst参数H=0.25)、正常布朗扩散(H=0.5)和超扩散(H=0.75)三种状态,但遇到了一个头疼的问题:时间归一化和方差不符合预期。
比如当H=0.5时,标准布朗运动的差分(每一步的位移)标准差应该是1,但我计算diff(wfbm(0.5,1e6))的结果却是0.3955,完全不对。现在我搞不清楚该怎么对这三种轨迹做重新归一化,让它们符合各自的扩散特性。
我的轨迹生成代码
我生成了200个粒子,每条轨迹长度为500,代码如下:
M=500; N=200; nd = zeros(M,N); sub = zeros(M,N); sup = zeros(M,N); Hsub = 0.25; Hsup = 0.75; for j=1:N nd(:,j) = wfbm(0.5, M, 15, 'db10'); sub(:,j) = wfbm(Hsub,M, 10, 'db10'); sup(:,j) = wfbm(Hsup,M, 10, 'db10'); end
wfbm函数的核心实现片段
我扒出了wfbm生成信号的关键代码片段,但实在摸不准该修改哪部分才能得到标准的布朗运动:
tmp = conv(randn(1,len+nbmax),ckbeta); tmp = cumsum(tmp); CA = wkeep(tmp,len,'c'); for j=0:nblev-1 CD = 2^(j/2)*4^(-s)*2^(-j*s)*randn(1,len); len = 2*len-nbmax; CA = idwt(CA,CD,fs1,gs1,len); end fBm = wkeep(CA,L,'c'); fBm = fBm-fBm(1);
已尝试的方向
我查了相关文献,里面提到可以通过控制分数布朗运动(fBm)的方差来调整特性(对应参考文献7),但还是没找到具体的归一化步骤,不知道该怎么落地到代码里。
内容的提问来源于stack exchange,提问作者0x90
相关产品推荐
相关产品推荐

