How can I display on a plot's Title the input value pi with Greek character "π" or in English "pi". For example: prompt = 'What is the original value? '; x = input(prompt) I insert the value pi/2 So i want the plot title to be like: Output=π/2 I used the following code but it keeps giving me the value 0.707 instead of the π/2 or pi/2 i want.
str = sprintf('Output x=%d',x);
title(str);

 採用された回答

Kirby Fears
Kirby Fears 2015 年 12 月 23 日
編集済み: Kirby Fears 2015 年 12 月 23 日

1 投票

x is a double-precision floating point number. It will be displayed as a decimal by default. You can control how the double is represented (like scientific notation), but there is no built-in ability to display a double in terms of pi multiples. You're specifically trying to represent x in terms of pi/n for the appropriate n value.
Use the '\pi' character to display the symbol for pi. Calculate the value n = pi/x to build the expression "x = pi/n" in the title.
str = sprintf('Output x=%s/%d','\pi',pi/x);
title(str);

4 件のコメント

Nick Papanikolaou
Nick Papanikolaou 2015 年 12 月 23 日
Thank you very much.But it seems it can't display correct the x=3Π/4 value. It gives π/1
Am I doing something wrong?
Kirby Fears
Kirby Fears 2015 年 12 月 24 日
編集済み: Kirby Fears 2015 年 12 月 24 日
Here's another approach using rats() to generate a rational approximation of the fraction of pi:
x = pi * 3/4;
R = strtrim(rats(x/pi));
str = sprintf('Output x=%s*%s','\pi',R);
% plot(...);
title(str);
Kirby Fears
Kirby Fears 2015 年 12 月 24 日
編集済み: Kirby Fears 2015 年 12 月 24 日
To make it look really nice, you'll need a bit of case handling to insert \pi into the proper position.
x = pi * 3/4;
R = strtrim(rats(x/pi));
idxFrac = strfind(R,'/');
if isempty(idxFrac),
if strcmp(R,'0'),
fracStr = '0';
elseif strcmp(R,'1'),
fracStr = '\pi';
elseif strcmp(R,'-1'),
fracStr = '-\pi';
else
fracStr = [R,'\pi'];
end
else
leftStr = R(1:idxFrac-1);
rightStr = R(idxFrac:end);
if strcmp(leftStr,'1'),
fracStr = ['\pi' rightStr];
elseif strcmp(leftStr,'-1'),
fracStr = ['-\pi' rightStr];
else
fracStr = [leftStr '\pi' rightStr];
end
end
titleStr = sprintf('Output x = %s',fracStr);
% plot(...);
title(titleStr);
DEBARSHI MAJUMDER
DEBARSHI MAJUMDER 2020 年 3 月 11 日

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLabels and Annotations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by