Matlab中如何将(自定义)函数作为参数传递给另一个函数

Matlab中如何将(自定义)函数作为参数传递给另一个函数

假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数。在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄——这时类似于函数指针的一项功能。
假如我们现在已经编写了一个辛普森方法积分的函数如下,我们要把函数作为参数传给它(当然啦,matlab早已经提供给我们非常牛x的积分函数了,这里只是个例子而已):
function g=myintegrate(f,N,a,b)
%integration using simpson method
n=N/2;
h=(b-a)/N;
x=a:h:b;
fv=f(x);
s=sum(fv(1:2:2*n-1))*4;
s=s+sum(fv(2:2:2*n))*2;
s=s+f(a)+f(b);
s=s*h/3;
g=s;
现在要做的工作就是如何把上面的f函数换成我们想要的随便什么函数。
定义函数句柄:
[email protected] functionname
之后就可以把handle作为参数传递给上面的函数(或者其他需要使用函数作为参数的函数)了。
例如在0~pi/2上对sin(x)进行积分,可以如下输入:
>>[email protected];
>>myintegrate(fh,100,0,pi)
ans =
    0.9947
函数句柄可以指定为任意的matlab函数——当然也包括我们自定义的函数,比如我们在myfun.m文件中定义了如下函数:
function f=myfun(x)
f=x;
那么,
>>[email protected];
>>myintegrate(fh2,100,0,1)
ans =
    0.4967

时间: 2024-12-28 20:16:26

Matlab中如何将(自定义)函数作为参数传递给另一个函数的相关文章

输入6个人的成绩放入到一个一维数组中,然后打印出平均分,最后按成绩 从大到小打印。三个功能(输入是一个函数,求平均分是一个函数,排序是一个 函数)都用函数实现,最后在main方法中调用。

/*5.输入6个人的成绩放入到一个一维数组中,然后打印出平均分,最后按成绩从大到小打印.三个功能(输入是一个函数,求平均分是一个函数,排序是一个函数)都用函数实现,最后在main方法中调用.*/ #include <stdio.h> int inputScore(){ int score; scanf("%d",&score); return score;} double avg(int scores[],int length){ int i,score = 0;

C#.NET常见问题(FAQ)-如何把函数名作为参数传递给另一个函数

在主窗体中使用的还是普通的函数,但是test函数有一个新的参数,就是method ? 这个method所指向的就是前面委托定义的method ? ? 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 ? 我的在线论坛: http://csrobot.gz01.bdysite.com/ ? 问题交流: QQ:910358960 邮箱:[email protected] ?

Thinking in scala (6)----高阶函数----返回一个函数

在Thinking in scala (5)----高阶函数* 里面,我们演示了如何把一个函数作为参数传递给另外一个函数. 在本文里面,我们来演示函数式编程另外一个重要的特性:返回一个函数.首先来看这么一段代码: code piece 1: def sum(f:Int=>Int):(Int,Int)=>Int={ def sumF(a:Int,b:Int):Int= if(a>b) 0 else f(a)+sumF(a+1,b) sumF } 一点点来看,f:Int=>Int 是s

matlab中关于函数句柄、feval函数以及inline函数的解析 (转)

http://blog.sina.com.cn/s/blog_7bff755b010180l3.html MATLAB函数句柄 函数句柄(Function handle)是MATLAB的一种数据类型. 包含了函数的路径.函数名.类型以及可能存在的重载方法: 引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠:使“函数调用”像“变量调用”一样方便灵活:提高函数调用速度,特别在反复调用情况下更显效率:提高软件重用性,扩大子函数和私用函数的可调用范围:迅速获得同名重载函数的位置.类型信息.

matlab中uigetfile命令的应用

matlab中uigetfile命令的应用 uigetfile命令的应用 此函数的用法为 [FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName) FileName:返回的文件名 PathName:返回的文件的路径名 FilterIndex:选择的文件类型 FilterSpec:文件类型设置 DialogTitle:打开对话框的标题 DefaultName:默认指向的文件名 例子:(接来自mat

php提取身份证号码中的生日日期以及验证是否为未成年人的函数

php 提取身份证号码中的生日日期以及确定是否成年的一个函数.可以同时确定15位和18位的身份证,经本人亲测,非常好用,分享函数代码如下: <?php //用php从身份证中提取生日,包括15位和18位身份证 function getIDCardInfo($IDCard){ $result['error']=0;//0:未知错误,1:身份证格式错误,2:无错误 $result['flag']='';//0标示成年,1标示未成年 $result['tdate']='';//生日,格式如:2012-

C++中的指针、数组指针与指针数组、函数指针与指针函数

C++中的指针.数组指针与指针数组.函数指针与指针函数 本文从初学者的角度,深入浅出地详解什么是指针.如何使用指针.如何定义指针.如何定义数组指针和函数指针,并给出对应的实例演示:接着,区别了数组指针与指针数组.函数指针与指针函数:最后,对最常混淆的引用传递.值传递和指针传递做了区处. C++中一个重要的特性就是指针,指针不仅具有获得地址的能力,还具有操作地址的能力.指针可以用于数组.或作为函数的参数,用来访问内存和对内存的操作,指针的使用使得C++很高效,但是指针也非常危险,使用不当会带来比较

01python中的函数与函数式编程(python函数)

一.函数的定义与调用 11 1 def lenght(s): 2    l = 0 3    for i in s:            # 关于for 循环的基本用法是时候做一波总结了 4        l = l + 1 5    return l 6 7 8 a = 'ssssssss' 9 print(lenght(a)) 10 11 >>> 8 # 1 函数的返回值 1)return关键字的作用 return 是一个关键字,这个词翻译过来就是“返回”,所以我们管写在retur

Windows系统调用中API的3环部分(依据分析重写ReadProcessMemory函数)

Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API的3环部分 一.R3环API分析的重要性 Windows所提供给R3环的API,实质就是对操作系统接口的封装,其实现部分都是在R0实现的. 很多恶意程序会利用钩子来钩取这些API,从而达到截取内容,修改数据的意图. 现在我们使用olldbg对ReadProcessMemory进行跟踪分析,查看其在R3的实现,并根据我们的分析来重写一个