反演这个分段定义的函数

时间:2017-05-06 09:53:33

标签: matlab math gaussian inverse piecewise

我需要通过MATLAB实现以下分段定义函数的反函数:

enter image description here

是高斯函数的近似值。

我已经尝试对每个单独的分段函数使用finverse函数,但结果(0NaN)似乎不符合我的期望。

x是一个由数字代替的值,所以我认为以数字形式得到我的答案是公平的,因为我不认为它在符号中是完全可逆的 - 如果有可能那么我认为以符号方式做它会更好。

你能帮我一把吗?

非常感谢,并且BR。

编辑于2017年5月12日

在这里你可以看到我最初的尝试:

    Q_1 = exp(-0.4527*x^0.86 + 0.0218);
    Q_2 = sqrt(pi/x)*exp(-x/4)*(1-20/(7*x));

    b = 1-(1-lambda)^(j-1);
    if b < 10, r_idle(j) = subs(finverse(Q_1,x),x,b);
    else,      r_idle(j) = subs(finverse(Q_2,x),x,b);

j只是一个整数(这些是结果是向量的参数)而lambda只是预先计算的实数。例如,0.4065

1 个答案:

答案 0 :(得分:0)

有时候使用指示符(逻辑)功能和使用interp1功能很方便。

phi=@(x) exp(-0.4527*(x.^0.86)+0.0218).*(x < 10)...
    + sqrt(pi./x).*exp(-x./4).*(1-(20./(7*x))).*(x >= 10)

X = (.01:.01:20)';

然后interp1(phi(X),X,xq)给出反函数。

>> interp1(phi(X),X,[0.01 0.05 .1 .2 .3 .4 .5 .6 .7 .8 .9 1])
ans =
   14.4851    9.0773    6.7013    4.4395    3.1844    2.3332    1.7013    1.2081    0.8120    0.4896    0.2284    0.0294

enter image description here