你这个是pcol设定出了问题,因为原作者的用意无从考证,我就按照自己的想法随便帮你改动了一下
function data = BrownM( Npoints, Mean, Std, Opt )
dt=1;
% dt时间变化
% 选择项,Opt=1 生成一维随机数, Opt=2 生成二维随机数
if Opt == 1
%%
% standard Brownian motion
data = [0 cumsum(dt^0.5.*random('Normal', Mean, Std, 1, Npoints))];
% 生成服从正态分布的随机数, Mean 均值, Std 方差, 1, Npoints, 一行Npoints个
% cumsum为累加函数
% 画图
figure
plot(0:Npoints, data);
else if Opt == 2
data = cumsum([zeros(1,3);dt^0.5*random('Normal', Mean, Std, Npoints-1,3)]);
% 画图
figure
plot3(data(:,1), data(:,2), data(:,3), 'k');
% 根据数值设定画图点的颜色
% pcol = (data-repmat(min(data), Npoints, 1))/...
% repmat(max(data)-min(data), Npoints, 1);
pcol = sum(data,2);
% 叠加画图
hold on ;
scatter3(data(:,1), data(:,2), data(:,3),...
10, pcol, 'filled');
% 显示网格
grid on;
hold off;
else
error('Opt = 1 or Opt = 2')
end
end
结果如附图所示