Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带条件的Matlab多重矩阵_Matlab_Matrix - Fatal编程技术网

带条件的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行后,掩码为全零。你需要的是|,不是乘法。