1

我有一个 MATLAB 代码,可以同时绘制多个图形。实现相同目的的一般技巧是调用figure(figHandle)然后调用plot,例如

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

但是,我想在每次调用figure(figHandle). 我要做的就是同时绘制多个图形而不使它们可见,最后将它们导出到 Excel 工作表(我已经想出导出到 Excel 工作表部分)。

问题是数字太多(大约 100 个),我必须手动关闭它们。最后,我想要的只是一张带有导出数据的 Excel 表格。

谢谢。

4

3 回答 3

4

如果问题是关闭所有数字,您可以使用命令close all

于 2012-09-16T19:25:45.293 回答
3

我同意 mola (+1) 的解决方案。但是,如果您出于某种原因希望在导出到 excel 后保持图形可用,但不希望它们在屏幕上可见,只需在创建图形时将图形的 visible 属性设置为 off:

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 秒。

于 2012-09-17T01:54:13.847 回答
0

分配图形句柄,例如

fig1 = figure

close figure1

完成后关闭图1。此外,如果您想通过平铺在一个图形中绘制多个事物,请使用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;
于 2012-12-05T04:46:46.193 回答