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)

Kategorien

Mehr zu Labels and Annotations finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by