如何计算此代码中每个网格框中的粒子数?

时间:2015-06-29 19:24:58

标签: matlab

如何计算此代码中每个网格框中的粒子数

以下是我的代码:

xyRange=[1,5];
P=3;
vx=0.6;  
vy=0.4;
X=[];
Y=[];
for day=1:5
    X=[X;randi(xyRange,P,1)];
    Y=[Y;randi(xyRange,P,1)];
    X=X+vx;
    Y=Y+vy;
end 
plot(X,Y,'kd');                
grid on;
axis([1,50,1,50]);
j = floor(X/5)+1; 
k = floor(Y/5);
box = k*10+j;

1 个答案:

答案 0 :(得分:1)

如果您有统计工具箱,最简单的方法是使用hist3

在你的情况下,当我绘制网格时,看起来每个框以5为单位分开。因此,命令非常简单:

$(document).ready(function () {
$('html, body').animate({ scrollTop: 0 }, 'slow');
});

cnt = hist3([X,Y], {0:5:50 - 2.5, 0:5:50 - 2.5}); X是您的2D数据点,第二个元素是YX值的单元格数组,表示每个点的中心在每个网格中。请注意,定义的点是相对于左上角的原点。如果您想确保原点位于左下角一角,您实际上需要这样做:

Y

在我的跑步中我得到了这个:

cnt = flipud(cnt.');

制作情节时,我明白了:

enter image description here

如果您将计数与顶部生成的网格进行比较,您会看到匹配。但是,由于我指定了分档中心的方式,第一行和最后一行以及第一列和最后一列都没有意义,因此您可以安全地从分析中消除这些。

如果您想要一个很好的图示示例,请在没有任何输出参数的情况下调用cnt = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 0 0 0 0 0 0 0 0 0 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

hist3

我们得到了这个:

enter image description here