Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-14, 20:46   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab的bsxfun()代码

这是做什么的?

u = [5 6]; s = [1 1]; data1 =[randn(10,1) -1*ones(10,1)]; data2 =[randn(10,1) ones(10,1)]; data = [data1; data2]; deviance = bsxfun(@minus,data,u); deviance = bsxfun(@rdivide,deviance,s); deviance = deviance .^ 2; deviance = bsxfun(@plus,deviance,2*log(abs(s))); [dummy,mini] = min(deviance,[],2); 没有bsxfun,有没有做到这一点的等效方法?



回答:

BSXFUN函数将通过复制两个输入参数的尺寸以使其大小相互匹配来执行请求的按元素操作(函数句柄参数)。在这种情况下,可以通过使用函数REPMAT复制变量u和s来使变量和data大小相同,从而避免使用BSXFUN 。然后,您可以使用标准的按元素算术运算符

u = repmat(u,size(data,1),1); %# Replicate u so it becomes a 20-by-2 array s = repmat(s,size(data,1),1); %# Replicate s so it becomes a 20-by-2 array deviance = ((data-u)./s).^2 + 2.*log(abs(s)); %# Shortened to one line

更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 03:23


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.