-1

当我得到这个错误时,我正在对图像进行一些形态学操作:

函数 imlincomb 期望其数组输入参数 (A1, A2, ...) 具有相同的类。

它是在imsubtract()函数中给出的,其中一个输入是另一个减法的输出。我检查了 Matlab 文档并找到了以下解释Z = imsubtract(X,Y):(重点是我的)

返回的数组 Z 与 X 具有相同的大小和类,除非 X 是逻辑的,在这种情况下 Z 是双精度数。

为什么在逻辑输入 X 的情况下,输出应该是双倍的?!

这根本没有意义。特别是,当 2 个输入参数都是合乎逻辑的并且考虑到这个函数主要(如果不是总是)用于图像时。

4

1 回答 1

3

有 3 个可能的值(并且 boolean 只能捕获 2 个值):

  • 0 (true-true, false-false)
  • 1 (true-false)
  • -1 (false-true)

要看到这一点,请尝试:

>> imsubtract([true,true,false,false],[true,false,true,false])

ans =

     0     1    -1     0

如果您想要一些适合进一步逻辑处理的东西,请调用布尔值:

>> boolean(imsubtract([true,true,false,false],[true,false,true,false]))

ans =

     0     1     1     0
于 2013-06-28T14:53:22.313 回答