返回首页
当前位置: 主页 > 教育技术学 > 资源收藏 >

利用feval统一函数的调用方式

时间:2010-08-02 02:13来源:知行网www.zhixing123.cn 编辑:麦田守望者


先看看这两个函数

function y = testfun1(x)

y = x + 1;

function y = testfun2(x,b)

y = x + b;

一般情况下,输入相应的自变量和参数值,就可以得到函数值

x = 1; y = testfun1(x);

x = 1; b = 2; y = testfun2(x,b);

也可以使用feval函数来执行。

x = 1; y = feval(@testfun1, x);

x = 1; b = 2; y = feval(@testfun2, x, b);

 

然而,有的时候需要用feval函数把这两个函数的执行方式统一起来。

就会遇到这样的问题:这两个函数一个是带参数的,另外一个是不带参数的,或者有可能会出现函数所带的参数数目不一样的情况,如何统一呢?


定义一个cell型的args参数,可以解决这个问题。

 

第一种情况: args={}; x = 1; y = feval(@testfun1, x, args{:});

注意:写成这样是不行的 :x = 1; y = feval(@testfun1, x, {});或者y = feval(@testfun1, x, {:});

 

第二种情况: args={2}; x = 1; y = feval(@testfun1, x, args{:});

 

当然,也可以采用下面这种比较笨的方法:

if(function==@testfun1)

y = feval(@testfun1, x);

else

y = feval(@testfun2, x, b);

end

 

当可选函数较多,或者需要反复执行时,这样的调用方式显然是低效的。

 

这种通过feval将函数的执行方式统一起来的做法,特别适合于在主程序中调用某一类函数。比如在Matlab gads工具箱中,stepGA函数需要调用尺度变换函数,然而有的尺度变换函数是需要指定参数的,有些则不需要。

 

这种同一类函数参数个数不统一的状况也可以通过引入冗余参数来解决

function y = testfun1(x, b)

y = x + 1 ;

Tags: matlab feval 函数调用

阅读全文(245次) / 评论 / 扔小纸条 / 文件夹: Matlab的天空

收藏: QQ书签 del.icio.us / 订阅: Google 抓虾


 

return的不同用法

月下听琴 @ 2006-04-02 16:03

return:结束return所在函数的执行,把控制权交回主调函数或者命令窗口。

定义这样一个函数:

function y = aaa(x)

y = bbb(x);

function y = bbb(x)

for n = 1:10

if(n==x)

return;

end

y = x + 1;

end

y = x*2;

 

在command窗口中输入:y = aaa(3)

得到的结果是:y = 4

在这个例子中,return结束if-end,最后执行一次y = x +1; 然后返回主调函数。


再定义这样一个函数:

function y = aaa(x)

y = bbb(x);

function y = bbb(x)

y =1;

for n = 1:10

return;

y = x + 1;

end

y = x*2;

在command窗口中输入:y = aaa(3)

得到的结果是:y = 1

在这个例子中,return结束for循环,返回主调函数。

 

------分隔线----------------------------
标签(Tag):MATLAB
------分隔线----------------------------
推荐内容
  • 哥白尼罗巴切夫斯基 生平经历简介 数学史话

    每一个学过初中几何的人都知道,过直线之外一点有唯一的一条直线和已知直线平行,这是...

  • 什么是建筑风水学 建筑风水学图解

    买房子在我们这里是一生中的大事,普通人一辈子可能就买一套房子,房子的风水被很多人...

  • 人体穴位都有哪些 人体穴位图解大全

    人体从头到脚全身有很多中穴位,根据穴位经常按摩能起到保健的作用,不同地方的穴位对...

  • 曲线行驶技巧图解

    曲线行驶又被称为S型弯道,在驾照考试中最简单的一个科目,虽然简单,但是也不能忽视...

  • 如何包馄饨 馄饨的包法图解

    馄饨是我们国家的一种传统面食,通常用薄面皮包馅,然后煮熟带汤食用,馄饨大家都吃过...

  • 教育技术学专业培养方案

    一、培养目标及模式 教育技术学是现代教育学、现代心理学、传播学、系统论、计算机科...

  • 猜你感兴趣
  • 教育技术学动态
  • 教育技术学论文
  • 理论研究
  • 应用研究
  • 资源收藏
  • 百家观点
  • 英文文献
  • 中国电化教育
  • 电化教育研究
  • 中国远程教育
  • 开放教育研究
  • 现代教育技术
  • 远程教育杂志
  • 现代远距离教育
  • 中国教育信息化
  • 中国信息技术教育
  • 中小学信息技术
  • Flash龙8娱乐官网手机版
  • Photoshop龙8娱乐官网手机版
  • 3DMAX龙8娱乐官网手机版
  • AutoCAD龙8娱乐官网手机版
  • CorelDRAW龙8娱乐官网手机版
  • Matlab龙8娱乐官网手机版
  • 其他龙8娱乐官网手机版
  • .Net龙8娱乐官网手机版
  • Asp龙8娱乐官网手机版
  • Php龙8娱乐官网手机版
  • Jsp龙8娱乐官网手机版
  • Ajax龙8娱乐官网手机版
  • Android教程
  • 其他龙8娱乐官网手机版
  • Word教程
  • Excel教程
  • PowerPoint教程
  • Ubuntu教程
  • 其他教程
  • 课件下载
  • 软件下载
  • 视频教程下载
  • 其他下载
  • 教案大全
  • 试题大全
  • 课件大全
  • 其他大全
  • 人像摄影
  • 风光摄影