在matlab中反转粒子的方向

invert the direction of a particles in matlab

我的算法有问题,我有一个 space 带有 x,y 坐标和上下限。我在这个 space 中也有一些粒子可以自由移动。 我希望任何粒子都留在我的 space 中,如果其中一个粒子移出边界,我需要改变它的方向。如果没有办法带回粒子,我可以在 space 内的随机点创建一个粒子。 我想用一个 for 循环来检查每个粒子,当一个粒子移出时将其带回相反的方向,但我不知道如何写它。

如果没有你的信息,我会猜猜我会怎么做:

part_location=rand(10,2); % 10 particles
part_direction=rand(10,2); % non-normalized direction so it has also speed
boundaries=[0,0;1 1]; % square boundary from 0 to 1; not going to use it so I dont write your whole code.


for ii=1:nsteps_simulation
    % update particle position using direction
    % do it
    part_location= ... ?
    % check if particles are inside the boundary

    inside=sum(part_location>0 && part_location<1,2)==2;

    outside=~inside;

    % now you know which particles are inside and wich outside.
    % Inverting the direction should be easy

    part_direction=...?

end

如果代码不完整,请见谅,但没有人会为您编写! 但是,我希望我已经为您提供了一个清晰的结构,说明您应该如何为此设计算法。当然,根据您的 data/application 您需要稍微修改结构,但这可能是您在没有更多信息或向我们展示您尝试过的内容的情况下所能获得的最多信息!