Matlab 在这种情况下如何使用for循环?

Matlab 在这种情况下如何使用for循环?,matlab,Matlab,我的问题是,在第一天源产生三个粒子,然后这三个粒子随地下水速度移动,第二天源又产生三个粒子,第三天源又产生三个粒子,前一个粒子随地下水速度移动,“源”会在一定范围内生成粒子,比如说(0-5)。这种情况将持续365天。我想这就是你们要做的。如果我误解了,请澄清你的问题 X=randi([1,5],3,1); Y=randi([1,5],3,1); for i=1:3; Xnew(i)=[X(i,1)+.6]; Xn=Xnew'; Ynew(i)=[Y(i,1)+.

我的问题是,在第一天源产生三个粒子,然后这三个粒子随地下水速度移动,第二天源又产生三个粒子,第三天源又产生三个粒子,前一个粒子随地下水速度移动,“源”会在一定范围内生成粒子,比如说(0-5)。这种情况将持续365天。

我想这就是你们要做的。如果我误解了,请澄清你的问题

X=randi([1,5],3,1); 
Y=randi([1,5],3,1); 

for i=1:3; 
    Xnew(i)=[X(i,1)+.6];
    Xn=Xnew'; 
    Ynew(i)=[Y(i,1)+.4];
    Yn=Ynew'; 
end 

plot(Xn,Yn,'kd'); 
grid on;
hold on; 
D2X=randi([1,5],3,1); 
D2Y=randi([1,5],3,1); 
plot(D2X,D2Y,'ro');
hold off; 
axis([1,50,1,50]);
此版本在粒子生成当天移动粒子。如果只希望在粒子生成后的第二天开始移动粒子,可以稍微改变一下:

xyRange=[1,5];      %// Starting xy range of particles
numP=3;             %// Number of particles generated each day
vx=0.6; vy=0.4;     %// x and y velocity
numDays=365;        %// Number of days to generate particles

X=[]; Y=[];         %// Vectors start out empty

for day=1:numDays
   %// Generate numP particles and add to end of vectors X and Y
   X=[X;randi(xyRange,numP,1)]; 
   Y=[Y;randi(xyRange,numP,1)]; 

   %// Move all the particles
   X=X+vx;
   Y=Y+vy;
end
在任一版本的末尾,生成的第一个粒子将位于
X(1:3),Y(1:3)
,生成的最后一个粒子将位于
X(end-2:end),Y(end-2:end)


我不确定您是想每天绘图还是只在年底绘图,但我相信您可以找到答案。

没有格式,编辑在审阅队列中。你现在的问题需要更多的信息我们才能回答。你谈论天、源、速度和粒子,但没有介绍你的问题。源不是什么,只是3个粒子发生器,x方向的速度是0.6米/天,y方向的速度是0.4米/天,粒子只是我在代码中写了3个,我们必须随机定位这些粒子,所以我必须使用randi,它将持续365天非常感谢你的回答。但我们必须把天数作为变量,因为在任何时候我们都应该能够绘制它,另外一件事是最终位置等于初始位置加上速度*时间。假设我们假设1年为一个时间段,那么在第一天产生的粒子将移动364天(t-1),在第二天产生的粒子将移动363天,如(t-2),在第三天生成的粒子将移动362天……因此,在您写下的代码中,我们可以更改for循环的条件,以便在不同的天数内找到,因为它有一天的时差。假设我们已经做了50天(即for day=1:50),然后当我们像plot(X,Y,'kd')一样绘制它时;轴([1,50,1,50]);网格化;我们如何计算每个网格中的粒子数,我的意思是它的代码是什么,我尝试了函数box=coord(X,Y),对于j=floor(X/5)+1;k=地板(Y/5);box=k*10+j;end@Snehaagrawal我添加了第二个版本的代码,希望能修复您的一天时差。@Snehagrawal顺便说一句,由于加速度是恒定的,如果您只想在
numDays
days之后得到结果,而不需要中间结果,我们可以无循环地执行计算。
xyRange=[1,5];      %// Starting xy range of particles
numP=3;             %// Number of particles generated each day
vx=0.6; vy=0.4;     %// x and y velocity
numDays=365;        %// Number of days to generate particles

%// Generate first numP particles
X=[randi(xyRange,numP,1)]; 
Y=[randi(xyRange,numP,1)]; 

for day=2:numDays    %// Note we've already done Day 1
   %// Move all pre-existing particles
   X=X+vx;
   Y=Y+vy;

   %// Generate numP particles and add to end of vectors X and Y
   X=[X;randi(xyRange,numP,1)]; 
   Y=[Y;randi(xyRange,numP,1)]; 
end