2016-05-19 64 views
0

假設我有一個情況如下:MATLAB:從每個點都有自己的顏色散點圖

clc; clear; 
n = 1001; 
m = 1000; 
X  = linspace(0,1,n); 
Y  = linspace(0,1,n); 
randcolor = rand(m,3); 
colorcode = randi(m,m,m); 

對於i = 1, ..., nj = 1, ...,n,我想積點(X(i),Y(j))的其中RBG顏色(X(i),Y(j))randcolor(colorcode(i,j),:)。我試圖做這愚蠢的方式:首先聲明

figure; hold on; 

然後做2個嵌套循環,n步每個,並使用plot繪製一個點爲n×n次:

for i = 1:n 
    for j = 1:n 
     plot(X(i),Y(j),'Marker','o',... 
      'MarkerEdgeColor',randcolor(colorcode(i,j),:),... 
      'MarkerFaceColor',randcolor(colorcode(i,j),:)); 
    end 
end 

這種技術上的工作,但速度很慢,當n增加時,MATLAB耗盡了我所有的記憶。請問有什麼更好的方法可以做到這一點?

p.s.在我的實際問題中,colorcode實際上沒有隨機分配。相反,它是基於一個充滿Julia集合的分歧標準分配的。

回答

1

您想使用scatter而不是plot它允許您分別指定每個點的大小和顏色。

colors = rand(numel(X), 3); 
S = scatter(X, Y, 100, colors); 
+0

謝謝。爲了我的目的,我需要用meshgrid修改你的答案,但是分散的建議是正確的。 – yurnero