why the loop is giving repeated array
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Offroad Jeep
am 4 Feb. 2016
Bearbeitet: Stephen23
am 5 Feb. 2016
Attach please find the code . it is repeatedly giving the value where i only want one time random dtheta and it should not repeat the value for 25 times... Thanks
1 Kommentar
Akzeptierte Antwort
Guillaume
am 4 Feb. 2016
First problem,
%...
B = 2;
%...
for i = 1:length(B)
length(B) is 1, the i loop is therefore only executed once.
2nd problem,
theta = 0
theta_initial = ones(nrows) * theta
theta is initialised as scalar, theta_initial as vector. Later,:
%...
theta_inital = theta;
theta_initial goes from being a vector to being a scalar. I'm fairly certain that's not the intention.
3rd problem,
%...
for i = ...
for j = ...
theta_new = theta + dtheta(j);
%bunch of code that only modifies thetha_initial and zeeman_old
%none of it depends on i
end
After the j loop, you have in effect
theta_new = theta + dtheta(100)
regardless of what happens in the loop. Hence the loop is not needed. This is followed by
magnetization_new(i) = magnetization * cosd(theta_new);
So, in effect
magnetization_new(i) = magnetization * cosd(theta + dtheta(100));
for all i.
Reread your code, and if it is not enough for you to spot the mistake step through it using the debugger.
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!