The ability to use 'normalized' units in this manner to position a figure on only one of multiple monitors is not supported.
In some cases, the 'ScreenSize' property of the root object returns the summed width or height dimensions of the monitors. It is in these cases that the figure window may span the monitors, when created with the 'normalized' units.
One possible workaround is to get the coordinates of the screen where you want the figure window to be displayed, by using the undocumented 'MonitorPositions' property of the root object, which can be accessed with:
get(0,'MonitorPositions');
Then you can position the figure using 'pixel' units instead of 'normalized'.
For example, executing the following:
f = figure('units','normalized','position',[0 0 1 1]);
get(0,'MonitorPositions');
returns:
1 22 1024 746
1025 0 1024 768
To position the figure window on the active monitor, use the following command:
set(f,'units','pixels','position',[1 22 1024 746]);
To position the figure window on the secondary monitor, use the following command:
set(f,'units','pixels','position',[1025 0 1024 768]);
Best Answer