修改 autoArrangeFigures(来自 Matlab File Exchange)以将不同的图发送到不同的监视器
Modify autoArrangeFigures (from Matlab File Exchange) to send different plots to different monitors
正在使用
autoArrangeFigures(0,0,2); % (0,0,x) where x is monitor ID
可以选择放置所有图形的位置。但是,我想控制哪些数字进入哪个监视器。
MWE 尝试:
close all; clear all; clc
% make 10 figures
for i=1:10
figure()
end
autoArrangeFigures(0,0,2); % (0,0,x) where x is monitor ID
pause(2)
% make 10 figures
for i=1:10
figure()
end
autoArrangeFigures(0,0,1); % (0,0,x) where x is monitor ID
这只会将所有 20 个数字重定向到新的监视器位置。它不会保留显示器 2 中第一次调用 autoArrangeFigures(0,0,2) 时的 10 个图形位置,而是通过 autoArrangeFigures(0,0,1).[=13= 将所有 10+10 个图形重定向到显示器 1 ]
如何解决这个问题?
autoArrangeFigures 可在以下位置找到:
https://se.mathworks.com/matlabcentral/fileexchange/48480-automatically-arrange-figure-windows
您可以做的一件事是修改 autoArrangeFigures
函数以采用额外的(可选)参数 figHandles
。
将第一行修改为:
function autoArrangeFigures(NH, NW, monitor_id, figHandle)
要使此参数可选,您可以更改第 39 行
figHandle = sortFigureHandles(findobj('Type','figure'));
进入
if ~exist('figHandle', 'var') || isempty(figHandle)
figHandle = sortFigureHandles(findobj('Type','figure'));
else
figHandle = figHandle(:); % make row vector
end
那么你的 MWE 看起来像:
clear fig
% make 10 figures
for i=1:10
fig(i) = figure();
end
autoArrangeFigures(0,0,2, fig); % (0,0,x) where x is monitor ID
% make 10 figures
for i=1:10
fig(10+i) = figure();
end
autoArrangeFigures(0,0,1,fig(11:20)); % (0,0,x) where x is monitor ID
就我个人而言,我是来自 Matlab FEX 的 distFig
的粉丝,它可以开箱即用。
示例:
for i = 1:20
fig(i) = figure();
end
distFig('screen', 'Secondary', 'only', 1:10) % place only fig 1:10 on the secondary screen
distFig('screen', 'Primary', 'only', 11:20) % place only fig 11:20 on the primary screen
正在使用
autoArrangeFigures(0,0,2); % (0,0,x) where x is monitor ID
可以选择放置所有图形的位置。但是,我想控制哪些数字进入哪个监视器。
MWE 尝试:
close all; clear all; clc
% make 10 figures
for i=1:10
figure()
end
autoArrangeFigures(0,0,2); % (0,0,x) where x is monitor ID
pause(2)
% make 10 figures
for i=1:10
figure()
end
autoArrangeFigures(0,0,1); % (0,0,x) where x is monitor ID
这只会将所有 20 个数字重定向到新的监视器位置。它不会保留显示器 2 中第一次调用 autoArrangeFigures(0,0,2) 时的 10 个图形位置,而是通过 autoArrangeFigures(0,0,1).[=13= 将所有 10+10 个图形重定向到显示器 1 ]
如何解决这个问题?
autoArrangeFigures 可在以下位置找到:
https://se.mathworks.com/matlabcentral/fileexchange/48480-automatically-arrange-figure-windows
您可以做的一件事是修改 autoArrangeFigures
函数以采用额外的(可选)参数 figHandles
。
将第一行修改为:
function autoArrangeFigures(NH, NW, monitor_id, figHandle)
要使此参数可选,您可以更改第 39 行
figHandle = sortFigureHandles(findobj('Type','figure'));
进入
if ~exist('figHandle', 'var') || isempty(figHandle)
figHandle = sortFigureHandles(findobj('Type','figure'));
else
figHandle = figHandle(:); % make row vector
end
那么你的 MWE 看起来像:
clear fig
% make 10 figures
for i=1:10
fig(i) = figure();
end
autoArrangeFigures(0,0,2, fig); % (0,0,x) where x is monitor ID
% make 10 figures
for i=1:10
fig(10+i) = figure();
end
autoArrangeFigures(0,0,1,fig(11:20)); % (0,0,x) where x is monitor ID
就我个人而言,我是来自 Matlab FEX 的 distFig
的粉丝,它可以开箱即用。
示例:
for i = 1:20
fig(i) = figure();
end
distFig('screen', 'Secondary', 'only', 1:10) % place only fig 1:10 on the secondary screen
distFig('screen', 'Primary', 'only', 11:20) % place only fig 11:20 on the primary screen