📜  MATLAB函数

📅  最后修改于: 2021-01-07 02:27:38             🧑  作者: Mango

MATLAB函数

函数是可以获取输入参数并返回输出参数的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文件函数剖析

这个简单的函数介绍了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行以百分号%开头。对于平均功能,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文件帮助文本条目的结尾。


>