2016-05-21 141 views
0

我有一個2d矩陣A100 x 100),其中每行包含要繪製的信號。 我想繪製每行不同顏色的同一圖中的所有信號。我怎樣才能輕鬆做到這一點?在matlab中繪製2d矩陣的行

回答

0

如果你實際上看at the documentationplot你會看到如果你傳遞一個矩陣,它將把每一列作爲一個單獨的繪圖對象繪製在同一個軸上。因此,您只需將數據轉置至plot即可。

% Example data 
A = magic(10); 

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

這將使用下一個繪圖顏色繪製每個信號。

enter image description here

如果你想確保你有所有不同的顏色,你可以用一個顏色表(如parula)明確地設置每個小區不同的顏色。

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

enter image description here

更新

如果你想標記您的地塊,你可以簡單地使用legend做到這一點。

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

legend(hplot) 

enter image description here

或者,如果你有太多的情節合理配合的圖例中你可以創建一個交互式的情節,當你將鼠標放置它,突出一個給定用地。這是一個這樣的事例。

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 

而結果

enter image description here

+0

感謝您的回答。如果我想知道情節中的每一行,它代表哪一行(轉置)?這是怎麼回事? – alphonse

+1

@alphonse 100個信號對於一個'legend「來說很難做到。我會快速添加一些內容,讓您點擊一個圖表來顯示它來自哪裏。 – Suever

+0

再次感謝。其實信號的數量不是100,它的大約是15.謝謝,我會很高興你能任何東西 – alphonse