Cell Array min excluding zero

4 ビュー (過去 30 日間)
Asher Metzger
Asher Metzger 2015 年 12 月 28 日
コメント済み: Asher Metzger 2015 年 12 月 30 日
Hi, I want to find a min value that is not 0 from a cell array that has different number of elements in it:
cost = [1*11 double]; [1*12 double]; [1*7 double] and so on
at the moment I am finding the min like this:
[M,I] = min([cost_hist{:}]);
and I tried different variations with ~= 0 with no success. The index is also important.
Thanks in advance, Asher
  5 件のコメント
Asher Metzger
Asher Metzger 2015 年 12 月 28 日
and if there is a simple way I would also like to find the cell index the minimum number is in
Asher Metzger
Asher Metzger 2015 年 12 月 28 日
in you example I would like to get -2 for the minimum and 3 for the cell number

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

採用された回答

Jan
Jan 2015 年 12 月 28 日
編集済み: Jan 2015 年 12 月 28 日
C = {[0 10 0 2 4] [4 3 8] [0 5 -2 15] [2 6]};
minValue = Inf;
minIndex = 0;
for k = 1:numel(C)
Elements = C{k}(C{k} ~= 0);
aMin = min(Elements);
if aMin < minValue
minValue = aMin;
minIndex = k;
end
end
disp(minValue)
disp(minIndex)
  1 件のコメント
Asher Metzger
Asher Metzger 2015 年 12 月 30 日
Thanks. very elegant and instructive.

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

その他の回答 (1 件)

harjeet singh
harjeet singh 2015 年 12 月 28 日
you may try this
r=0;
c=0;
min_num=inf;
for i=1:size(cost,1)
for j=1:size(cost,2)
a=cost{i,j};
if(min(a(:))<min_num)
min_num=min(a(:));
r=i;
c=j;
end
end
end
display(strcat('position r:',num2str(r),'position c:',num2str(c)));
display(strcat('min number:',num2str(min_num)))

カテゴリ

Help Center および File ExchangeConstruction についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by