Cell Array min excluding zero

4 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)))

Community Treasure Hunt

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

Start Hunting!