我知道我可以传递矩阵的所有元素并执行此操作。
但也许还有其他选择。
我想这样做:
mat1 = mat2 * mat1;
mat1中的每个元素变为负数或大于255,我想留下前一个元素。
例如(结果不是真的,这仅用于示例):
mat1 = [10 25 12
33 7 163
232 13 77]
mat2 = [-1 2 -3
4 -5 6
-7 -8 9]
asume mat1 = mat2 * mat1给出:
mat1 = [-77.32 59 298
0 -33 12
-600 256 80]
所以我想将mat1修复为:
mat1 = [10 59 12
0 7 12
232 13 80]
答案 0 :(得分:5)
如果我理解正确,你有一个矩阵乘法
mat2 * mat1
最好是将矩阵乘法结果存储在第三个矩阵
中mat3 = mat2 * mat1
使用
idx = (mat3 < 0 | mat3 > 255)
你是一个矩阵,其中包含你想要替换的矩阵,而零则没有。应用此索引将mat3中的值替换为mat1
的值mat3(idx) = mat1(idx)
结果是一个矩阵,其中小于0或大于255的每个元素都被替换为mat1的值。
答案 1 :(得分:2)
我认为将矩阵相乘然后“修正”结果是最好的选择。原因如下:
所以我只想去:
prod = mat1 * mat2
mask = (prod < 0) | (prod > 255)
prod(mask) = mat1(mask)