MATLAB: How to replace the zeros in a matrix with another integer, or with a pos or neg infinity

2ddistancematrixmatrix manipulationreplace

I have a 145×145 distance matrix where: (1,1)=0 (2,2)=0 … Can I replace just the diagonal with infinity values? There are other zeros in the matrix, but I may or may not want to keep those. Is there a process that could replace this diagonal of all zeros with a diagonal of all infinities?
thanx

Best Answer

To replace only the diagonal of a N-by-N matrix with infinity, do:
A(1:N+1:N^2) = inf; % or A(1:N+1:end)...
If you want to replace all of the zeros in an array with infinity, do:
A(~A) = inf; % Or A(A==0) = inf;