首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用if/else为bsxfun编写函数

使用if/else为bsxfun编写函数
EN

Stack Overflow用户
提问于 2017-09-15 20:10:44
回答 2查看 123关注 0票数 1

在我的代码中,我需要将矩阵的每个值除以另一个矩阵的值。我可以使用A./B,但是B中的一些元素是0。我知道,如果B(i,j) = 0,所以A(i,j)也是0,我想要0/0 =0。所以我写了一个函数div,我使用bsxfun,但是我没有0,我有NaN:

代码语言:javascript
复制
A = [1,0;1,1];
B = [1,0;1,2];
function n = div(a,b)
   if(b==0)
      n = 0;
   else
      n = a./b;
   end
end
C = bsxfun(@div,A,B);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-15 20:16:12

为什么不直接替换不想要的值呢?

代码语言:javascript
复制
C=A./B;
C(A==0 & B==0)=0;

您可以执行C(isnan(C))=0;,但是这将取代所有的NaN,即使不是由0/0创建的。如果零总是发生在一起,那么只有C(B==0)=0;就行了

票数 3
EN

Stack Overflow用户

发布于 2018-08-22 12:57:28

如果你知道你的B中的非零值永远不会小于一个很小的数eps (例如1e-300),一个简单的技巧就是将eps添加到B中,所有的非零值都保持不变,而所有的零值都变成eps。当除以0/eps时,得到了期望的结果。

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

https://stackoverflow.com/questions/46246864

复制
相关文章

相似问题

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