MATLAB Answers

Compacting a For Loop

2 views (last 30 days)
Benedict Comerford
Benedict Comerford on 7 Oct 2020
Commented: Sindar on 7 Oct 2020
Hi all
I would love some help with compacting a for loop, i'm using it to find the smallest error in a matrix is there a way of finding the smallest value of the matrix as well as the name of the variable associated with the smallest value other then printing out a masive for loop.
Thanks Ben.
  2 Comments
Benedict Comerford
Benedict Comerford on 7 Oct 2020
Hi Sindar
Sorry yeah should have said an if statement
Yes there is a strong possibility that 2 will have the same error

Sign in to comment.

Accepted Answer

Sindar
Sindar on 7 Oct 2020
Edited: Sindar on 7 Oct 2020
norm_er = 1.301;
exp_er = 9.126;
log_er = 1.301;
ray_er = 2.606;
Errors = [norm_er,exp_er,log_er,ray_er];
% set a tolerance to define equal error
tol = 1e-3;
% find minimum error
min_error = min(Errors);
% find all methods with this error value
idxs = find((Errors-min_error) < tol);
error_str = ["Normal";"Exponential";"Log";"Rayleigh"];
% print based on how many errors are equal (extends to any number of distributions)
% none? that's not good
if length(idxs)==0
error('something went wrong')
% e.g., Rayleigh distribution is best
elseif length(idxs)=1
fprintf('%s Distribution is best\n',error_str(idxs))
elseif length(idxs)=length(Errors)
fprintf('All Distributions are equally good\n')
% e.g., Log and Rayleigh distributions are best
elseif length(idxs)=2
fprintf('%s and %s Distributions are best\n',error_str(idxs))
% e.g., Log, Exponential, and Rayleigh distributions are best
else
tmp = strjoin(error_str(idxs(1:end-1)),", ") + ", and " + error_str(idxs(end);
fprintf('%s Distributions are best',tmp)
end

More Answers (1)

Benedict Comerford
Benedict Comerford on 7 Oct 2020
Hi Sindar
Thanks so much for that i think that will work just getting an error atm because (val) is undefined
  2 Comments
Sindar
Sindar on 7 Oct 2020
yup, had a typo / holdover from a first draft

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!