2017-03-08 123 views
1

我有一个表达式,如果两个变量的和为偶数,我想要为0,如果和为奇数,则有一个函数。我尝试这样做:创建分段匿名函数matlab

fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*(m^2-n^2)^2); 

我的问题是,如果我这样做了M = N,然后我得到NaN的,而不是0。我怎样才能解决这个给0 Foro的类似的东西?

回答

4

1/(m^2-n^2)正在产生NaN这是破坏你的功能。为了解决这个问题,你可以添加一个小的有限性分母(即机器精度):

fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*((m^2-n^2)^2 + eps())); 

或有一个术语,仅仅是非零时mn足够接近:

fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*((m^2-n^2)^2 + abs(m-n)<=eps(m))); 
+0

谢谢。甚至没有想过这样做 – yankeefan11