2017-05-05 50 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

相關問題