2012-09-16 36 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;