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.