9

我有以下问题:在我的 MATLAB 代码中,我使用如下语句

figure(1)

更改某些数据的目标图。问题是,在此之后 MATLAB 将系统焦点放在带有此图的窗口上。

当我在后台运行一个大脚本并尝试在我的计算机上做其他事情时,MATLAB 总是集中注意力,我无法正常做某事。

有没有办法禁止 MATLAB 这样做?我在 Linux Ubuntu 中工作。

4

4 回答 4

6

丹尼尔伊顿的“聪明”/沉默人物

于 2013-06-28T10:38:43.613 回答
2

您可以通过在创建时使图形不可见(不可见)并仅在您想要显示它时使其可见来做到这一点。

例如:

f = figure('Visible', 'off'); %create an invisible figure
plot(rand(1,15)); %plot some stuff to it.

saveas(f, 'test.png', 'png'); %write out the image as a png
close(f); %destroy the figure

或者: set(f, 'Visible', 'on'); %显示一个以前不可见的图形

请注意,如果将图形保存为 Matlab.fig文件,它还会保存它不可见的事实,这可能会有点混乱。

于 2013-06-28T11:10:42.540 回答
0

This is untested, but based on the link to the smart figure, it looks like all you need to do to make your figure isn't stealing focus is this:

set(0, 'CurrentFigure', h);

And by the way, if you didn't know, the 0 is meaning "root"

于 2013-06-28T15:42:34.703 回答
0

在 R2018a 中,引入了图形属性“WindowState”,参见https://blogs.mathworks.com/pick/2018/07/13/maximize-your-figures/

使用这个,你可以做到

set(0, 'DefaultFigureWindowState', 'minimized');

在运行实际脚本之前,这将导致所有“标准绘图”不会窃取焦点并以最小化状态打开。

有些功能仍然会窃取焦点。我没有详细调查,但我相信它主要是自动绘图功能,如 psd、hist 等,没有输出参数。如果你打电话给plot自己,你应该没问题。

于 2019-06-11T19:09:20.497 回答