Angenommen, ich habe eine Situation wie folgt:MATLAB: Streudiagramm von dem jeder Punkt eine eigene Farbe hat
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);
Für i = 1, ..., n
und j = 1, ...,n
, ich möchte die Punkte plotten (X(i),Y(j))
ist, wo die RBG Farbe für (X(i),Y(j))
ist randcolor(colorcode(i,j),:)
. Ich habe versucht, dies die dumme Art und Weise zu tun: zuerst
figure; hold on;
dann tun 2 verschachtelten Schleifen deklarieren, n Schritten jeweils, und verwenden Sie plot
einen einzigen Punkt nxn mal zu zeichnen:
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
Diese technisch funktioniert, aber Es war langsam und MATLAB verschlang mein gesamtes Gedächtnis, wenn n erhöht wurde. Was ist ein besserer Weg, dies bitte zu tun?
p.s. In meinem aktuellen Problem ist colorcode
nicht wirklich nach dem Zufallsprinzip zugewiesen. Es wird vielmehr basierend auf einem Divergenzkriterium für einen gefüllten Julia-Satz zugewiesen.
Danke. Ich musste deine Antwort ein wenig mit Meshgrid für meinen Zweck ändern, aber der Vorschlag der Streuung ist richtig. – yurnero