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 日
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 ExchangeDevelop Apps Using App Designer についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by