Qui ho due matrici, una che indica il costo e l'altra determina quando confrontarla.Trova l'indice dell'elemento min in MATLAB
cost = [0.2 0.0 0.3; 0.4 0 0; 0.5 0 0];
available = [1 1 0 ; 1 0 0; 0 0 0];
available = logical(available);
voglio ottenere l'indice dell'elemento disponibili min nella matrice costo, che in questo caso sarebbe confrontare 0.2
, 0.0
e 0.4
e restituire l'indice di 0.0
, che è (1, 2)
o 4
nella matrice costo .
ho cercato
mul = cost .* available; % Zero if not available, but I can't know if it is zero because cost is zero
mul(~mul) = nan; % Set zero to be NaN
[minVal, minId] = min(mul)
Ciò contribuirà ad ottenere il minimo costo diverso da zero, ma se esiste zero elementi che sono disponibili, sarebbe sbagliato.
Quindi c'è un modo migliore per farlo?
Off-topic: si dovrebbe astenersi dal denominare variabili come le funzioni (ad esempio 'min'). –