MATLAB Answers

extracting values above 0 in an array and putting them in a new array

2 views (last 30 days)
how can i get a 1x5 array by taking values of non-zero? (e.g. taking the first column and taking the first minimum value greater than zero)?

  1 Comment

Walter Roberson
Walter Roberson on 3 Jul 2020
Question: for column 4, should the output be 1.6807 as the "first" mininum value that is greater than 0? Or should it be 1.6054 because that is the minimum non-zero value in the row? Or should it be 3.8141 because that is the first non-zero value after the 0 ?

Sign in to comment.

Accepted Answer

dipak nigam
dipak nigam on 3 Jul 2020
Hey, you can use the below piece of code for your desired functionality.
a(a<=0)=inf;
minArray = min(a);
If you want to keep the original array unchanged first assign it to a temporary variable and use it to extract the result.

  2 Comments

Walter Roberson
Walter Roberson on 3 Jul 2020
You are incorrect, Hatim
data = [
0 0.0754 0.2159 1.6807 2.6856
0.0754 0 0.2911 1.6054 2.7275
0.2159 0.2911 0 1.8965 2.5913
1.6807 1.6054 1.8964 0 3.8141
2.6856 2.7275 2.5913 3.8141 0
];
a = data;
a(a<=0) = inf;
minArray = min(a);
disp(minArray)
0.0754 0.0754 0.2159 1.6054 2.5913
No zeros returned at all.
dipak's solution is correct.

Sign in to comment.

More Answers (1)

madhan ravi
madhan ravi on 3 Jul 2020
matrix(matrix <= 0) = inf;
Wanted = min(matrix)

  6 Comments

Show 3 older comments
madhan ravi
madhan ravi on 3 Jul 2020
Hatim you need to accept dipak’s answer because he was first before me. I was typing the answer in my phone so didn’t realise there was an answer already.

Sign in to comment.

Tags

No tags entered yet.

Products


Release

R2020a

Translated by