Logical statement applicable to entire matrix
Show older comments
Hi all,
I'm running an iterative code which solves for a value Cd from an initial guess, Cd_org. Currently, I have the code running, but it stops after one iteration because a few of my 27832 data points are within the required tolerance. Is there some way to ensure that every value of my delta_Cd matrix falls within the tolerance?
Cd_org = ones(length(t),1);
tolerance = 0.00001;
delta_Cd = 0;
while delta_Cd < tolerance
for n = 1:length(t)
.
.
.
% Establishes variable Cd, calculates new Cd using Cd_org.
.
.
.
end
delta_Cd = Cd - Cd_org;
Cd_org = Cd;
end
Thanks, Aisha
Answers (2)
Honglei Chen
on 29 Jun 2017
You can try
while all(delta_Cd(:) < tolerance)
HTH
2 Comments
Aisha McKee
on 29 Jun 2017
Honglei Chen
on 29 Jun 2017
Edited: Honglei Chen
on 29 Jun 2017
Looks like the original condition is problematic, as it says do it while the error is within the tolerance. Probably should be
while any(delta_Cd(:) > tolerance)
as Walter mentioned below
HTH
Walter Roberson
on 29 Jun 2017
Cd_org = ones(length(t),1);
tolerance = 0.00001;
delta_Cd = inf;
while any(delta_Cd > tolerance)
for n = 1:length(t)
.
.
.
% Establishes variable Cd, calculates new Cd using Cd_org.
.
.
.
end
delta_Cd = Cd - Cd_org;
Cd_org = Cd;
end
2 Comments
Aisha McKee
on 29 Jun 2017
Walter Roberson
on 29 Jun 2017
Do you use delta_Cd in your calculations? If so then initialize it to something like tolerance*2 instead of inf.
If you do not... remember that there are calculations where it is not possible to have all the outputs simultaneously less than the tolerance.
Also I would recommend modifying to
while any(abs(delta_Cd) > tolerance)
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!