Filter löschen
Filter löschen

find the non zero minimum and return the index

37 Ansichten (letzte 30 Tage)
yu yue
yu yue am 21 Okt. 2016
Beantwortet: Star Strider am 21 Okt. 2016
I have a matrix
x = [12 10 0 6]
I need to find the non zero minimum and return the index of this non zero minimum, I have wrote
[A,I]=min(x(x>0))
It return that
A=6; I=3;
How can I get
A=6; I=4
? Thank you.

Akzeptierte Antwort

Star Strider
Star Strider am 21 Okt. 2016
If you want to temporarily change ‘x’, this works:
x = [12 10 0 6];
x(x == 0 ) = NaN;
[A,I] = min(x)
A =
6
I =
4
You can then change the NaN back to a zero if you want to:
x(isnan(x)) = 0
x =
12 10 0 6

Weitere Antworten (2)

Image Analyst
Image Analyst am 21 Okt. 2016
Try this:
% Setup
rows = 4; % Whatever you want.
columns = 4; % Whatever you want.
sigma1 = .5
m = sigma1*randn(rows, columns)
% Now begin:
% Set negative to inf
m(m<=0) = inf
minValue = min(m(:)) % Find min.
[rowOfMin, colOfMin] = find(m == minValue) % Find row and col of min.

Swarooph
Swarooph am 21 Okt. 2016
One answer could be, set anything 0 or less to NaN and directly use the min function.
x = [12 10 0 6]
x1 = x; %Copy x into x1 if you don't want to lose x1
x1(x<=0) = NaN %Set anything <= 0 to NaN
[A,I]=min(x1) %Find min value and index
Now A = 6 and I = 4.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by