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的类似的东西?
我有一个表达式,如果两个变量的和为偶数,我想要为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的类似的东西?
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()));
或有一个术语,仅仅是非零时m
和n
足够接近:
fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*((m^2-n^2)^2 + abs(m-n)<=eps(m)));
谢谢。甚至没有想过这样做 – yankeefan11