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);

 Akzeptierte Antwort

Kirby Fears
Kirby Fears am 23 Dez. 2015
Bearbeitet: Kirby Fears am 23 Dez. 2015

1 Stimme

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 Kommentare

Nick Papanikolaou
Nick Papanikolaou am 23 Dez. 2015
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 am 24 Dez. 2015
Bearbeitet: Kirby Fears am 24 Dez. 2015
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 am 24 Dez. 2015
Bearbeitet: Kirby Fears am 24 Dez. 2015
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 am 11 Mär. 2020

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by