思考匿名函数
我喜欢使用匿名函数的原因之一是因为他们允许我表达任何我想要的函数作为函数的相关参数在不同的上下文中。
内容
例子
这是一个非常通用的方式我可以写的代码意味着生成直线上的点。
直线= @ (X,斜坡,拦截)坡* X +拦截
直线= @ (X,斜坡,拦截)坡* X +拦截
选择一个特定的情节
首先我们选择一个特定的直线段。我开始通过定义斜率和截距值。
m = 2;%的斜率b = 3;%拦截
画线
现在我可以评估函数当我创建的阴谋。
x = 2:0.1:5;情节(x,直线(x, m, b))
找到面积
现在让我们找到这条线的面积一段,两个点之间。因为这个函数积分需要被积函数是一个变量的函数,我们可以使用匿名函数myline,下面的定义,创建这样一个表示。
lowerlimit = 2;upperlimit = 5;
创建一个函数代表我特定的线段,通过解决这些斜率和截距值,并创建一个新的函数从原来的一个。
myline = @ (x)直线(x, m, b);
使用这个新功能,myline被积函数。
myarea =积分(myline lowerlimit upperlimit)
myarea = 12
找到最适合线
现在假设我们有数据,基于此线段,有一些噪音。和我们想要估计斜率和截距值。
m = 2;b = 2;t = (2:0.2:5)”;data =直线(t m b) + 0.2 * randn(大小(t));情节(t、数据“m *”)
现在我想要斜率和截距独立变量。我可以使用polyfit。当然,我可以使用\。
p = polyfit (t)的数据,1);
现在比较估计原始值的斜率和截距。
比较= [m, b;p]
比较= 2 2 2.094 - -2.3638
也许我不是只要一个函数的斜率和截距。提供的数据,在这种情况下,我能得到这样的一个函数直线。我甚至可以得到的值放到一个
slopeIntercept = @(斜率、截距)直线(数据、斜率、截距);slp = (1 - 4);intcpt = [0 5];newline1 = @ (X)直线(X,二(1)intcpt (1));newline2 = @ (X)直线(X,二(2),intcpt (2));
匿名函数允许界面的灵活性
使用相同的原始函数定义直线,我能模函数用于不同的目的。在第一种情况下,我把我的三变量的函数在一个变量的函数,与预设参数。我也可以使用它来创建一个函数的斜率和截距,适用于创建线段为不同参数在稍后的时间。
事实上,如果我试图用我的直线函数与其他代码需要行定义的斜率和截距第一,然后横坐标,我可以很容易地创建一个新接口。
differentLine = @(斜率,拦截,X)直线(X,斜坡,拦截);
你使用匿名函数来改变界面吗?
我很想听听你的想法在这里。
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。