2012-09-16 63 views
1

我有一個同時繪製多個數字的MATLAB代碼。實現此目的的一般技巧是致電figure(figHandle),然後致電plot,例如,在背景中繪製多個數字

figure(h1); 
plot(...args...); 
figure(h2); 
plot(...args...); 

不過,我想這樣做繪圖沒有把數字到前臺,每次我做出figure(figHandle)通話。我想要做的就是同時繪製多個數字,而不會將它們顯示出來,並將它們導出到Excel表格(我已經計算出了導出到Excel表格部分)。

問題是有太多數字(大約100),我必須手動關閉它們。我最終想要的是一張出口數字的Excel表格。

謝謝。

回答

4

如果問題是關閉所有數字,您可以使用命令close all

+0

謝謝你的提示,但是因爲我的數據增加了數字的數目很容易超出一百我不知道Windows是否會允許一個程序打開這麼多的數字。 – abhinavkulkarni

+1

你是否需要一次打開它們?你不能只是1)創建一個圖2)導出爲Excel 3)關閉那個圖等? – mola

+0

謝謝,這解決了我的問題! – abhinavkulkarni

3

我同意mola(+1)的解決方案。但是,如果你沒有因爲某些原因希望保留現有的數據導出到Excel後,但不希望他們在屏幕上看到,剛創建時,設置數字爲關閉的Visible屬性:

fig1 = figure('visible', 'off') 

如果你突然決定你需要看它:

set(fig1, 'visible', 'on') 

編輯:這只是發生在我身上,如果你不在乎曾經看到MATLAB中的人物,那麼你絕對應該設置圖形的可見屬性在創建時關閉。這應該會顯着加快代碼的運行時間。例如:

x = (1:100)'; 
tic 
for i = 1:1:10 
    fig1 = figure('visible', 'off'); 
    plot(x); 
end 
close all 
toc 

需要0.27秒到我的機器上運行,但是如果我切換到'off''on',運行時間增加至0.65秒。

0

分配數字處理諸如

fig1 = figure 

運行

close figure1 

當你通過它來關閉如圖一。另外,如果要通過平鋪在一個圖中繪製多個東西,請使用subplot函數。

當我從終端運行Matlab,並且我想要生成一堆圖以保存在html文件中時,我運行了我編寫的函數,將感興趣的腳本作爲參數傳遞,然後簡單地設置它並忘記它它:

function directoryOutput = cliPub(scriptName) 
clc; 
close all; 
fprintf('Publishing...\n\n'); 
directoryOutput = publish(fullfile(pwd, scriptName), 'figureSnapMethod', 'getframe', 'useNewFigure', false); 
close all;