PaperSize In Normalized 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 512x1024, 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.

 采纳的回答

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.

1 个评论

That workaround that appears to do the trick, though I still don't understand why the paper size would get set to 10 x 11.25 after changing it in normalized units.
Thanks for your help.

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by