How to find the non-zero minimum of a subset of matrix elements

S
Savannah · Jul 29, 2020 · 1.9K views
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
Profile picture of Prashant Kumar
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

Get a Free Consultation or a Sample Assignment Review!