Cell Array min excluding zero

2 vues (au cours des 30 derniers jours)
Asher Metzger
Asher Metzger le 28 Déc 2015
Commenté : Asher Metzger le 30 Déc 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 commentaires
Asher Metzger
Asher Metzger le 28 Déc 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 le 28 Déc 2015
in you example I would like to get -2 for the minimum and 3 for the cell number

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 28 Déc 2015
Modifié(e) : Jan le 28 Déc 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)
  1 commentaire
Asher Metzger
Asher Metzger le 30 Déc 2015
Thanks. very elegant and instructive.

Connectez-vous pour commenter.

Plus de réponses (1)

harjeet singh
harjeet singh le 28 Déc 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)))

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by