无论您想要做什么,以下都是您的代码的一些基本问题:
- You use
size
作为变量名。这样做会覆盖 MATLAB 的函数size http://www.mathworks.com/help/matlab/ref/size.html.
- 功能zeros http://www.mathworks.com/help/matlab/ref/zeros.html创建一个由零初始化的数组,不需要循环。
- 而不是计算
randn
循环 200 次,你可以做一次,用dxdy = randn(2,numParticles,200)
然后简单地参考dxdy(:,:,i)
循环内。
- 对于求和也同样如此。不要在循环中求和以获得累积和,而是使用cumsum http://www.mathworks.com/help/matlab/ref/cumsum.html like
Part = cumsum(randn(2,numParticles,200),3);
然后参考Part(:,:,i)
,在循环内。
现在开始你的任务了。你说你想知道如何打印,但我相信你想知道plot因为你使用一些命令,比如axis
, clf
and hold
,指的是图形对象。然而,你从来没有真正策划过任何事情。
二维绘图的基本和通用函数是plot http://www.mathworks.com/help/matlab/ref/plot.html,但还有许多其他更具体的功能。其中之一是scatter
,它还有一个姐妹函数gscatter http://www.mathworks.com/help/stats/gscatter.html,这需要三倍x
, y
and group
并绘制每个(x(k),y(k))
由他们的颜色group(k)
.
此代码在轴上绘制粒子,并为它们的运动设置动画:
prompt = 'Ge ett input';
scope = input(prompt) ;
numParticles = input('Ange antal partiklar');
N = 500;
Part = cumsum(randn(2,numParticles,N)*scope/100,3);
h = gscatter(Part(1,:,1),Part(2,:,1),1:numParticles);
axis([-scope scope -scope scope]);
legend off
for k = 2:N
for p = 1:numParticles
h(p).XData = Part(1,p,k);
h(p).YData = Part(2,p,k);
end
drawnow
end
这是您要找的吗?