📅  最后修改于: 2021-01-07 02:27:38             🧑  作者: Mango
函数是可以获取输入参数并返回输出参数的M文件。 M文件的名称和函数应相同。函数在它们自己的工作空间(也称为本地工作空间)中的变量上执行,与您在MATLAB命令提示符下访问的工作空间(称为基本工作空间)分开。
功能文件就像FORTRAN中的程序或子例程,PASCAL中的操作,以及C中的函数。
函数文件以函数定义行开头,该行具有定义明确的输入和输出记录。没有此行,文件将开发为脚本文件。
function [output variables] =function_name(input variables);
其中function_name必须与写入函数的文件名(不带.m扩展名)相同。例如,如果函数的名称为projectile,则必须编写该函数并将其存储在名为projectile.m的文件中。函数定义行看起来略有不同,这取决于是没有输出,单个输出还是多个输出。
Function Definition Line File 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文件的基本部分。
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-File Element | Description |
---|---|
Function definition line (functions only) | It defines the function name, and the number and the order of input and output argument. |
H1 line | A one-line summary definition of the program, displayed when you request help on an entire directory, or when you use lookfor. |
Help text | A more detailed definition of the program, displayed together with the H1 line when you request help on a specific function |
Function or script body | Program code that executes the actual evaluation and assigns values to any output argument. |
Comments | Text in the body of the programs that describe the internal working of the program. |
函数定义行通知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线是
% 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)%使用sum函数。
除了注释行,我们还可以在M文件中的任何位置插入空白行。空行将被忽略。但是,空行可以表示M文件帮助文本条目的结尾。
>