2017-02-10 7 views
1

Ich bin sehr neu in Matlab. Ich versuche zu plotten X, wo X ist ein 100x1-Vektor, gegen Y, die eine 100 x 10-Matrix ist. Ich möchte, dass das Ergebnis X vs 10 verschiedene Y Werte alle in der gleichen Grafik, verschiedene Farben für jede Spalte sein. Der einzige Weg, wie ich jede Spalte dieser Matrix darstellen kann, ist die Verwendung des Befehls hold, aber dann muss ich es aufteilen, damit ich jede Spalte einzeln erhalte. Gibt es einen einfachen Weg, dies zu tun?MATLAB - Streudiagramm eines Vektors durch eine Matrix?

Antwort

1

Verwenden Sie repmat zum Erweitern X auf die gleiche Größe wie Y. Versuchen Sie, sie mit plot(X,Y) zu plotten und wenn es seltsam aussieht, transponieren Sie jede (plot(X',Y')).

Sie können linespec-Argumente verwenden, um Linienstyle, Markerstil usw. auszuwählen. Beispiel: plot(X,Y,'.') würde einen Punkt an jedem Scheitelpunkt ohne Verbindungslinien angeben.

+0

Ah funktioniert das! Vielen Dank! Warum musst du es mit "repmat" so machen, wenn es so aussieht, als müsste es eine intuitivere Methode dafür geben - es scheint nicht richtig zu sein, dass Streudiagramme nur Vektoren für y nehmen. – rb612

+0

Es funktioniert, weil wenn Sie zwei Matrizen haben, es jede Spalte gegen die andere plottet. Wenn Sie einfach 'plot (X, Y, '.')' Wie es ist ohne repmat verwenden, was passiert? – tmpearce

1

Sie brauchen nicht repmat zu verwenden, benutzen Sie einfach plot statt scatter:

plot(X,Y,'o') 

Hier ist ein Beispiel:

% some arbitrary data: 
X = linspace(-2*pi,2*pi,100).'; % size(X) = 100 1 
Y = bsxfun(@plus,sin(X),rand(100,10)); % size(Y) = 100 10 
% you only need the next line: 
plot(X,Y,'o') 
legend('show') 

scatter_plot

Verwandte Themen