MATLAB Answers

Find Minimum based on new criteria

1 view (last 30 days)
mr mo
mr mo on 5 Nov 2017
Commented: Star Strider on 5 Nov 2017
Hi. Suppose I have a matrix A e.g.
A=[
8.2505 4.8825 2.2563 0.0020 0
8.2505 4.8825 2.2687 0.0020 1
8.2505 4.8825 2.2813 0.0020 1
8.2505 4.9325 2.2813 0.0020 0
8.2505 4.9325 2.2938 0.0020 1
8.2755 4.7575 2.2437 0.0020 0
8.2755 4.7575 2.2563 0.0020 0
8.2755 4.7575 2.2687 0.0020 1
8.2755 4.8075 2.2188 0.0020 0
8.2755 4.8075 2.2313 0.0020 0
8.2755 4.8075 2.2437 0.0020 1
8.2755 4.8075 2.2563 0.0010 1
8.2755 4.8075 2.2687 0.0010 1];
I want to find the row that its value in third column is minimum and the value in fifth column is 1; if the value in fifth column is 0, then I want to find the row that has the next minimum value in third column and its value in fifth column is 1. Thanks for your help.

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 5 Nov 2017
This works:
row = (A(:,3) == min(A(A(:,5)==1,3))) & (A(:,5) == 1); % Row Index (Logical Vector)
Result = A(row,:) % Desired Row
If you want the number index of the row, use the find function:
row_index = find(row);

  2 Comments

mr mo
mr mo on 5 Nov 2017
Thank you very much.

Sign in to comment.

More Answers (1)

Kaushik Lakshminarasimhan
Edited: Kaushik Lakshminarasimhan on 5 Nov 2017
minval = min(A(A(:,5)==1,3))
rowindx = find(A(:,3)==minval)

  0 Comments

Sign in to comment.