Effacer les filtres
Effacer les filtres

My loop returns imaginary results!

2 vues (au cours des 30 derniers jours)
Maryam S
Maryam S le 30 Mai 2020
Commenté : Maryam S le 30 Mai 2020
Hello,
I write this simple code in a loop, and I obtain unwabted imaginary results. Could you please tell me where my mistake is:
SO = 0.5 .* ones(10,1);
A(1,:) = 5.02 * (16.6 / 42) ^ 0.33 * SO(1,:) ^ 0.38;
for i = 2 : 10
A(i,:) = 5.02 * ((16.6 - sum(A(1:i-1,:)))/ 42) ^ 0.33 * SO(i,:) ^ 0.38;
end
Thanks in advance
Maryam S.

Réponse acceptée

madhan ravi
madhan ravi le 30 Mai 2020
Modifié(e) : madhan ravi le 30 Mai 2020
Evaluate the part
((16.6 - sum(A(1:i-1,:)))/ 42)
and see what happens when the sum(...) is greater than 16.6
Note: No loop needed here sum(...) could be replaced by cumsum(...) and linear indexing is sufficient, subscript indexing is not needed here since it’s a vector.
  5 commentaires
madhan ravi
madhan ravi le 30 Mai 2020
After the loop simply use :
real(A)
Maryam S
Maryam S le 30 Mai 2020
real(A) does not give me zeros. I used A(imag(A)~=0) = 0 and my problem was solved, thanks to you Madhan!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Produits


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by