为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

matlab匿名函数,内联函数,主函数,子函数

2020-03-08 4页 doc 16KB 5阅读

用户头像

is_180829

暂无简介

举报
matlab匿名函数,内联函数,主函数,子函数matlab匿名函数,内联函数,主函数,子函数 (2011-11-19 22:54:58) ------------------------------------------函数句柄---------------------------------------------- 变量不仅可以用来表示数值(如: 1, 0.2, -5), 用来表示字符串(如: 't', 'casino'), 也可以用来表示函数哦. 当然, 你也看到了前面我们提到的函数都是一个一个的文件, 直接塞到一个变量里面似乎太大, 不过我们可以'提纲挈...
matlab匿名函数,内联函数,主函数,子函数
matlab匿名函数,内联函数,主函数,子函数 (2011-11-19 22:54:58) ------------------------------------------函数句柄---------------------------------------------- 变量不仅可以用来示数值(如: 1, 0.2, -5), 用来表示字符串(如: 't', 'casino'), 也可以用来表示函数哦. 当然, 你也看到了前面我们提到的函数都是一个一个的文件, 直接塞到一个变量里面似乎太大, 不过我们可以'提纲挈领', 抓住函数的handle(句柄), 就可以. 将函数句柄赋值给变量要用到@符号, 语法:变量名=@函数名,或者, handlef=str2func(变量名) 此处地函数名可以是当前Matlab中可以使用的任意函数例如: mysin=@sin, 此后mysin就和sin同样地使用, mysin(pi)和sin(pi)的含义相同. ------------------------------------------匿名函数---------------------------------------------- 这是函数句柄的一种高级用法, 这样产生的函数句柄变量不指向特定的函数, 而是一个函数表达式. 其语法: 变量名=@(输入参数列表)运算表达式 例如, 前面那个计算变量平方的函数可以简单地写为这个匿名函数: b_humps = @ (x) 1./((x-.3).^2+0.01)+1./((x-.9).^2+0.04)-6; 之后, 执行b_humps(变量名), 即可计算该变量的平方, 注意, b_humps属性是函数句柄变量, 而不是这个表达式; 还有要注意这个表达式不需要用单引号括起来(inline函数要用单引号). 1、>>a_humps=@sin >>z =a_humps([-1 0 1]) 这样y = feval_r('sin',pi*(0:4)/4)调用系统的sin函数 z = -0.8415 0 0.8415 2、z = b_humps([-1 0 1]) z =-5.1378 5.1765 16.0000 例如,下例中的匿名函数b_humpsab在定义时就是用了Matlab工作区中的变量a和b: >> a = -.3;b=-.9; >> b_humpsab = @ (x) 1./((x+a).^2+0.01)+1./((x+b).^2+0.04)-6; >> b_humpsab([-1 0 1]) ans = -5.1378 5.1765 16.0000 >> a = 0; %changing the value of a does not chang the function. >> b_humpsab([-1 0 1]) %evaluate again , get the same results ans = -5.1378 5.1765 16.0000 ------------------------------------------------inline 函数--------------------------------------------------- 变量名=inline('函数表达式', '变量名1','变量名2', ... ,'变量名n');(推荐) inline函数不是函数句柄, 是另外一种类型, 它也可以用变量来表示函数, 用法也和一般函数, 函数句柄是一样的. 定义inline函数的语法: 变量名=inline('函数表达式', '变量名1','变量名2', ... ,'变量名n') 当然啦, 如果是常见变量名, 如x, y, 等, 后面那个变量名列表可以省略(不建议为了偷懒这么做, 因为容易引起混乱). inline语句得到的变量类型比较特别, 是'inline object'. 下面代码创建一个内联函数a_humps: >> a_humps = inline('1./((x-.3).^2+0.01)+1./((x-.9).^2+0.04)-6','x') a_humps = Inline function: a_humps(x) = 1./((x-.3).^2+0.01)+1./((x-.9).^2+0.04)-6 上例中,函数inline从一个字符串创建一个函数,并以x为输入变量。 要在一个函数中调用内联函数,只要将该内联函数的名字作为输入参数传递给函数即可。例 如,要将quad(Fun,low,high)中的Fun换为上面的内联函式a_humps,只要按下面的方式调用 即可:quad(a_humps,low,high)。 --------------------------------主函数、子函数--------------------------------------------------- 一个matlab的M文件中可以包含多个函数,第一个函数为主函数,其余的为子函数;保存时,文件名为主函数名字,外部程序只能对主函数进行调用。子函数特点: 1、结构与M函数文件结构相同; 2、子函数直接位置可以互换; 3、子函数只能被同一文件中的主函数和其他子函数调用。 4、通过文件名调用时,子函数的优先级低于内联函数 5、主子函数的工作区间相互独立 继续阅读
/
本文档为【matlab匿名函数,内联函数,主函数,子函数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索