Matlab子函数定义稍微转载一下

摘要:
Matlab子函数定义标签:Matlab子函数定义嵌套函数分类:Matlab学习在Matlab的函数定义中,如果函数很长或很多,它们通常可以写在多个函数M文件中,但有时函数可能很短,只有几行。您可能希望将多个函数定义放在同一个函数中。m文件。这里,子函数的定义存在问题。一个在matlab中。m文件可以有多个子函数,但只有一个主函数,m文件名必须与主函数相同[1]。

Matlab子函数定义 (2010-12-21 11:42:47)标签:matlab子函数定义嵌套函数分类:matlab学习

在matlab的函数定义中,如果函数如果函数较长或较多,往往可以将各函数分别写在多个.m文件中,但有时函数可能很短,就几行,可能希望将多个函数定义放在同一个.m文件中,这里就存在一个子函数的定义问题。

在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同[1]。(注:本人经自己试验发现,自己使用的matlab7.5版本并不要求主函数名和.m文件名相同,但调用的时候使用的仍然必须是.m文件名,所以为了理解和记忆的方便,仍然建议M文件名和主函数名同名。)

其使用方法如下图,图1:  

Matlab子函数定义稍微转载一下第1张

图1

在这个.m文件中共有三个函数,其中subfunction是主函数,而add和subtract是两个子函数,在函数调用是使用的是文件名subfunction_cxd(x,y),如[a,b]=subfuction_cxd(1,1),而如果仅是调用主函数的话,则会出现未定义的错误提示,如下图,图2:

Matlab子函数定义稍微转载一下第2张

图2我们甚至可以将函数的调用也写到同一个.m文件中,如以下这个例子,见图3:

Matlab子函数定义稍微转载一下第3张

图3

这里我们定义了一个没有输入没有输出的函数该函数将作为主函数,而其他的函数均为子函数,由主函数调用子函数,而子函数间是可以互相调用,但不能调用主函数。这时的m文件不需要任何输入,调用时可以直接点运行m文件的快捷键,或者在命令框中输入m文件名然后回车运行,如上例输入命令subfunction_cxd回车即可得到结果。

M文件中以下这种将函数的调用直接写到m文件中的情况是不允许的,如图4,出现错误提示如图5,必须也把调用写成函数的形式,或者将子函数都写成单独的m文件。

Matlab子函数定义稍微转载一下第4张

图4

Matlab子函数定义稍微转载一下第5张 图5

有时若有需要,子函数的定义甚至可以放在主函数中,即函数的嵌套,如图6。这种嵌套函数是在函数第一次调用时就加以定义,一旦使用了嵌套函数,无论是嵌套函数还是主函数都必须以end作为函数的结束。当然子函数一旦定义将可在主函数中任意位置调用,如例子中求a时,定义了加法,但求c时仍然可以调用,无需再次定义。注:主函数结束时有一个end表示主函数结束切不可少。

Matlab子函数定义稍微转载一下第6张

图6

编写完函数后,如果有需要,可以吧自己所定义的函数成组的存储在公共目录下,即存在工具箱中,通过修改搜索路径进行访问,修改MATLAB的搜索路径可以在主菜单File中的Set Path进行,也可以在命令框中输入pathtool,获取下图路径设置,见图7。存储后的函数在路径下将可以直接调用。

Matlab子函数定义稍微转载一下第7张

图7

参考文献:

【1】Holly Moore. MATLAB for Engineers,Second Edition.Publishing House of Electronics Industry

原网址:http://hi.baidu.com/liuhuaxi2009/item/9947f40c61b6bb7bbfe97ec0

免责声明:文章转载自《Matlab子函数定义稍微转载一下》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇内置传感器---智能手机(资料)软件项目技术点(7)——在canvas上绘制自定义图形下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Matlab命令合集 妈妈再也不用担心我不会用matlab了

matlab命令一、常用对象操作:除了一般windows窗口的常用功能键外。1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。3、功能键:功能键 快捷键 说明方向上键 Ctrl+P 返回前一行输入方向下键 Ctrl+N 返回下一行输入方向左键 Ct...

如何解决 Matlab 画图时中文显示乱码的问题?

使用的是win10系统,从前几个月某一天,我的matlab的figure里的中文都变成了口口。很是郁闷,还以为是动到了什么配置引起的。 前几天更新了matlab 2018b,发现还有这个问题。就觉得不是自身配置引起的。 就去网上搜索了这个问题,发现了不错的解答: 如何解决 Matlab 画图时中文显示乱码的问题? - Bridgoon的回答 - 知乎 这里...

Win32汇编操作注册表

1.打开和关闭子键 注册表函数对注册表的操作是通过句柄来完成的,与文件操作一样,在对某个键下的子键或者键值项进行操作之前,需要先将这个键打开,然后使用键句柄来引用这个键,在操作完毕以后再将键句柄关闭。注册表的根键不需要打开,它们的句柄是固定不变的,要使用根键的时候只要把这些句柄直接拿来用就是了,Windows.inc中已经预定义了它们的数值: HKEY_C...

你真的了解python的with语句吗?通过分析contextlib源码让你彻底掌握with的用法

楔子 下面我们来聊一下Python中的上下文管理,Python中的上下文管理我们可以通过with语句实现。在Python中使用with语句最多的情况,莫过于操作文件了,比如我们在打开一个文件的时候会通过类似于with open("test.txt", encoding="utf-8") as f: 这种形式打开,这种方式的好处就在于with语句结束后会自动...

android自定义控件及自定义组合控件

一、构建自定义控件 构建自定义组件 Android中,你的应用程序程序与View类组件有着一种固定的联系,例如按钮(Button)、文本框(TextView),可编辑文本框(EditText),列表框(ListView),复选框(CheckBox),单选框(RadioButton),滚动条(Gallery),微调器(Spinner), 等等,还有一些比较先...

Python——eventlet

eventlet语境下的“绿色线程”普通线程之间的区别:   1. 绿色线程几乎没有开销,不用像保留普通线程一样保留“绿色线程”,每一个网络连接对应至少一个“绿色线程”;   2. 绿色线程需要人为的设置使其互相让渡CPU控制权,而不是抢占。绿色线程既能够共享数据结构,又不需要显式的互斥控制,因为只有当一个绿色线程让出了控制权后其他的绿色线程才能访问彼此共...