MATLAB: Is it possible to get axis size in px units if it is created in normalized units

axesaxisplotscreenunit

I have the following code: set(gcf,'units','normalized','position',[0 0 1 1]) axes('units','normalized','position',[0 0 1 1]) And I want to know axes in pixels.

Best Answer

set(gcf, 'units', 'normalized', 'position', [0 0 1 1]);
AxesH = axes('units', 'normalized', 'position', [0 0 1 1]);
drawnow; % !!!!!
backUnits = get(AxesH, 'units');
set(AxesH, 'Units', 'pixels')
pixPos = get(AxesH, 'Position');
set(AxesH, 'Units', backUnits);
Without the drawnow I get my full monitor resolution, although Matlab crops the height to display the upper part of the border and the menu bar. What a pity.
A simpler method with a built-in Matlab function:
pixPos = getpixelposition(AxesH)