首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab bsxfun数值精度

matlab bsxfun数值精度
EN

Stack Overflow用户
提问于 2016-08-04 04:45:57
回答 1查看 80关注 0票数 1

我有两个欧几里得距离函数,一个使用bsxfun,另一个使用repmat。在Matlab 2012a,OSX上,他们给出了略有不同的结果。例如

代码语言:javascript
复制
x = randn(32, 50);
y = randn(32, 50);

xx = sum(x.*x, 1); 
yy = sum(y.*y, 1); 
xy = x'*y; 

d1 = sqrt(abs(repmat(xx', [1 size(yy, 2)]) + repmat(yy, [size(xx, 2) 1]) - 2*xy));
d2 = sqrt( abs(bsxfun(@plus, xx', bsxfun(@minus, yy, 2*xy)) ));

isequal(d1, d2)

figure;hist(d1(:)-d2(:), 50)

提供:

为什么会这样呢,还是我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-04 04:51:48

您正在执行的操作顺序是不同的。将括号放在下面这样

代码语言:javascript
复制
 d1 = sqrt(abs(repmat(xx', [1 size(yy, 2)]) + (repmat(yy, [size(xx, 2) 1]) - 2*xy)));

你会得到同样的结果

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38753304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档