Finden Sie ein nicht-diagonales Mindestelement aus einer Matrix
Frage
Gibt es einen kürzesten Weg, um das Minimum nicht-diagonaler Elemente der Matrix zusammen mit seinem Index in MATLAB zu finden?
Wenn a = [1 2 3; 4 1 3; 4 4 4]; Dann möchte ich den Index des minimalen nicht-diagonalen Elements zurückgeben. Hier wird das in der ersten Zeile und in der zweiten Spalte 2 sein. Also möchte ich zurückkehren (1,2). Vielen Dank.
Lösung
Für einen voll vektorisierten alternativen Versuch
B = (A + diag(Inf(size(diag(A))))); % put Inf on diagonal
[~,ndx] = min(B(:)); % get the linear index of the minimum value
[r,c] = ind2sub(size(A),ndx); % get row, column of corresponding to linear index
Andere Tipps
for k=1:size(A,1)
A(k,k) = inf;
end
[row,col] = find(A==min(A(:)))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow