如何在描述lambda表达式时使用变量的值而不是其名称?这是我的代码的一部分:
eq1 = k*x1+b==y1;
eq2 = k*x2+b==y2;
sol=solve([eq1,eq2],[k,b]);
linEq1 = @(x) sol.k*x+sol.b;
if (defY<linEq1(defX))
ineq = @(x,y) y<=sol.k*x+sol.b;
else
ineq = @(x,y) y>=sol.k*x+sol.b;
end
我需要在lambda表达式中使用sol.b
和sol.k
的值而不是它们的名称。当我使用包含此代码的函数时,我可以在工作区中看到:
y<=sol.k*x+sol.b
而不是
y<=5x+3
例如,。
答案 0 :(得分:0)
我试着稍微压缩你的代码。请在下次提供最小工作示例。
a = 5
b = 3
y = @(x) a*x + b % note that a and b are evaluated at definition
a = 4
y(1) % this is 8 (even though we changed the value of a)
% but if you really really want to do what you are asking, this is how:
eval(['y = @(x) ' num2str(a) '*x + ' num2str(b)]) % yields y = @(x)4*x+3