Logical statement applicable to entire matrix
古いコメントを表示
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
回答 (2 件)
Honglei Chen
2017 年 6 月 29 日
You can try
while all(delta_Cd(:) < tolerance)
HTH
2 件のコメント
Aisha McKee
2017 年 6 月 29 日
Honglei Chen
2017 年 6 月 29 日
編集済み: Honglei Chen
2017 年 6 月 29 日
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
2017 年 6 月 29 日
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 件のコメント
Aisha McKee
2017 年 6 月 29 日
Walter Roberson
2017 年 6 月 29 日
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)
カテゴリ
ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!