Найти один недиагональный минимальный элемент из матрицы - PullRequest
0 голосов
/ 13 января 2012

Существует ли кратчайший способ найти минимум недиагональных элементов матрицы вместе с ее индексом в matlab

Если A = [1 2 3; 4 1 3; 4 4 4]; тогда я хочу вернуть индекс минимального недиагонального элемента. Здесь это будет 2 в первом ряду и втором столбце. Итак, я хочу вернуть (1,2). Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 января 2012

Для полностью векторизованной альтернативы попробуйте

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
1 голос
/ 13 января 2012
for k=1:size(A,1)
    A(k,k) = inf;
end
[row,col] = find(A==min(A(:)))
...