Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
这是做什么的?
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 更多&回答... |
![]() |
![]() |