为什么Matlab可以将空矩阵与单个矩阵进行比较?

时间:2012-10-18 18:09:25

标签: matlab matrix comparison

我只是好奇为什么Matlab可以将空矩阵与单个矩阵进行比较。特别是

>> [] == [1]

ans =

[]

这样做似乎很奇怪,我只是想知道为什么会这样做。这也适用于其他比较操作(< =,<,> =,>,!=)。如果行或列的大小大于1,则会出错。

谢谢!

编辑:我也相信他们会为其他操作员执行此操作,例如加法,减法等。

2 个答案:

答案 0 :(得分:10)

[](空矩阵)被MATLAB视为大小为0x0的有效矩阵表示。从eq函数的文档中,当您使用运算符==来比较矩阵时,该函数会被调用,其行为如下:

  

A == B比较数组A的每个元素与...的相等性   数组B的对应元素,并返回一个包含元素的数组   设置为逻辑1true),其中AB相等,或逻辑0false)   他们不平等的地方。表达式的每个输入都可以是一个数组   或标量值。

     

...

     

如果一个输入是标量而另一个是非标量数组,那么   标量输入被视为具有相同的数组   维度为非标量输入数组。

在比较[] == [1]中,左操作数是非标量的(isscalar([])返回0),而右操作数是标量。因此标量扩展规则适用,标量操作数扩展为非标量操作数的维度(在本例中为0x0),结果为空矩阵。

答案 1 :(得分:2)

documentation开始:如果其中一个操作数是标量而另一个是矩阵,则标量会扩展到矩阵的大小。

这是一个(略微奇怪的)标量“扩展”的一般情况,以匹配与之比较的矩阵的大小。使用标量,其他数组的大小可以是任何值。对于非标量数组比较,情况并非如此。