我有一个整数矩阵,我需要用 -5 替换所有出现的 2。最有效的方法是什么?我是按照下面的方式完成的,但我相信还有更优雅的方式。
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
我寻找的不是循环,而是类似:a(row_indx,col_indx) = -5,这是行不通的。
最佳答案
find
在这种情况下是不需要的。
改用逻辑索引:
a(a == 2) = -5
在搜索矩阵是否等于 inf
的情况下,您应该使用
a(isinf(a)) = -5
一般情况是:
Mat(boolMask) = val
其中 Mat
是您的矩阵,boolMask
是另一个 logical
值矩阵,而 val
是赋值值
关于matlab - 用其他值替换矩阵中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11952037/