2017-05-05 84 views
2

我偶然发现了加法运算符的意外行为。调用什么(1乘n)加(n乘1)操作?

a=[1 2 3]; 
b=[5; 7; 11]; 
a+b 

主要生产

ans = 

    6  7  8 % a(1)+b(1) a(1)+b(2) a(1)+b(3) 
    8  9 10 % a(2)+b(1) a(2)+b(2) a(2)+b(3) 
    12 13 14 % a(3)+b(1) a(3)+b(2) a(3)+b(3) 

此行为可能是文档中的Add a Vector to a Matrix例如下下降。

创建一个数组A,并向它添加一个列向量。是 处理的矢量,就好像它是相同的尺寸A的基质中,因此在向量中的每个 元素被添加到一排A.

虽然,在我的示例b不能被视为与a相同的尺寸。两个载体都必须重复。

当我向他人描述时,我可以称这种行为为何?Matrix Addition没有一个定义合适。 Vector addition也有不同的定义。我能想到的最好的是“笛卡尔产品中元素的总和”。

回答

3

这就是所谓的二元单体扩展。从R2016b开始,MATLAB使用标准操作符自动执行。有关更多详情,请参阅bsxfun

+0

我想bsxfun是我会看看,如果我想这种行为,我不知道它存在。但是,如果你偶然发现并试图解释它,那么根本不是一个直观的地方。 :P – Cecilia

+2

也被称为隐式扩展...这是来自Mathworks的博客文章https://blogs.mathworks.com/loren/2016/11/10/more_thoughts_about_implicit_expansion/ – beaker

+3

糟糕,这是原创。 http://blogs.mathworks.com/loren/2016/10/24/matlab-arithmetic-expands-in-r2016b/ – beaker

相关问题