matlab之bsxfun函数

Posted 风翼冰舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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


以上是关于matlab之bsxfun函数的主要内容,如果未能解决你的问题,请参考以下文章

在 MATLAB 中,啥时候最适合使用 bsxfun?

Matlab 编码器导致 bsxfun 中的矩阵扩展问题

Matlab中用内建函数代替for循环

matlab中画直线用啥函数

Matlab-下标索引必须是实数正整数或逻辑数

函数bsxfun,两个数组间元素逐个计算的二值操作