2017-10-19 37 views
0

Je veux modéliser le mouvement brownien avec plusieurs molécules/particules et les animer. Jusqu'à présent, j'ai trouvé cette solution de code, mais je suis incapable d'obtenir le résultat souhaité. Ci-dessous est mon codeMouvement brownien avec plusieurs molécules/particules [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 

Quelqu'un peut-il me dire pourquoi je suis incapable d'obtenir les résultats souhaités?

Modifier

Résultat souhaité: Pour animer le mouvement des molécules en utilisant « drawnow » fonction

+1

* le résultat souhaité *. Eh bien, cela dépend complètement de ce que vous désirez! Si vous désirez que le code produise des cupcakes, nous ne pouvons pas vous aider. Si votre désir est quelque chose d'autre, alors s'il vous plaît dites-nous, car nous pourrions être en mesure d'aider. –

+0

@AnderBiguri J'ai ajouté un Edit :) – nashynash

+0

Pourquoi ça ne marche pas? Votre code ressemble beaucoup à la réponse [ici] (https://stackoverflow.com/questions/39632393/plotting-brownian-motion-matlab), et ce code fonctionne –

Répondre

2

vous avez h(p).YData = x(k,p); changement à h(p).YData = y(k,p);

Il complote les mêmes numéros les uns contre les autres droits maintenant, c'est pourquoi vous obtenez une ligne droite.

+0

Oups! Comment ai-je manqué ça? :) Je vous remercie! – nashynash