Replace values in matrix with other values

matlab, matrix

Solution

`find` is not needed in this case. Use logical indexing instead:

a(a == 2) = -5

In case of searching whether a matrix is equal to `inf` you should use

`a(isinf(a)) = -5`

The general case is:

`Mat(boolMask) = val`

where `Mat` is your matrix, `boolMask` is another matrix of `logical` values, and `val` is the assignment value

Problem

I have a matrix with integers and I need to replace all appearances of 2 with -5. What is the most efficient way to do it? I made it the way below, but I am sure there is more elegant way. ``` a=[1,2,3;1,3,5;2,2,2] ind_plain = find(a == 2) [row_indx col_indx] = ind2sub(size(a), ind_plain) for el_id=1:length(row_indx) a(row_indx(el_id),col_indx(el_id)) = -5; end ``` Instead of loop I I seek for something like: a(row_indx,col_indx) = -5, which does not work.

Original source