【发布时间】:2017-03-08 05:08:38
【问题描述】:
我有一个表达式,如果两个变量的和为偶数,我想为 0,如果和为奇数,我想为函数。我试过这个:
fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*(m^2-n^2)^2);
我的问题是,如果我对 m=n 执行此操作,那么我会得到 NaN 而不是 0。我该如何解决这个问题以给 0 foro 这样的东西?
【问题讨论】:
标签: matlab
我有一个表达式,如果两个变量的和为偶数,我想为 0,如果和为奇数,我想为函数。我试过这个:
fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*(m^2-n^2)^2);
我的问题是,如果我对 m=n 执行此操作,那么我会得到 NaN 而不是 0。我该如何解决这个问题以给 0 foro 这样的东西?
【问题讨论】:
标签: matlab
1/(m^2-n^2) 正在生成 NaN,这会破坏您的功能。为了解决这个问题,您可以为分母添加一个小的有限性(即机器 epsilon):
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)));
【讨论】: