我需要通过MATLAB实现以下分段定义函数的反函数:
是高斯函数的近似值。
我已经尝试对每个单独的分段函数使用finverse
函数,但结果(0
和NaN
)似乎不符合我的期望。
x
是一个由数字代替的值,所以我认为以数字形式得到我的答案是公平的,因为我不认为它在符号中是完全可逆的 - 如果有可能那么我认为以符号方式做它会更好。
你能帮我一把吗?
非常感谢,并且BR。
在这里你可以看到我最初的尝试:
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
。
答案 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