I've found that setting the outerPosition property can be awkward, especially with a taskbar in the mix.
fh = figure('units', 'pixels');
MP = get(0, 'MonitorPositions');
N = size(MP, 1);
newPosition = MP(1,:)
if size(MP, 1) == 1
newPosition(1) = newPosition(1) + MP(N,1);
fh.set('Position', newPosition, 'units', 'normalized');
fh.WindowState = 'maximized';
The newPosition variable just makes sure the figure is first in your desired monitor before you maximize the window. Ideally, you could get the position of your MATLAB editor window and simply index N to be anything but that window so that your figure maximizes in a different one. Haven't figured that out yet.
Not sure if/how this works on non-Windows computers.