Superscripts and subscripts in fprintf

Is it possible to display text with subscripts using fprintf in R2016a ? I would like to change Nmax.
fprintf('\nMaximum value of N is Nmax = 2\n');
Maximum value of N is Nmax = 2

回答 (3 件)

Abhas
Abhas 2024 年 12 月 30 日

1 投票

In MATLAB R2016a, "fprintf" does not support displaying text with subscripts directly because it outputs plain text, and subscripts are a feature of formatted text (like LaTeX or rich text). However, there are workarounds to display subscripts depending on the output medium:
  • If you need to display subscripts in a figure, you can use text or annotation with TeX or LaTeX formatting, which supports subscripts:
figure;
text(0.1, 0.5, 'Maximum value of N is N_{max} = 2', 'Interpreter', 'tex');
fprintf('y\x2098')
yₘ
I hope this helps!

4 件のコメント

Left Terry
Left Terry 2024 年 12 月 30 日
It doesn't work.
Abhas
Abhas 2024 年 12 月 30 日
"Nₘₐₓ" in MATLAB can't be directly written using "fprintf", I just gave the workaround for few subscripts and superscripts that you can use.
Left Terry
Left Terry 2024 年 12 月 30 日
I meant that even this does not work:
fprintf('y\x2098')
yₘ
Matt J
Matt J 2024 年 12 月 30 日
編集済み: Matt J 2024 年 12 月 30 日
It doesn't work.
It does in LiveScript or other rich text environments:
myfprintf('Maximum value of N is N_{max} = 2')
myfprintf('Minimum value of N is N_{min} = 1')
function myfprintf(str)
hF=figure;hAx=gca;
imagesc(nan(10,500),'AlphaData',0); axis image; axis off;
Ht=text(250,5,str,'Interpreter','tex','Horiz','right');
hF.InnerPosition(end)=hAx.OuterPosition(end)*30;
end

サインインしてコメントする。

Adam Danz
Adam Danz 2024 年 12 月 30 日

0 投票

Not all letters have unicode subscripts but m, a, and x do, so you're in luck.
x = 2;
fprintf(1,'Maximum value of N is N%c%c%c=%.0f\n',[8344 8336 8339 x]);
Maximum value of N is Nₘₐₓ=2
More info
  • webnots page that lists unicodes for super- and subscript letters
  • subscript generator - to get the numeric unicode values, copy the results in matlab and run double('<results>')

5 件のコメント

Left Terry
Left Terry 2024 年 12 月 30 日
This doesn't work either. I will use Nmax as i did at first. Thanks you all for your help!
Image Analyst
Image Analyst 2024 年 12 月 31 日
It looks like it worked to me. I can see it right above. The max is smaller, just as a subscript should look. Why do you say it didn't work?
OK, let me try it myself:
Nmax = 2;
fprintf(1,'Maximum value of N is N%c%c%c=%.0f\n',[8344, 8336, 8339, Nmax]);
Maximum value of N is Nₘₐₓ=2
Looks good to me. Can you post a screenshot of it not working for you? Note if you're fprinting to a plain text file, it may not appear right (I didn't try it), but for the command line, it looks fine.
Stephen23
Stephen23 2024 年 12 月 31 日
編集済み: Stephen23 2024 年 12 月 31 日
"It looks like it worked to me. I can see it right above. The max is smaller, just as a subscript should look. Why do you say it didn't work?"|
It does not work in R2016a, which the OP explicitly stated that they are using:
If I recall correctly, it was only around R2018 or R2019 that MATLAB's default MONOSPACED font started to display Unicode characters (more) reliably.
Walter Roberson
Walter Roberson 2024 年 12 月 31 日

Ah, that would be a matter of setting the command window font to one that supports unicode.

Left Terry
Left Terry 2024 年 12 月 31 日
@Image Analyst When i use it i see boxes istead of subscripts like in the image posted above.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

製品

リリース

R2016a

質問済み:

2024 年 12 月 30 日

編集済み:

2024 年 12 月 31 日

Community Treasure Hunt

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

Start Hunting!

Translated by