MATLAB: PaperSize In Normalized PaperUnits

matlab papersize paperunits

Hello.
I am attempting to dynamically set the paper size based on the size of the data I have in a matrix. For example, if I had data that was 512×1024, I would want the paper size to be 1:2 relative to some unit (say an inch). In order to accomplish this generically, I want to use normalized paper units, like so:
>> set(gcf, 'PaperUnits' , 'Inches')
>> get(gcf, 'PaperSize')
ans =
8.5000 11.0000
>> set(gcf, 'PaperSize', [1, 1])
>> get(gcf, 'PaperSize')
ans =
1 1
>> set(gcf, 'PaperUnits', 'Normalized')
>> set(gcf, 'PaperSize', [0.5, 1])
>> set(gcf, 'PaperUnits', 'Inches')
>> get(gcf, 'PaperSize')
ans =
10.0000 11.2500
If I correctly understand how normalized paper units work, why in the end isn't the size set to 0.5:1 inch?
Thanks for your help.

Best Answer

set(gcf, 'PaperUnits', 'Normalized')
set(gcf, 'PaperSize', [0.5, 1])
get(gcf, 'PaperSize')
The setting of the paper size is ignored. In normalized units the paper size is always [1, 1]. I don't know how MATLAB converts from normalized to inches for the paper size.
Why not just do:
set(gcf, 'PaperUnits', 'Inches')
set(gcf, 'PaperSize', [0.5, 1]*InchesPerUnit)
get(gcf, 'PaperSize')
with InchesPerUnit being the conversion from normalized paper to inches.
Related Question