I have a row
X = [441 137 594 507 417 581 312 362 263 151 472 512 129 70 298 255 442 574 289 157 0];
I want to find the second smallest (non zero) element from X along with the column number.

 채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2016년 8월 29일
편집: Azzi Abdelmalek 2016년 8월 29일

5 개 추천

X = [441 137 594 507 417 581 312 362 263 151 472 512 129 70 298 255 442 574 289 157 0];
out=min(setdiff(X,min(X)))
or
M=sort(X)
out=M(2)

댓글 수: 2

Ananya Malik
Ananya Malik 2016년 8월 29일
I also wand the index of the element. i.e the column of occurrence.
X = [441 137 594 507 417 581 312 362 263 151 472 512 129 70 298 255 442 574 289 157 0];
[out,idx]=sort(X)
val=out(2)
index=idx(2)

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

추가 답변 (1개)

Guillaume
Guillaume 2016년 8월 29일

4 개 추천

If by 2nd smallest you mean 2nd smallest distinct value:
A = [1 0 1 2 1 4 2 3];
uA = unique(nonzeros(A)); %does sorting and remove duplicates
small2distinct = uA(2)
If by 2nd smallest you do mean 2nd smallest, so if the minimum is repeated twice, you do want the minimum:
A = [1 0 1 2 1 4 2 3];
sA = sort(nonzeros(A)); %then use plain sort
small2 = sA(2)
So, nonzeros to get all the non zero values, then sort or unique to sort the values, then take the 2nd one.

카테고리

도움말 센터 및 File Exchange에서 Communications Toolbox에 대해 자세히 알아보기

질문:

2016년 8월 29일

댓글:

2016년 8월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by