Imaginary Number Notation/ Formatting Real and Complex Results
15 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Kyle McLaughlin
le 19 Oct 2020
Réponse apportée : Walter Roberson
le 19 Oct 2020
Hello,
I am performing an eigenvalue calculation for a range of 10 numbers. One of these numbers are negative which results in a complex eigenvalue but the remainder are real numbers. I want to display these to the screen as results, however, when I do this the notation for the real values solutions occur as, for example, "3.464+0i" when it should just be "3.464". My 9th element in the calculation appears as how I want it "0+6.0598e-09i" and I would like to keep it this way. Is there a solution to this or do I just have to deal with the formatting?
Thanks,
Kyle
0 commentaires
Réponse acceptée
Walter Roberson
le 19 Oct 2020
An exact 0 imaginary part shows up as +0i if it is being displayed as part of a matrix of values in which some are not complex, but is dropped if all of the values being displayed are real-valued.
>> A=[3+0i,4+1i]
A =
3.0000 + 0.0000i 4.0000 + 1.0000i
>> A(1), A(2)
ans =
3
ans =
4.0000 + 1.0000i
There is no control over this for automatic display. There are also no sprintf() or fprintf() or compose() format specifiers that display complex values.
You can do things like
Afmt = arrayfun(@num2str, A, 'uniform', 0);
which will get out a cell array of character vectors, which you could then arrange for output, such as by using
fmt = [repmat('%20s ', 1, size(A,2)-1), '%20s\n']; %adjust the 20 to suit
Afmttranspose = Afmt.';
fprintf(fmt, Afmttranspose{:})
0 commentaires
Plus de réponses (1)
madhan ravi
le 19 Oct 2020
Modifié(e) : madhan ravi
le 19 Oct 2020
The imaginary part might not be exactly zero.
vpa(Answer)
2 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!