2017-10-19 24 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