2017-01-01 135 views
0

如何在描述lambda表达式时使用变量的值而不是名称?这是我的代码部分:使用变量的值而不是其名称lambdas matlab

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 

例如。

回答

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 
+1

非常感谢您的帮助和建议。这个: eval(['y = @(x)'num2str(a)'* x +'num2str(b)])正是我所需要的。 –

相关问题