2017-06-01 41 views
2

我寫了一段代碼來創建移動點的電影。我使用散射使點成色(點的顏色取決於點的面積密度)。 x和y點的位置,我已經把下面的代碼放在一個for循環傳遞時間:Scatter無法正常工作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); 

當我運行代碼,創建電影,但所有的點是綠色的。誰能猜到是什麼原因以及如何解決它?

+0

第四個參數應該是'double'的3列矩陣,其中每行是一個RGB元組,每個元素都是[0,1]'。這對你的'dens'數組是一樣的嗎? – rayryeng

+0

我嘗試這個,但它沒有改變任何東西:figure(h1); cla dens = zeros(size(x)); (平方) tol = 1; (ii)= sum((x - x(ii))。^ 2 +(y - y(ii))對於ii = 1: 對於ii = 1: 。^ 2

+0

將tol更改爲100 @EBH –

回答

0

您的dens計算取決於xy的值與tol的值之間的關係。如果tol太大,那麼所有點被計爲「在所有其他點的區域內」,如果它太小,則所有點都是「獨自」的。在這兩種情況下,dens對所有點都具有相同的值,並且scatter的顏色都是綠色。