Finding second smallest element in a row.
280 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ananya Malik
il 29 Ago 2016
Commentato: Azzi Abdelmalek
il 29 Ago 2016
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.
0 Commenti
Risposta accettata
Azzi Abdelmalek
il 29 Ago 2016
Modificato: Azzi Abdelmalek
il 29 Ago 2016
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 Commenti
Azzi Abdelmalek
il 29 Ago 2016
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)
Più risposte (1)
Guillaume
il 29 Ago 2016
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.
0 Commenti
Vedere anche
Categorie
Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!