MATLAB系列05:自定义函数
5. 自定义函数
5.1 MATLAB函数简介
5.2 在MATLAB中传递变量:按值传递机制
5.3 选择性参数
5.4 用全局内存分享数据
5.5 在函数两次调用之间本地数据的存储
5.6 函数的函数(function functions)
5.7 子函数和私有函数
5.8 总结
5. 自定义函数
MATLAB 有一个专门的机制,在建立最终的程序之前用于独立地开发与调试每一个子程序。每一个子程序都可以独立函数的形式进行编程,在这个程序中,每一个函数都能独立地检测与调试,而不受其他子程序的影响。良好的函数可以大大提高编程的效率。它的好处如下:
子程序的独立检测
每一个子程序都可以当作一个独立的单元来编写。在把子程序联合成一个的大程序之前,我们必须检测每一个子程序以保证它运转的正确性。
代码的可复用性
在许多的情况下,一个基本的子程序可应用在程序的许多地方。可重用性代码有两大好处:它大大提高了整体编程效率,它更易于调试。
远离意外副作用
函数通过输入参数列表(input argument list)从程序中读取输入值,通过输出参数列表(output argument list)给程序返回结果。程序中,只有在输入参数列表中的变量才能被函数利用。函数中,只有输出参数列表中的变量才能被程序调用。好的函数的应用可以通过数据隐藏使问题最小化。在主函数中的变量在函数中是不可见的(除了在输入变量列表中的变量),在主程序中的变量不能被函数任意修改。所以在函数中改变变量或发生错误不会在程序的其他部分发生意外的副作用。
5.1 MATLAB函数简介
MATLAB 函数是一种特殊形式的 M 文件,它运行在独立的工作区。它通过输入参数列表接受输入数据,它通过输出参数列表返回结果给输出参数列表。 MATLAB 函数的基本形式如下:
function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...)
%H1 comment line
%Other comment lines
...
(Executable code)
...
(return)
在一个函数中的初始注释行有特定的目的。在 function 语句的第一个行注释被称为 H1注释行。它应当是对本函数功能的总结。这一行的重要性在于,通过lookfor命令它能被搜索到并显示出来。从 H1 注释行到第一个空行或第一个可执行性语句可以通过 help 命令或帮助窗口搜索到。
输入参数列表是名字的列表,这些名字代表从调用者到函数的值。这些名字被称作形参。当函数被调用时,它们只是从调用者得来实际变量的占位符而已。相似地,输出参数列表也形参组成,当函数结束运行时,这些形参是返回到调用者的值的占位符。
在一个表达式中,调用一个函数需要用到实参列表。在命令窗口直接(或在脚本文件中,另一个函数中)键入函数的名字就可以调用这个函数了。当调用一个函数时,第一个实参的值用在第一个形参的位置,而且其余的形参和实参都一一对应。
5.2 在MATLAB中传递变量:按值传递机制
maltab 程序与它们函数之间的交互用是按值传递机制。当一个函数调用发生时, MATLAB将会复制实参生成一个副本,然后把它们传递给函数。这次复制是非常重要的,因为它意味着虽然函数修改了输入参数,但它并没有影响到调用者的原值。这个特性防止了因函数修改变量而导致的意想不到的严重错误。
实际上, MATLAB 用了两种方法,它先对函数的每一个参数进行分析,确定函数的那些参数进行了修改。如果函数没有修改这个参数,它将不会对此参数进行复制,而是简单地指向程序外面的变量,如果函数修改了这个参数,那么这个复制就会被执行)。示例:
5.3 选择性参数 <