使用变量值而不是名称lambdas matlab

时间:2017-01-01 21:01:59

标签: matlab lambda

如何在描述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.bsol.k的值而不是它们的名称。当我使用包含此代码的函数时,我可以在工作区中看到:

y<=sol.k*x+sol.b 

而不是

y<=5x+3 
例如,

1 个答案:

答案 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