带条件的Matlab多重矩阵
我知道我可以传递矩阵的所有元素,然后这样做 但也许还有另一种选择 我想做:带条件的Matlab多重矩阵,matlab,matrix,Matlab,Matrix,我知道我可以传递矩阵的所有元素,然后这样做 但也许还有另一种选择 我想做: 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 = 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]
我认为将矩阵相乘,然后修正结果是最好的选择。原因如下: 您必须计算乘积矩阵中的每个单元格,以确定是否要保留它 Matlab实现矩阵乘法的速度非常快 所以我只想说:
prod = mat1 * mat2
mask = (prod < 0) | (prod > 255)
prod(mask) = mat1(mask)
我认为将矩阵相乘,然后修正结果是最好的选择。原因如下: 您必须计算乘积矩阵中的每个单元格,以确定是否要保留它 Matlab实现矩阵乘法的速度非常快 所以我只想说:
prod = mat1 * mat2
mask = (prod < 0) | (prod > 255)
prod(mask) = mat1(mask)
如果我没弄错的话,你有一个矩阵乘法
mat2 * mat1
最好是将矩阵乘法结果存储在第三个矩阵中
mat3 = mat2 * mat1
与
结果是一个矩阵,其中每一个小于0或大于255的元素都被替换为mat1的值。如果我理解正确的话,你有一个矩阵乘法
mat2 * mat1
最好是将矩阵乘法结果存储在第三个矩阵中
mat3 = mat2 * mat1
与
结果是一个矩阵,其中每个小于0或大于255的元素都被替换为mat1的值。我认为这是错误的。执行第2行后,掩码为全零。你需要的是一个|,不是乘法。我认为这是错误的。执行第2行后,掩码为全零。你需要的是|,不是乘法。