Scatter没有正常使用Matlab

时间:2017-06-01 15:30:24

标签: 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 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);

当我运行代码时,会创建电影,但所有点都是绿色。谁能猜出是什么原因以及如何解决它?

1 个答案:

答案 0 :(得分:0)

您的dens计算取决于xy的值与tol的值之间的关系。如果tol太大,那么所有的点数都计为&#34;在该地区&#34;所有其他点,如果它太小,那么所有点都是&#34;单独&#34;。在这两种情况下,dens对所有点都有相同的值,scatter将它们全部换成绿色。