我想用多个分子/粒子模拟布朗运动并为它们制作动画。到目前为止,我已经提出了这个代码解决方案,但我无法获得所需的结果。以下是我的代码
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
有谁能告诉我为什么我无法获得理想的结果?
修改
期望的结果:使用'drawow'功能动画分子的运动
答案 0 :(得分:2)
您h(p).YData = x(k,p);
将其更改为h(p).YData = y(k,p);
它现在正在相互绘制相同的数字,这就是为什么你得到一条直线。