You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何归一化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:16:54