2013-03-23 50 views
0

我在Simulink中使用了多路複用器塊Mux(我想在一個圖中繪製多個波形)。模擬後,我需要以定義的形式(背景顏色,線條寬度等)將其導出爲eps/pdf和png文件。用於創建和導出圖的Matlab腳本

實際的問題:

  • 色彩的傳說是不正確的。

我的夢想

  • 開始模擬在Simulink(點擊F5開始)
  • 然後打電話給我自己的函數(腳本)來導出(如 set_and_export(標籤X,標籤傳奇浪潮1,傳奇浪潮2,傳奇浪潮x)

最後的狀態是爲了實現我的夢想。

我的M檔:

% Get the data from Simulink 
% First column is the time signal 
% in Scope in Simulink : Array with time 
[nothing, NumOfSgns] = size(ScopeData) 
time = ScopeData(:,1); 

% Plot all signals 
hold on 
for j=0:NumOfSgns-2, 
    graph=plot(time,ScopeData(:,2+j:end),'Color', rand(1,3)); 

    % Signals description and position of the legend 
    legend('firs wave form','next wave form','Location','SouthEast'); 
end 
hold off 

謝謝。

+0

你的問題到底是什麼? – 2013-03-23 11:46:27

+0

在我的腳本中創建圖形時出現錯誤(在for循環中繪製所有信號)。它運行良好的一個波形(如果不是for循環,我只使用'graph = plot(time,ScopeData(:,2:end)')。 – user1313386 2013-03-23 11:56:39

+0

請嘗試隔離顯示問題的代碼。 /sscce.org。 – 2013-03-23 12:04:47

回答

1

問題在於同時使用了legendhold on:因爲您使用的是hold on,因此在繪製新圖之前,MATLAB不會清除舊圖。但它不存儲legend的以前的地塊信息。您需要手動執行此操作。

下面是一些代碼(未經測試,沒有在目前訪問MATLAB):

titles = {'A', 'B', 'C', 'D'}; 
handles = zeros(1, length(titles)); 
figure; 
hold on; 
for i = 1 : length(titles) 
    handles(i) = plot(1 : 10, rand(1, 10), 'Color', rand(1, 3)); 
end 
legend(handles, titles{:}); 

所以:存儲由plot在矢量返回的句柄,並把它傳遞給legend(您需要在循環之後調用)。

+0

它用圖例繪製了很好的圖形,但是它並沒有顯示軸的標籤在你的代碼中,我添加了xlabel ('xxx','FontSize',15); ylabel('yyy','FontSize',15)並沒有顯示任何想法,哪裏有問題? – user1313386 2013-03-23 20:20:08

+0

@ user1313386:在我的代碼下面添加您的標籤代碼適合我在MATLAB R2012b上,我得到了預期的x軸和y軸標籤 – 2013-03-25 14:31:32

+0

重新啓動我的電腦後,一切正常。非常感謝所有參與討論的人。 – user1313386 2013-03-25 23:50:33