Matlab利用函数句柄实现函数嵌套
来源:互联网 发布:多核优化 编辑:程序博客网 时间:2024/06/15 20:04
作为基础不牢固的小白,今天写Matlab程序时遇到这个错:
Undefined function 'mrdivide' for input arguments of type 'function_handle'.
其实是利用函数句柄时没有给自变量的值,类似这种写法@f,本身时没有具体的返回值的,但是这在一些工具箱函数中经常用到,比如可以用来提供目标函数,例如:
[x,fval]=gamultiobj(@Fun,nvars,A,b,Aeq,beq,lb,ub,options)
当然我写错,也是因为这个。
借此总结一下,函数句柄的功能和用途:
转载自:http://blog.sina.com.cn/s/blog_71fb42f70100uyfx.html#commonComment
1.匿名函数的基本用法。
handle = @(arglist)anonymous_function
其中handle为调用匿名函数时使用的名字。arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。anonymous_function为匿名函数的表达式。举个例子如下:
f=@(x,y)x^2+y^2;
f(1,2)
ans = 5
当然输入的是数组也是可以的:
f=@(x,y)x.^2+y.^2;
%注意需要点(.)运算
a=1:1:10;
b=10:-1:1;
f(a,b)
ans = 101 85 73 65 61 61 65 73 85 101
匿名函数的表达式中也可以有参数的传递,比如:
a=1:5;
b=5:-1:1;
c=0.1:0.1:0.5;
f=@(x,y)x.^2+y.^2+c;
f(a,b)
ans = 26.1000 20.2000 18.3000 20.4000 26.5000
c作为表达式中的参数,进行了数据传递。上面都是单重匿名函数,也可以构造多重匿名函数,如:f=@(x,y)@(a) x^2+y^+a;
f1=f(2,3)
f1 = @(a)x^2+y^+a
f2=f1(4)
f2 = 85
每个@后的参数从它后面开始起作用,一直到表达式的最后。
2.使用匿名函数实现符号函数的赋值运算
在老版本的Matlab中,这个功能是由inline函数完成的,现在用匿名函数完成此功能。比如:知道z=2x^3+4x+5,求z在x=3处的2阶导数值。可以先用符号函数算出z的2阶导数的表达式,然后通过匿名函数,把x赋予3的值,得到最后结果:
syms x; %定义符号变量
z=2*x^3+4*x+5; %定义表达式
z1=diff(z,2) %求z的2阶导数的表达式
z1 = 12*x
z2=eval([‘@(x)’ vectorize(z1)]); %vectorize函数的功能是使内联函数适合数组运算的法则
z2(3)
ans = 36
- Matlab利用函数句柄实现函数嵌套
- Matlab 匿名函数嵌套实现
- MATLAB函数句柄
- MATLAB函数句柄
- matlab 函数句柄
- Matlab中的函数句柄@
- 函数句柄matlab
- Matlab函数句柄
- matlab函数句柄介绍
- MATLAB嵌套函数
- MATLAB 函数句柄的用法
- MATLAB @ 函数句柄的用法
- matlab中函数的句柄
- Matlab基础学习--------函数句柄
- 函数句柄 Function Handle MATLAB
- 【转载】MATLAB函数句柄和匿名函数
- 利用函数句柄画函数曲线
- matlab @函数句柄以及inline函数、匿名函数、自定义函数
- 记录一些VR开发的小坑(1)---vrtk射线相关
- Linux C语言 获取本机(所有网卡)IP地址(IPV4)
- Java HOOK
- LeetCode 开始刷题锻炼的时期
- 3. K-means方法及其应用
- Matlab利用函数句柄实现函数嵌套
- DigitalOcean境外云服务器注册
- vue-router
- 关于捕获键盘信息的processDialogkey方法
- Java中toString方法的作用
- Spring AOP 实现原理
- 画个五角星
- 使用SQL语句清空数据库所有表的数据
- unity_每日随笔_TimeHelp计时器