Cell Array min excluding zero

1 Ansicht (letzte 30 Tage)
Asher Metzger
Asher Metzger am 28 Dez. 2015
Kommentiert: Asher Metzger am 30 Dez. 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 Kommentare
Asher Metzger
Asher Metzger am 28 Dez. 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 am 28 Dez. 2015
in you example I would like to get -2 for the minimum and 3 for the cell number

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 28 Dez. 2015
Bearbeitet: Jan am 28 Dez. 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 Kommentar
Asher Metzger
Asher Metzger am 30 Dez. 2015
Thanks. very elegant and instructive.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

harjeet singh
harjeet singh am 28 Dez. 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)))

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by