matlab - 用其他值替换矩阵中的值

标签 matlab matrix

我有一个整数矩阵,我需要用 -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/

相关文章:

python - 在包含数百张图像的数据集中比较和绘制相同颜色的区域

matlab - 将图形导出为 eps、pdf 时 Matlab 中的奇怪行为

matrix - PCA O(min(p^3,n^3)) 的复杂度如何?

php - 如何以简单/高效的方式进行 PHP 矩阵运算

python - 如何生成仅包含 1's and 0' s 的 14x10 矩阵的所有可能组合

matlab - 如何在 Octave 中获得以像素为单位的屏幕分辨率?

oop - MATLAB和全局变量的使用?

matlab - 2 行 x 轴名称

r - R 中的子矩阵采样

arrays - 在R中按行和列从数据框中调用多个值