bsxfun


參考: http://blog.sina.com.cn/s/blog_6ca002a50100wvu1.html

【功能描述】兩個數組間元素逐個計算.

【應用場合】當我們想對一個矩陣A的每一列或者每一行與同一個長度相等的向量a進行某些操作(比較大小,乘除等)時,我們只能用循環方法或者利用repmat函數將要操作的向量a複製成和A一樣尺寸的矩陣,進而進行操作。從MATLAB R2007a開始,再遇到類似的問題時,我們有了簡潔高效的方法,即利用bsxfun函數。

【好處】 向量化編程,節省內存,同時速度提升。
【函數描述】C=bsxfun(fun,A,B):兩個數組間元素逐個計算,fun是函數句柄或者m文件,也可以爲如下內置函數 
         @plus 加 
         @minus 減 
         @times 數組乘 
         @rdivide 左除 
         @ldivide 右除 
For example: 如何將一個矩陣的每行或每列元素分別擴大不同的倍數?如[1 2 3;4 5 6 ;7 8 9],第一列元素乘以1,第二列元素以2,第三列元素乘以4。
利用bsxfun函數,可以給出下列代碼:

a = [1,2,3;4,5,6;7,8,9];
acol = bsxfun(@times,a,[1 2 4])


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章