【问题标题】:Creating piecewise anonymous function matlab创建分段匿名函数matlab
【发布时间】: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


    【解决方案1】:

    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()));
    

    或者只有在mn 足够接近时才具有非零项:

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

    【讨论】:

    • 谢谢。甚至没想过这样做
    猜你喜欢
    • 2010-12-26
    • 2015-11-21
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    相关资源
    最近更新 更多