J'ai écrit un code pour créer un film de points en mouvement. J'ai utilisé la dispersion pour rendre les points colorés (la couleur des points dépend de la densité des points de la zone). x et y sont position des points et je mets ci-dessous le code dans une boucle pour le temps qui passe:Scatter ne fonctionne pas correctement Matlab
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);
Quand je lance le code, le film est créé, mais tous les points sont verts. Quelqu'un pourrait-il deviner quelle est la raison et comment le résoudre?
Le quatrième argument est supposé être une matrice à trois colonnes de 'double' où chaque ligne est un tuple RVB avec chaque élément étant' [0,1] '. Est-ce la même chose pour votre tableau 'dens'? – rayryeng
J'essaie ça mais ça n'a rien changé: figure (h1); cla dens = zéros (taille (x)); % La tolérance est la distance entre les points (au carré) tol = 1; pour ii = 1: numel (x) % Boucle dans tous les points, compte les voisins dans la tolérance tanières (ii) = somme ((x - x (ii)).^2 + (y - y (ii)) .^2
Il devient correct en changeant tol à 100 @EBH –