可以注册的网站夜晚直播
news/
2025/9/24 2:02:00/
文章来源:
可以注册的网站,夜晚直播,免费全能浏览器,工业和信息化部政务服务平台内联函数 内联#xff08;inline#xff09;函数是MATLAB 7以前经常使用的一种构造函数对象的方法。在命令窗口、程序或函数中创建局部函数时#xff0c;通过使用inline构造函数#xff0c;而不用将其储存为一个M文件#xff0c;同时又可以像使用一般函数那样调用它。
MA…内联函数 内联inline函数是MATLAB 7以前经常使用的一种构造函数对象的方法。在命令窗口、程序或函数中创建局部函数时通过使用inline构造函数而不用将其储存为一个M文件同时又可以像使用一般函数那样调用它。
MATLAB中的内联函数借鉴了C语言中的内联函数在C语言中内联函数是通过编译器控制来实现的它只在需要用到的时候内联函数像宏一样的展开所以取消了函数的参数压栈减少了调用的时间和空间开销。在MATLAB中也有类似的性质。由于内联函数是储存于内存中而不是在M文件中省去了文件访问的时间加快了程序的运行效率。
虽然内联函数有M文件不具备的一些优势但是由于内联函数的使用也会受到一些制约。首先不能在内联函数中调用另一个inline函数另外只能由一个MATLAB表达式组成并且只能返回一个变量。
创建一个内联函数非常简单就是使用inline方法例如 finline(t^2-3*t-4)
f Inline function: f(t) t^2-3*t-4
MATLAB会通过检查字符串来推断自变量例如上面的函数中t就是自变量如果没有找到将会使用x作为缺省的自变量例如常数函数 ginline(3)
g Inline function: g(x) 3
另外对于inline也支持多元函数 hinline(xy)
h Inline function: h(x,y) xy
这种创建方法等价于以下方法 hinline(xy,x,y)
这种方式显式地指定了参数列表。
使用内联函数也很简单如同手写一般以f(t) t^2-3*t-4为例分别计算在t2和t4时的函数值 f(2)
ans -6 f(4)
ans 0
对于多元函数类似。
匿名函数 匿名函数anonymous function是MATLAB 7.0版提出的一种全新的函数描述形式和内联函数类似可以让用户编写简单的函数而不需要创建M文件因此匿名函数具有inline函数的所有优点并且效率比inline函数高同时还具有一些独有的特点。 事实上匿名函数很像C语言中的宏这个从匿名函数的构造就能够看得出来但是它比宏的功能更加强大就是可以支持变量替换这将在后面的示例中有所体现。
定义一个匿名函数很简单语法是fhandle(arglist) expression
其中fhandle就是调用该函数的函数句柄function handle相当于C语言中的函数指针arglist是参数列表多个参数使用逗号分隔Expression则是该函数的表达式例如定义x和y的平方和函数 f(x,y) x*xy*y
f (x,y)x*xy*y
一旦定义了匿名函数使用方式和inline函数类似例如计算f(3,4) f(3,4)
ans 25
前面提到匿名函数可以使用工作空间的变量例如创建函数f(x,y)x^2y^3 p2; q3; f(x,y) x^py^q
f (x,y)x^py^q
计算f(2,3) f(2,3)
ans 31
如果修改p或者q的值例如将q改为2
q 2 f(2,3)
ans 31
计算结果并没有改变这是因为该函数句柄保存的是函数在创建时的快照而不是动态的访问其中的变量如果希望获取新值需要重新创建一次该函数完整的方法应该是这样的 q2; f(x,y) x^py^q
f (x,y)x^py^q f(2,3)
ans 13
匿名函数会让前面的内联函数逐步退出MATLAB的舞台事实上在设计这种类型的函数时就带有这一目的但是为了保持程序的向下兼容使用内联函数无疑将带来更好的兼容性。
函数函数 函数函数function function是对传入的其他函数进行操作的函数传入的函数作为函数函数的输入参数传入到函数函数中的函数称为传递函数Passed function事实上MATLAB中就有许多这样的函数例如求解常微分方程的函数ode23、ode45、ode113等都是函数函数他们的第一个参数都是传递函数。另外一个常见的函数函数是fplot用于绘制所提供函数的图形语法为fplot(fun,lims)
例如绘制x取值范围为[-π,π]上fsin(x)的图形 fplot(sin,[-pi,pi]) 图形如下 和前面两种函数不同函数函数是比较复杂的函数了因此必须要保存在M文件中例如可以编写一个计算某个传递函数在给定区间上最大值、最小值和平均值的函数函数
function [maxy,miny,aver]fstatic(func,a,b,n) xlinspace(a,b,n); yfunc(x); maxymax(y); minymin(y); avermean(y);
end
保存为M文件后例如统计正弦函数在[-π,π]上的最大值、最小值和平均值 fstatic(sin,-pi,pi,100)
ans 0.9999 [max min aver]fstatic(sin,-pi,pi,1000)
max 1.0000
min -1.0000
aver -5.9291e-018
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914547.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!