bsxfun() matlab

本文介绍了MATLAB中的bsxfun()函数,它用于执行元素级的二值操作,避免了显式的复制操作,如repmat函数可能导致的内存消耗。通过示例展示了bsxfun如何实现与for循环相同的效果,但不增加额外的时间成本。
摘要由CSDN通过智能技术生成

bsxfun()函数 很好用:

applies an element-by-element binary operation (

specified by the functionhandlefun
) to arrays a and b, with singleton expansion enabled

函数功能:两个数组间元素逐个计算的二值操作

使用方法:C=bsxfun(fun,A,B);

两个数组A和B间元素逐个计算的二值操作,fun是函数句柄或者m文件,也可以是内置函数(eg.@plus等,见 最后表格)

例子:

%% 一行为一个样本,一列为一个维度,求向量 “零均值”
A=[1 2 10;1 4 20;1 6 15];
C=bsxfun(@minus,A,mean(A));   %%(equal to) C=A-repmat(mean(A,1),3,1));


%% 求两个向量"外加"(A为1*3行向量,B为3*1列向量)
a=randn(3,1);
b=randn(1,3);
c=a*b;     %%(=>) c=bsxfun(@plus,a,b);   <pre name="code" class="cpp">%%(=>) c=repmat(a,1,3)+repmat(b,3,1);    
%%(=>) for(i=1:3),for(j=1:3),c(i,j)=a(i)+b(j);end,end
 

repmat是显式的复制,带来内存消耗;bsxfun是虚拟的复制,实现上等同于for,但bsxfun与for相比不会带来额外时间。

总结:

C = bsxfun(fun,A,B) 中 fun 可以是 oneof the 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值