hi,
The simple code below try to find the min value and its index, excluding 0
x = [0 0.5 4 5];
[r,index] = min(x(x>0))
The min value is correctly founded as 0.5. However, why the index returns as 1, it suppose to return 2
r =
0.5000
index =
1
Please help to solve. TQVM

댓글 수: 2

Without changing any data values:
x = [0,0.5,4,5];
idx = find(x);
[val,idy] = min(x(idx));
val
val = 0.5000
idx(idy)
ans = 2
Khairul Nur
Khairul Nur 2021년 7월 22일
tq stephen for the code, really appreciate that!

댓글을 달려면 로그인하십시오.

 채택된 답변

Bjorn Gustavsson
Bjorn Gustavsson 2021년 7월 9일

0 개 추천

It returns 1 for the index because the way you call min, x(x>0) becomes the array [0.5 4 5], and the first element of that array is the smallest.
HTH

댓글 수: 3

Khairul Nur
Khairul Nur 2021년 7월 9일
understood, there is any way still excluding the zero but to get the index as 2?
I'm not sure if there's a one-liner, but this will work:
x = [0 0.5 4 5];
x(x==0) = realmax;
[~, idx] = min(x)
idx = 2
Khairul Nur
Khairul Nur 2021년 7월 12일
tq scott ur the best!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Viranch Patel
Viranch Patel 2021년 7월 9일

1 개 추천

So if you write y = x(x>0), then it will take value only which is greater than 0 from the x and put it into y.
x = [0 0.5 4 5];
y = x(x>0);
[r,index] = min(x(x>0));
So y will be equal to [0.5000 4.0000 5.0000].
Now if you find minimum then the index will be 1 not 2.
I hope you get the answer:)

댓글 수: 3

Khairul Nur
Khairul Nur 2021년 7월 9일
understood, there is any way still excluding the zero but to get the index as 2?
If I'm guessing correct, you want to get the index of the lowest positive value. Then you can do this using a single for loop in which you can have two variables, one will store the minimum value and one will store the index.
index = 0;
x = [0 0.5 4 5];
min_value = max(x);
len = length(x);
for i = 1:len
if x(i) < min_value && x(i) > 0
min_value = x(i);
index = i;
end
end
This is quite straight-forward. So you can edit this according to your need.
Khairul Nur
Khairul Nur 2021년 7월 12일
tq viranch.. great! its working

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

질문:

2021년 7월 9일

댓글:

2021년 7월 22일

Community Treasure Hunt

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

Start Hunting!

Translated by