函数是可以获取输入参数并返回输出参数的M文件。 M文件的名称和函数应相同。函数在其自己的工作空间(也称为本地工作空间)中的变量上执行, 与你在MATLAB命令提示符下访问的工作空间(称为基本工作空间)分开。
函数文件就像FORTRAN中的程序或子例程, PASCAL中的操作, 以及C中的函数。
函数文件以函数定义行开头, 该行具有定义明确的输入和输出记录。没有此行, 文件将开发为脚本文件。
句法
function [output variables] =function_name(input variables);
其中function_name必须与用于写入函数的文件名(不带.m扩展名)相同。例如, 如果函数的名称为projectile, 则必须将其编写并存储在名为projectile.m的文件中。函数定义行看起来略有不同, 具体取决于是否没有输出, 单个输出还是多个输出。
例子
Function Definition LineFile Name
function [rho, H, F]=motion(x, y, t);motion.m
function [theta] = angleTH(x, y);angleTH.m
function theta=THETA(x, y, z);THETA.m
function []=circle (r);circle.m
function circle (r);circle.m
M文件函数剖析
这个简单的函数介绍了M文件的基本部分。
function f = fact(n) Function definition line
% Compute a factorial value. H1 line
% FACT(N) returns the factorial of N, Help text
% generally indicated by N!
% put simply, FACT(N) is PROD(1:N). Comment
f = prod(1:n); Function body
下表简要定义了每个M文件部分。函数和脚本都可以具有所有这些元素, 但函数定义行仅适用于函数。
M文件元素
Description
函数定义行(仅函数)
它定义了函数名称, 以及输入和输出参数的数量和顺序。
H1 line
程序的单行摘要定义, 当你在整个目录上请求帮助或使用lookfor时显示。
Help text
程序的更详细定义, 当你请求特定函数的帮助时与H1行一起显示
函数或脚本主体
执行实际评估并将值分配给任何输出参数的程序代码。
Comments
程序主体中描述程序内部工作的文本。
函数定义行
函数定义行通知MATLAB M文件包含函数, 并指定函数的参数调用顺序。事实函数的函数定义行是
函数名称
函数名称以字母开头, 并且包括字母数字字符和下划线, 或者它的长度不得超过最大长度(由函数名lengthmax返回)。因为变量必须具有相同的规则, 所以我们可以使用isvarname函数来分析函数名称是否有效:
isvarname myfun
包含MATLAB函数的文本文件的名称由带有扩展名.m的函数名称组成。例如,
average.m
如果文件名和函数定义行名称不同, 则忽略内部(函数)名称。因此, 如果average.m是定义名为computeAverage的函数的文件, 我们将通过键入以下内容来调用该函数
average
函数参数
如果函数具有多个输出值, 请将输出参数列表括在方括号中。输入参数放在函数名称后的括号内。使用逗号分隔多个输入或输出参数。这是具有三个输入和三个输出的函数名称范围的声明:
functions [x, y, z] = sphere(theta, phi, rho)
If there is no outputs, leave output blank
function printresults(x)
or use empty square brackets:
function [] = printresults(x)
H1线
H1行是第一条帮助文本行, 是紧随函数定义行之后的注释行。因为它由注释文本组成, 所以H1行以百分号%开头。对于平均函数, H1线是
% AVERAGE Mean of vector elements.
这是用户在MATLAB提示符下键入help function_name时出现的文本的第一行。此外, lookfor函数搜索并仅显示H1行。由于此行提供了有关M文件的基本摘要信息, 因此有必要使其具有尽可能的描述性。
帮助文字
我们可以通过在M文件程序的开头在一个或多个连续的注释行上输入帮助文本来为M文件创建在线帮助。 MATLAB将检查紧随H1线之后, 以%开头的第一组连续行, 以作为该函数的在线帮助文本。没有%作为最左边的字符的第一行将结束帮助。
平均函数的帮助文本为
% AVERAGE(X), where X is the vector, is the mean of vector items.
% Nonvector input results in an error.
当我们在命令提示符下键入help function_name时, MATLAB将显示H1行, 然后显示这些函数的在线帮助文本。帮助系统将忽略此帮助块之后出现的任何注释行。
函数或脚本主体
函数主体包括执行计算并为输出参数分配值的所有MATLAB代码。函数体中的语句可以包含函数调用, 流控制语句和交互式输入和输出之类的编程方法, 评估, 赋值, 注释和空白行。
例如, 平均函数的主体包括许多简单的编程语句:
[m, n] = size(x);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1)) % Flow control error('Input must be a vector') % Error message displays
end
y = sum(x)/length(x); % Calculation and assignment
注释
注释行以百分号(%)开头。注释行可以出现在M文件的任何位置, 并且我们可以在代码行的末尾附加注释。例如,
%将所有向量元素相加。
y = sum(x)%使用求和函数。
除了注释行, 我们还可以在M文件中的任何位置插入空白行。空行将被忽略。但是, 空行可以表示M文件帮助文本条目的结尾。