2017-10-19 81 views
0

我想用多个分子/粒子对布朗运动进行建模并对它们进行动画处理。到目前为止,我已经拿出了这个代码解决方案,但我无法得到期望的结果。以下是我的代码具有多个分子/粒子的布朗运动[Matlab]

N = 500; % number of samples 
tau = .1; % time interval in seconds 
D = 10; % diffusion coefficient 
NumMolecules = 500; % number of moelcues to be released 
k = sqrt(2*D*tau); % scaling factor 
dx = k * randn(N,NumMolecules); 
dy = k * randn(N,NumMolecules); 
x = cumsum(dx); 
y = cumsum(dy); 
h = gscatter(x(1,:),y(1,:),1:NumMolecules,'b'); 
for k = 2:N 
    for p = 1:NumMolecules 
     h(p).XData = x(k,p); 
     h(p).YData = x(k,p); 
    end 
    drawnow limitrate 
end 
drawnow 

有谁能告诉我为什么我无法获得理想的结果吗?

编辑

期望的结果:要使用“的DrawNow”功能动画的分子运动

+1

*所需的结果*。那么,它完全取决于你的愿望!如果你希望代码输出纸杯蛋糕,我们不能帮忙。如果你的愿望是别的,那么请告诉我们,因为我们可能会提供帮助。 –

+0

@AnderBiguri我已添加编辑:) – nashynash

+0

为什么它不起作用?你的代码看起来与[这里]的答案非常相似(https://stackoverflow.com/questions/39632393/plotting-brownian-motion-matlab),而且代码的工作原理是 –

回答

2

你有h(p).YData = x(k,p);其更改为h(p).YData = y(k,p);

它绘制相同的数字相互权现在,这就是为什么你得到一条直线。

+0

哎呀!我怎么错过了? :) 谢谢! – nashynash