Getting lowest postive number in array with it's index

4 views (last 30 days)
Hi,
I am trying to get lowest postive number from array , and it's index,
I got the correct lowest postive number but due to introducing of greater than sign >, the indicies numbering changed, can anyone tell me how could I obtain lowest postive number with keeping and getting correct index...
I attach the code below... (Please remember it's a part from a code, and i need to get the values as written below)
clearvars;
clc;
S=[-6.3e7 -0.0001e7 inf;5.2545 -.2996e7 inf];
[m,idx]=min(S(S(:)>0)); % THE RESULT IS CORRECT BUT INDEX IS WRONG ... INDEX SHOULD BE 2
% I UNDERSTAND NOW THE INDEX IS CHANGED AS I INTRODUCED >0 BUT I WOULD LIKE TO GET THE INDEX FROM S(:) NORMAL

Accepted Answer

Stephan
Stephan on 21 Mar 2021
Edited: Stephan on 21 Mar 2021
S=[-6.3e7 -0.0001e7 inf;5.2545 -.2996e7 inf]
m_idx = [min(S(S>0)), find(S==min(S(S>0)))]
  2 Comments
Mark Sc
Mark Sc on 21 Mar 2021
Thanks for your answer...
It works, however, I need to have the output as two separate varaibales,
any suggestions??
I would use
min_val=m_idx(1);
idx=m_idx(2)
but if you have a direct way to obtain such thing, please share
but anyway.. thank you so much
Stephan
Stephan on 21 Mar 2021
S=[-6.3e7 -0.0001e7 inf;5.2545 -.2996e7 inf]
[m, idx] = myFun(S)
function [m, idx] = myFun(S)
m = min(S(S>0));
idx = find(S==min(S(S>0)));
end

Sign in to comment.

More Answers (0)

Categories

Find more on Matrices and Arrays 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!