2016-05-21 8 views
0

Ich habe eine 2d-Matrix A (100 x 100) wo jede Zeile ein Signal Plot enthält. Ich möchte alle Signale in der gleichen Figur mit unterschiedlicher Farbe für jede Zeile plotten. Wie kann ich das leicht machen?Plot Zeilen einer 2d-Matrix in Matlab

Antwort

0

Wenn Sie tatsächlich sehen at the documentation für plot Sie sehen, dass wenn Sie es eine Matrix übergeben, wird es jede Spalte als separate Plot-Objekt auf den gleichen Achsen plotten. Als solche können Sie einfach die Transponierung Ihrer Daten an plot übergeben.

% Example data 
A = magic(10); 

% Create a plot for each row 
hplot = plot(A.'); 

Dies wird jedes Signal mit der nächsten Diagrammfarbe darstellen.

enter image description here

Wenn Sie sicherstellen möchten, dass Sie alle verschiedene Farben haben, können Sie eine colormap (wie parula) verwenden können, um eine andere Farbe pro Parzelle explizit festgelegt.

set(hplot, {'Color'}, num2cell(parula(size(A, 1)), 2)) 

enter image description here

aktualisieren

Wenn Sie Ihre Diagramme beschriften Sie einfach legend dies zu tun, verwenden könnte.

displaynames = arrayfun(@(x)sprintf('Plot %d', x), 1:size(A, 1), 'uni', 0); 
set(hplot, {'DisplayName'}, displaynames.'); 

legend(hplot) 

enter image description here

Oder wenn Sie zu viele Plots fit in angemessener Weise in einer Legende Sie können ein interaktives Plot erstellen, die eine bestimmte Handlung hervorhebt, wenn Sie es Mouseover. Hier ist ein Beispiel für so etwas.

htitle = title(''); 

set(gcf, 'WindowButtonMotionFcn', @(s,e)motionCallback(hittest(s))) 
motionCallback(hplot(1)); 

function motionCallback(plt) 
    % Don't do anything if not a line object 
    [tf, ind] = ismember(plt, hplot); 

    if ~tf; return; end 

    set(hplot, 'linewidth', 1) 
    set(plt, 'LineWidth', 3) 
    set(htitle, 'String', sprintf('SelectedPlot: %d', ind)) 
    drawnow 
end 

Und das Ergebnis

enter image description here

+0

Danke für die Antwort. Wenn ich für jede Linie in der Handlung wissen möchte, welche Reihe (transponiert) es darstellt? Wie ist das möglich? – alphonse

+1

@alphonse Mit 100 Signalen wird das mit einer "Legende" schwierig. Ich werde etwas sehr schnell hinzufügen, das es Ihnen erlauben würde, auf ein Diagramm zu klicken, um zu zeigen, wo es herkommt. – Suever

+0

Danke nochmal. Eigentlich ist die Anzahl der Signale nicht 100, es ist etwa 15. Danke, ich werde mit allem zufrieden sein, was Sie können – alphonse