matlab中有没有办法限制函数中的变量
例如我有一个功能
function S0 = S0Func(obj, c, delta, xT, sigma)
beta = obj.betaFunc(sigma);
xb = obj.xbFunc(c, delta, sigma);
S0 = (1-obj.tau).*(obj.x0./(obj.r-obj.mu)-c./obj.r-(xb./(obj.r-obj.mu)-c./obj.r).*((obj.x0./xb).^beta)-((delta-1).*c./obj.r).*((obj.x0./xT).^beta-((obj.x0./xb).^beta)));
end
我想要限制的地方(obj是一个类的对象)
0<xb<xT<1
0<c
1<delta
我想做的是在上面提到的限制下绘制以下的 3d 图
S0Func(2.7, 1, 1, 0.3)-S0Func(c,delta,xT,0.2)<0;
编辑 我尝试过使用等值面
optimalStraightCoupon = fminbnd(@(c) -(S0Function(c,1,1)+D0Function(c,1,1)), 0, 4);
[xT, delta, c] = meshgrid(0.8:.01:1, 1:.1:3, 0:.1:4);
values = S0Function(optimalStraightCoupon,1, 1)- S0Function(c,delta, xT);
patch(isosurface(xT, c, delta, values, 1), 'FaceColor', 'red');
view(3);
我得到了一些输出,但它不正确,因为违反了对 xT 的限制。
任何帮助表示赞赏。谢谢你。