2

我有一个关于如何按区域查找和替换某些值的问题。我有三个矩阵。它具有相同的长度 = 1700*1700。第三个矩阵,称为“掩码”,有两个不同的值 = 0 和 255。

a
b
mask

我想在“a”矩阵上找到“0 区域”(掩码上定义的 0 区域)上的所有相同值,并用“a”矩阵上的 b 值替换。那可能吗?例如,在这个简单的例子中,这就是我想要得到的:

a= (3 4 2 5)
b = (2 4 5 7)
mask= (255 255 0 255)

结果=

c= 3 4 5 5

提前致谢,

4

2 回答 2

4

另一种使用逻辑索引的方法。

>> a= [3 4 2 5];
>> b = [2 4 5 7];
>> mask= [255 255 0 255];
>> c = b;
>> logicalMask = mask>0;
>> c(logicalMask) = a(logicalMask) % Set values from a where mask>0

c =

   3     4     5     5
于 2013-07-22T13:01:32.697 回答
3

将掩码转换为逻辑矩阵:

mask = mask > 0

然后继续将 a 与掩码相乘,将 b 与反转掩码相乘:

c = mask .* a + ~mask .* b
于 2013-07-22T12:36:40.560 回答