Matlab 散布不';我不能正常工作

Matlab 散布不';我不能正常工作,matlab,matlab-figure,Matlab,Matlab Figure,我写了一个代码来创建一个移动点的电影。我使用散射使点着色(点的颜色取决于区域点的密度)。x和y是点的位置,我在for循环中输入了以下代码,用于传递时间: figure(h1); % set figure 1 as current figure cla dens = zeros(size(x)); % Tolerence is distance betweeen points (squared) tol = 1; for ii = 1:numel(x) % Loop through all

我写了一个代码来创建一个移动点的电影。我使用散射使点着色(点的颜色取决于区域点的密度)。x和y是点的位置,我在for循环中输入了以下代码,用于传递时间:

figure(h1); % set figure 1 as current figure
cla
dens = zeros(size(x));
% Tolerence is distance betweeen points (squared)
tol = 1;
for ii = 1:numel(x)
    % Loop through all points, count neighbours within tolerence
    dens(ii) = sum((x - x(ii)).^2 + (y - y(ii)).^2 < tol);
end
% Normalise density onto range 0-1
dens = (dens/max(dens));
hold on
scatter(x,y, [], dens,'filled','d')
drawnow
currFrame = getframe;
writeVideo(vidObj,currFrame);
图(h1);%将图1设置为当前图
cla
密度=零(尺寸(x));
%公差是点之间的距离(平方)
tol=1;
对于ii=1:numel(x)
%通过所有点循环,计算公差范围内的邻居
密度(ii)=总和((x-x(ii))。^2+(y-y(ii))。^2

当我运行代码时,会创建电影,但所有点都是绿色的。有人能猜出原因和解决方法吗?

您的
密度计算取决于
x
y
的值与
tol
的值之间的关系。如果
tol
太大,则所有点a都算作所有其他点的“区域内”,如果太小,则所有点都是“单独的”。在这两种情况下,
dens
对所有点具有相同的值,并且
scatter
将它们全部涂成绿色。

第四个参数应该是一个包含
double
的3列矩阵,其中每行是一个RGB元组,每个元素都是
[0,1]
。这与您的
dens
数组相同吗?我尝试了一下,但没有改变任何东西:图(h1);类别密度=零(大小(x));%公差是点之间的距离(平方)tol=1;对于ii=1:numel(x)%Loop通过所有点,计算容差密度(ii)=总和((x-x(ii))。^2+(y-y(ii))。^2