我有以下问题:在我的 MATLAB 代码中,我使用如下语句
figure(1)
更改某些数据的目标图。问题是,在此之后 MATLAB 将系统焦点放在带有此图的窗口上。
当我在后台运行一个大脚本并尝试在我的计算机上做其他事情时,MATLAB 总是集中注意力,我无法正常做某事。
有没有办法禁止 MATLAB 这样做?我在 Linux Ubuntu 中工作。
我有以下问题:在我的 MATLAB 代码中,我使用如下语句
figure(1)
更改某些数据的目标图。问题是,在此之后 MATLAB 将系统焦点放在带有此图的窗口上。
当我在后台运行一个大脚本并尝试在我的计算机上做其他事情时,MATLAB 总是集中注意力,我无法正常做某事。
有没有办法禁止 MATLAB 这样做?我在 Linux Ubuntu 中工作。
您可以通过在创建时使图形不可见(不可见)并仅在您想要显示它时使其可见来做到这一点。
例如:
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
文件,它还会保存它不可见的事实,这可能会有点混乱。
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"
在 R2018a 中,引入了图形属性“WindowState”,参见https://blogs.mathworks.com/pick/2018/07/13/maximize-your-figures/
使用这个,你可以做到
set(0, 'DefaultFigureWindowState', 'minimized');
在运行实际脚本之前,这将导致所有“标准绘图”不会窃取焦点并以最小化状态打开。
有些功能仍然会窃取焦点。我没有详细调查,但我相信它主要是自动绘图功能,如 psd、hist 等,没有输出参数。如果你打电话给plot
自己,你应该没问题。