Matlab中用到的bsxfun函数

来源:互联网 发布:通过软件收短信 编辑:程序博客网 时间:2024/06/05 19:16

bsxfun函数

最近在读dollar toolbox代码,该工具包是用matlab和c混编的,对其中的很多matlab函数不是很熟悉,有的更是查了忘,再见到再查,所以就在这里,边学习边整理,方便以后学习。


一、bsxfun函数是对矩阵中每个元素进行操作的函数,函数形式是C = bsxfun(fun,A,B),fun是代表要执行的运算,可以是下图中的任何一个,比如@plus





例1:


a=[1 2 3];

c=[1.1;1.9;3.1];


v=bsxfun(@min,a,c);


执行结果:


@min从名字上就可以看出,是比较大小,问题在于怎么比较,其实,它的比较规则跟错c*a是一样的,也就是和[1 2 3]*[1.1;1.9;3.1]规则一样,只不过对应元素不进行乘法运算,而是进行min,即取最小运算。

例2:

v就是例1的结果。@times是乘法运算,这里矩阵v和矩阵xstep都是3*3的,所以执行的就是对应元素相乘。


                                       

暂时只用到这两个函数,其它的函数应该都差不多的,有空可以试一下。



>> a=[1,2,3]a =     1     2     3>> b=[1.1 1.9 3.1]b =    1.1000    1.9000    3.1000>> c=b'c =    1.1000    1.9000    3.1000>> v=bsxfun(@min,a,c)v =    1.0000    1.1000    1.1000    1.0000    1.9000    1.9000    1.0000    2.0000    3.0000>> x=bsxfun(@times,v,10)x =    10    11    11    10    19    19    10    20    30>> xstep=[10 10 10;100 100 100;1000 1000 1000]xstep =          10          10          10         100         100         100        1000        1000        1000>> x=bsxfun(@times,v,xstep)x =          10          11          11         100         190         190        1000        2000        3000>> m=bsxfun(@min,a,b)m =    1.0000    1.9000    3.0000>> k=bsxfun(@minus,x,xstep)k =           0           1           1           0          90          90           0        1000        2000>> clear>> a=[1 2 3;4 5 6;4 2 1]a =     1     2     3     4     5     6     4     2     1>> xMin=min(a)xMin =     1     2     1>> xMax=max(a)xMax =     4     5     6>> cha=bsxfun(@minus,a,xMin)cha =     0     0     2     3     3     5     3     0     0>> xStep=(xMax-xMin)/10xStep =    0.3000    0.3000    0.5000>> a0=bsxfun(@times,cha,1./xStep)a0 =     0     0     4    10    10    10    10     0     0






0 0
原创粉丝点击