Question
I'm trying to find the non-zero miumum of a subset of elements in a matrix in a similar manner to that of using minimum = min(A(A>0)) As an example, what I have is A = [1 2 3 4; 2 0 1 5; 0 3 2 5; 1 2 1 0]; subsetOfRows = [1 2 4]; column = 2; minimum = min(A(A(subsetOfRows,column)>0)) so I want the non-zero minimum of comumn 2 while just comparing the first, second, and fourth row elements. The answer I'm looking for is 2, but the answer I get is 0. Does anyone know how to implement this? Or is there a better way to go about doing this?
Expert Answer
Prashant Kumar
PhD Expert
Answered Aug 20, 2026
The issue is that logical indexing doesn't work when you are checking against a subset of the matrix:
>> A = [1 2 3 4; 2 0 1 5; 0 3 2 5; 1 2 1 0];
>> subsetOfRows = [1 2 4];
>> column = 2;
>> A(subsetOfRows,column)
ans =
2
0
2
>> A(subsetOfRows,column)>0
ans =
3×1 logical array
1
0
1
>> A(A(subsetOfRows,column)>0)
ans =
1
0
What's happening is that you extract the first, (not second), and third elements of A, instead of pulling out the full index from the subset. There may be some clever trick to do this in one step, but this will get it done in cases where the subset of A is not overly large
A = [1 2 3 4; 2 0 1 5; 0 3 2 5; 1 2 1 0]; subsetOfRows = [1 2 4]; column = 2; tmp = A(subsetOfRows,column); minimum = min(tmp(tmp>0));
100% Run Guarantee
3-Hour Fast-Track Delivery
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here
Related matrix Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →