My loop returns imaginary results!

2 visualizzazioni (ultimi 30 giorni)
Maryam S
Maryam S il 30 Mag 2020
Commentato: Maryam S il 30 Mag 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.

Risposta accettata

madhan ravi
madhan ravi il 30 Mag 2020
Modificato: madhan ravi il 30 Mag 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 Commenti
madhan ravi
madhan ravi il 30 Mag 2020
After the loop simply use :
real(A)
Maryam S
Maryam S il 30 Mag 2020
real(A) does not give me zeros. I used A(imag(A)~=0) = 0 and my problem was solved, thanks to you Madhan!

Accedi per commentare.

Più risposte (0)

Tag

Prodotti


Release

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by