Cell Array min excluding zero

1 visualización (últimos 30 días)
Asher Metzger
Asher Metzger el 28 de Dic. de 2015
Comentada: Asher Metzger el 30 de Dic. de 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 comentarios
Asher Metzger
Asher Metzger el 28 de Dic. de 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 el 28 de Dic. de 2015
in you example I would like to get -2 for the minimum and 3 for the cell number

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 28 de Dic. de 2015
Editada: Jan el 28 de Dic. de 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 comentario
Asher Metzger
Asher Metzger el 30 de Dic. de 2015
Thanks. very elegant and instructive.

Iniciar sesión para comentar.

Más respuestas (1)

harjeet singh
harjeet singh el 28 de Dic. de 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)))

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by