2014-01-07 31 views
1

我在matlab中遇到了問題。我想繪製一個有5個圖的圖。讓我通過他們。每個數據的x軸爲1:500。將變量標記位置應用於matlab圖

對於圖1至圖3,我想在每10個值之後放置標記,而對於圖4至5,我希望在每5個值之後放置標記。可以做到嗎?

我也跟着代碼是這樣的:

figure, 
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure. 
set(gcf,'Color','white'); 
plot(ObjVal1(1:10:end),'*r','LineWidth',3); 
hold on; 
plot(ObjVal2(1:10:end),'-.b','LineWidth',3); 
plot(ObjVal3(1:10:end),'+-k','LineWidth',3); 
plot(ObjVal4(1:5:end),'sm','LineWidth',3); 
plot(ObjVal5(1:5:end),'.b','LineWidth',3); 
hold off; 
title({'Fitness Value'},'FontWeight','bold','FontSize', 12,'Color','black'); 
xlabel('Fitness Value --->','FontWeight','bold','FontSize', 12,'Color','black'); 
ylabel('Iterations --->','FontWeight','bold','FontSize', 12,'Color','black'); 
legend('CV GDS','CV Momentum','CV Exct LS','CV Back Track','CV Conjugate GDS'); 

然後我得到的輸出是這樣的:

enter image description here

問題從圖片中是相當明顯的。由於子圖是每10次迭代得到的,所以給出1-3的曲線圖,而對於每5次迭代得到的子曲線圖給出第四和第五曲線圖的100個值。我不想這樣做。基本上我想要所有值的圖,但標記放置在圖1-3的每10次迭代中,並且在圖4-5的每次迭代中放置標記。

非常感謝大家的幫助!

回答

1

使用第一個參數plot指定標記的x軸的位置:

plot(1:10:numel(ObjVal3), ObjVal3(1:10:end),'+-k', 'LineWidth', 3); 
plot(1:5:numel(ObjVal4), ObjVal4(1:5:end), 'sm', 'LineWidth', 3) 
+0

謝謝你很多。真的行。但是,您能否向我解釋一下代碼片段! – roni

+0

關於你的代碼,我唯一改變了的地方是我已經在'plot'中包含了第一個參數(在第一種情況下是'1:10:numel(ObjVal3)')。該參數指定標記的x軸位置(在這種情況下:1,11,21,...)。在您的原始代碼中,您沒有指定該參數,這會導致Matlab始終使用1,2,3 ...作爲x軸位置 –

+1

感謝您的清晰解釋 – roni