2011-10-01 18 views
9

我需要繪製並保存到MATLAB中的圖像文件。下面是我在裏面叫「for」循環代碼:在MATLAB中繪製並保存爲文件

figure 
scatter(data_x_pos,data_y_pos,'r*') 
hold on 
scatter(data_x_neg,data_y_neg,'b') 
t = linspace(-80,80); 
y = -model.w(1)*t/model.w(2); 
plot(t,y,'k'); 
% need to save this plot to image to a file here 

現在,這是我使用了一些工作啓動代碼,我不完全理解它(例如 - 命令「圖「)。有建議使用saveasprint但我相信我需要他們的句柄。有人可以幫我在這裏嗎?

謝謝。

回答

14

figure()是返回的句柄圖形功能:

f = figure() 
scatter(data_x_pos,data_y_pos,'r*') 
... 

然後,您可以使用該句柄來保存這個數字:

saveas(f, 'image.png'); 

看看在tutorials on Handle Graphics瞭解更多。

scatterplot還返回句柄集合的點或線或任何他們已經繪製。

+0

是的。謝謝。我也是自己想出來的。 gcf返回本圖的句柄。所以,那也行得通! – Navneet

+0

比'saveas'好,應該是'options.Format = format; hgexport(f,'image.png',options);'。這樣,導出的數字看起來就像它在屏幕上的樣子。 –

4

另一個可能有助於解決問題的方法是利用Matlab每次創建圖形時更新名爲「獲取當前圖形手柄」的變量的事實。即使句柄不是用f = figure();句柄聲明命令明確創建的,也可以通過調用gcf句柄變量來使用諸如print()saveas()之類的命令。例如,對於沒有OP要求在具有唯一標識的數字的大環路for循環內操作的其他人,該塊代碼也可以起作用:

scatter(data_x_pos,data_y_pos,'r*') 
hold on 
scatter(data_x_neg,data_y_neg,'b') 
t = linspace(-80,80); 
y = -model.w(1)*t/model.w(2); 
plot(t,y,'k'); 
hold off; 
saveas(gcf,'filename','png')