finding the second and the third smallest value in a cell array

A = num2cell(reshape(randperm(12)-6,[],2),2);
mn = cellfun(@(x) min(x(x>0)),A,'Un',0);
mn = min([mn{:}]) % Show the minimum positve value.
L = cellfun(@(x) find(x==mn),A,'Un',0);
idx = find(~cellfun('isempty',L),1,'last') % Which cell has the min.
L = L{idx} % And the positions
mn = min([mn{:}]) How can I rewrite this line so I get the second smallest value and third smallest value in that table of mins.
thanks

 Respuesta aceptada

Guillaume
Guillaume el 24 de Dic. de 2014
Editada: Guillaume el 24 de Dic. de 2014
Instead of getting the min, simply sort the array and get the first three elements:
sortedmins = sort(cell2mat(mn)); %or sort([mn{:}]);
firsthreemins = sortedmins(1:3);
If you want these three minimum to be different, then use unique instead of sort.

1 comentario

or just that line mn1 = cellfun(@(x) min(x(x>mn)),A,'Un',0);

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Software Development Tools en Centro de ayuda y File Exchange.

Preguntada:

AA
el 24 de Dic. de 2014

Comentada:

AA
el 24 de Dic. de 2014

Community Treasure Hunt

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

Start Hunting!

Translated by