MATLAB 函数句柄的用法
2012-11-23 10:47
567 查看
转自:http://blog.sina.com.cn/s/blog_6aaf46c401010fvd.html
函数句柄(Function handle)是MATLAB的一种数据类型。引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;特别在反复调用情况下更显效率;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度,提高软件重用性,扩大子函数和私用函数的可调用范围;迅速获得同名重载函数的位置、类型信息。MATLAB中函数句柄的使用使得函数也可以成为输入变量,并且能很方便的调用,提高函数的可用性和独立性。例如:
新建M文件f1.m
function y=f1(X)
x1=X(1);x2=X(2);
y=x1^2+x1*x2;
新建M文件ftest.m
function Y=ftest(f,X)
syms x1 x2;
F=f([x1,x2]);
v=[x1,x2];
grad=jacobian(F,v);
Y=subs(grad,v,X);
在MATLAB命令窗口输入Y=ftest(@f1,[2,1]),得到结果:
Y =
5 2
此处@f1即为函数f1的句柄,可以用class(@f1)判断变量的类型,得到ans = function_handle即函数句柄。函数ftest是求一个二维函数在指定点的梯度值。我们可以替换目标函数为f2或其他函数同样可以求得梯度。这样函数ftest就可以适用于任何二维函数而不必做改动了。
函数句柄(Function handle)是MATLAB的一种数据类型。引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;特别在反复调用情况下更显效率;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度,提高软件重用性,扩大子函数和私用函数的可调用范围;迅速获得同名重载函数的位置、类型信息。MATLAB中函数句柄的使用使得函数也可以成为输入变量,并且能很方便的调用,提高函数的可用性和独立性。例如:
新建M文件f1.m
function y=f1(X)
x1=X(1);x2=X(2);
y=x1^2+x1*x2;
新建M文件ftest.m
function Y=ftest(f,X)
syms x1 x2;
F=f([x1,x2]);
v=[x1,x2];
grad=jacobian(F,v);
Y=subs(grad,v,X);
在MATLAB命令窗口输入Y=ftest(@f1,[2,1]),得到结果:
Y =
5 2
此处@f1即为函数f1的句柄,可以用class(@f1)判断变量的类型,得到ans = function_handle即函数句柄。函数ftest是求一个二维函数在指定点的梯度值。我们可以替换目标函数为f2或其他函数同样可以求得梯度。这样函数ftest就可以适用于任何二维函数而不必做改动了。
相关文章推荐
- MATLAB 函数句柄Function handle的用法(Af = @(x) A*x;)
- MATLAB 函数句柄Function handle的用法(Af = @(x) A*x;)
- MATLAB 函数句柄的用法
- matlab函数句柄(function handle)
- imadjust从用法到原理—Matlab灰度变换函数之一
- MATLAB画图SURF函数颜色控制参数C用法
- matlab中的size(),length(),ndims()函数的用法
- Matlab一些函数用法
- matlab数值积分技巧之将符号表达式转化为函数句柄
- matlab中字符串和变量一起显示输出&eval()函数用法
- matlab中用于小数取整的函数的用法
- Matlab中函数句柄@的作用及介绍
- matlab fspecial 函数用法
- matlab中size()函数的用法
- Matlab 各种画图函数用法
- matlab中 sort 函数用法
- Matlab自带排序函数sort用法
- 详解Matlab中 sort 函数用法
- matlab中svd函数用法总结
- matlab中“执行字符串”函数eval在不同情况下的用法(二)