2

我对 matlab 运算符感到困惑|。你能说一下它实际上是什么意思吗?

假设我有 2 个图像矩阵image1image2那么这image3=image1|image2;意味着什么?

谢谢

4

4 回答 4

2

此运算符代表逐元素逻辑或操作:请参阅doc

假设image1image2是逻辑矩阵(条目为truefalse),则image3 = image1 | image2;表示 中的每个条目image3是和中的相应条目的逻辑image1image2

于 2013-05-13T13:41:10.877 回答
2

逐元素逻辑或运算

所以:

[1 0] | [1 1]会导致[ 1 1 ]

和,

[0 1] | [0 0]会导致[ 0 1 ].

在您的情况下image3,将是由元素逻辑或获得的大小矩阵image1并保持真(1)或假。image2

于 2013-05-13T13:42:52.663 回答
1

通过对早期语言(C、C++)中使用的运算符的扩展,从广义上讲,在从 C 派生的 MATLAB 中, |具有标准含义,即OR布尔逻辑运算符。

至于你的评论element-wise multiplication or division in matrix we use . as well, but for what purpose do we use |?,如果我们使用.|,那么它就相当于|,就像.+.-。所有这些运算符都要求操作数大小相等。但是,历史上由于正态乘法和矩阵乘法的符号相同,所以有两个符号,*.*。这些符号*.*是完全不同的,以避免正常乘法和矩阵乘法在逻辑上的歧义。同样,除法运算也是如此。

等效操作:

.+==+

.-==-

.|==|

不等价的操作:

.*!=*

./!=/

于 2013-05-13T13:56:19.350 回答
1

假设您有两个大小相同的矩阵image1image2(可以包含逻辑但也可以包含其他值)

然后image3 = image1 | image2会给你所谓的image1and的“逻辑掩码” image2

这意味着图像 3 在至少有一个图像是非零数的点处等于 1(真),如果它们都为零,则等于 0(假)。

例子:

image1 = [   0 255;
           166   0]
image2 = [-123   0;
           255   0]
image3 = image1 | image2
% Will give as output:
[1 1
 1 0]
于 2013-05-14T09:42:51.213 回答