Output result's format?

9 views (last 30 days)
I am executing a great-script which has inside it another mini-scripts.
Those scripts execute mathematical operations in order to calculate and show results of differente variables.
The issue is that Matlab do show those results correctly but some of the in this strange format:
How can I solve this problem and achieve Matlab giving me the results in a normal format? I think that this doesn`t happen if I execute those mini-scripts separately and individualy. It only happens when I execute the great-script. I also have tried writing
format short
In the head of each mini-script but seems that this didn't fix the issue.
Thanks!
  1 Comment
Stephen23
Stephen23 on 6 Feb 2021
The variables EVfiT and EVfiT1 are symbolic or character or possibly some custom class... they are certainly not numeric, so the format command is totally irrelevant.

Sign in to comment.

Accepted Answer

John D'Errico
John D'Errico on 5 Feb 2021
These are symbolic expressions you are showing. The format command has NOTHING to do with symbolic expressions. It applies only to numeric values, thus typically double precision numbers.
X = 1 + sqrt(sym('13445664/2424536343636'))
X = 
X
X = 
format short
X
X = 
format rat
X
X = 
As you see, anything I do with format does not touch how we see X.
I cannot replicate what you did, because you show only a picture of your output. (If you really want help, then paste in the actual code, as text.)
But now, if I convert X to a double,
format short
Xd = double(X)
Xd = 1.0024
format rat
Xd
Xd =
1277/1274
format long g
Xd
Xd =
1.00235492336053
Now you see that format works, and it works as designed. I can turn it on and off on a whim. It applies to floating point numbers. The numbers that you show in that picture LOOK like numbers. But format does not understand symbolic expressions. It ignores them.
  9 Comments
ErikJon Pérez Mardaras
ErikJon Pérez Mardaras on 7 Feb 2021
Thanks a lot for your replies and your help, I just have found where was the mistake.
The point is that I had in the first mini-script this command
[numer,deno]=numden(sym(i));
Which calculated numer and deno as symbolic expressions and thus, the rest of the variables calculated along the code, which contains in their expressions numer or deno, are also symbolic expressions and that's why in my results appeared the results as quotients and not as decimal numbers.
I have fixed the issue by converting numer and deno to double expressions just like mate darova said in his comment
numerr=double(numer);
denoo=double(deno);

Sign in to comment.

More Answers (1)

darova
darova on 30 Jan 2021
try double
a = 2;
b = 1/sym(a);
c = b/a
double(c)
  3 Comments
Walter Roberson
Walter Roberson on 6 Feb 2021
"format" is a command, not a local setting for functions or subroutines.
If you had a
disp('hello')
command inside a function, would you expect the output of the function to disappear from the command window when the function returned? NO -- you would recognize that disp() changes state permanently, rather than disp() being a local setting within the function. Just so, "format" changes are permanent until changed.

Sign in to comment.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!