find the non zero minimum and return the index

42 次查看(过去 30 天)
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.

采纳的回答

Star Strider
Star Strider 2016-10-21
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

更多回答(2 个)

Image Analyst
Image Analyst 2016-10-21
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 2016-10-21
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.

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by