Cell Array min excluding zero

2 views (last 30 days)
Asher Metzger
Asher Metzger on 28 Dec 2015
Commented: Asher Metzger on 30 Dec 2015
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 Comments
Asher Metzger
Asher Metzger on 28 Dec 2015
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 on 28 Dec 2015
in you example I would like to get -2 for the minimum and 3 for the cell number

Sign in to comment.

Accepted Answer

Jan
Jan on 28 Dec 2015
Edited: Jan on 28 Dec 2015
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)

More Answers (1)

harjeet singh
harjeet singh on 28 Dec 2015
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)))

Categories

Find more on Dates and Time in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!