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

12 ビュー (過去 30 日間)
AA
AA 2014 年 12 月 24 日
コメント済み: AA 2014 年 12 月 24 日
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

採用された回答

Guillaume
Guillaume 2014 年 12 月 24 日
編集済み: Guillaume 2014 年 12 月 24 日
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 件のコメント
AA
AA 2014 年 12 月 24 日
or just that line mn1 = cellfun(@(x) min(x(x>mn)),A,'Un',0);

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSoftware Development Tools についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by