1. 程式人生 > >matlab之bsxfun函式

matlab之bsxfun函式

<span style="font-size:18px;color:#ff0000;">簡單的呼叫方法:</span>
bsxfun(@plus,A,B),其中@plus代表的是加法,還可以換成減法@minus,乘法@times等,可以參考matlab裡面的幫助文件,對著bsxfun按F1即可。

有何用處?

   我目前用來就是實現對矩陣A和B的加減乘除操作,它的優勢在於,當A和B的維度不相等,並且A和B各自有一個維度必須為1時,簡單的說就是使用bsxfun的前提條件是A和B的維度分別為1*m和n*1,那麼在matlab中進行操作的時候,不必使用repmat函式調整它倆的維度,這個函式會自動調整。

例項

 A=[1 2 3]
B=[4; 5 ;6]
bsxfun(@plus,A,B)

A =

     1     2     3


B =

     4
     5
     6


ans =

     5     6     7
     6     7     8
     7     8     9

如果不用這個函式,那麼在matlab裡面操作的時候通常為:
  A=[1 2 3];
B=[4; 5 ;6];
A=repmat(A,3,1)
B=repmat(B,1,3)
A+B

A =

     1     2     3
     1     2     3
     1     2     3


B =

     4     4     4
     5     5     5
     6     6     6


ans =

     5     6     7
     6     7     8
     7     8     9