函数是一起执行任务的一组语句,在MATLAB中,函数在单独的文件中定义,文件名和函数名应相同。
函数语句的语法是-
function [out1,out2, ..., outN]=myfun(in1,in2,in3, ..., inN)
以下名为 mymax 的函数应写入名为 mymax.m 的文件中,它以五个数字作为参数,并返回数字的最大值。
创建一个名为mymax.m的函数文件,并在其中输入以下代码-
function max=mymax(n1, n2, n3, n4, n5) % 该函数计算最大值 % 五个数字作为输入 max= n1; if(n2 > max) max=n2; end if(n3 > max) max=n3; end if(n4 > max) max=n4; end if(n5 > max) max=n5; end
函数的第一行以关键字 function 开头,它给出了函数的名称和参数的顺序,在我们的示例中, mymax 函数具有五个输入参数和一个输出参数。
函数语句后的注释行提供帮助文本。输入以下内容时,将打印以下行:
help mymax
MATLAB将执行上述语句并返回以下输出-
This function calculates the maximum of the five numbers given as input
您可以将函数称为-
mymax(34, 78, 89, 23, 11)
MATLAB将执行上述语句并返回以下输出-
ans=89
匿名函数就像传统编程语言中的内联函数一样,在单个MATLAB语句中定义,它由一个MATLAB表达式以及任意数量的输入和输出参数组成。
从表达式创建匿名函数的语法是
f=@(arglist)expression
在此示例中,我们将编写一个名为power的匿名函数,该函数将两个数字作为输入,并将第一个数字作为为第二个数字的幂。
创建一个脚本文件并在其中键入以下代码-
power=@(x, n) x.^n; result1=power(7, 3) result2=power(49, 0.5) result3=power(10, -10) result4=power (4.5, 1.5)
运行文件时,它显示-
result1= 343 result2= 7 result3= 1.0000e-10 result4= 9.5459
必须在文件中定义除匿名函数以外的任何函数,每个函数文件都包含一个首先出现的必需主要函数,以及在主要函数之后并由其使用的任意数量的子函数
函数文件quadratic.m将包含主要函数 quadratic 和子函数 disc ,后者可计算判别式。
创建一个函数文件 quadratic.m 并在其中输入以下代码-
function [x1,x2]=quadratic(a,b,c) % 这个函数返回根 % 一个二次方程。它需要 3 个输入参数 d=disc(a,b,c); x1=(-b + d)/(2*a); x2=(-b - d)/(2*a); end function dis=disc(a,b,c) %函数计算判别式 dis=sqrt(b^2 - 4*a*c); end
您可以从命令提示符处调用上述函数,如下所示:
quadratic(2,4,-4)
MATLAB将执行上述语句并返回以下输出-
ans=0.7321
您可以在另一个函数的主体内定义函数,这些称为嵌套函数,嵌套函数包含任何其他函数的任何或所有组件。
嵌套函数遵循以下语法-
function x=A(p1, p2) ... B(p2) function y=B(p3) ... end ... end
让我们重写前面示例中的函数 quadratic ,但是,这次disc函数将是一个嵌套函数。
创建一个函数文件 quadratic2.m 并在其中输入以下代码-
function [x1,x2]=quadratic2(a,b,c) function disc % 嵌套函数 d=sqrt(b^2 - 4*a*c); end disc; x1=(-b + d)/(2*a); x2=(-b - d)/(2*a); end
您可以从命令提示符处调用上述函数,如下所示:
quadratic2(2,4,-4)
MATLAB将执行上述语句并返回以下输出-
ans= 0.73205
私有功能是仅对有限的其他功能组可见的主要功能,如果您不想公开某个函数的实现,则可以将它们创建为私有函数。
它们仅对父文件夹中的功能可见。
让我们重写 quadratic 函数。但是,这次计算判别式的 disc 函数将是私有函数。
在工作目录中创建一个名为private的子文件夹,将以下函数文件 disc.m 存储在其中-
function dis=disc(a,b,c) %函数计算判别式 dis=sqrt(b^2 - 4*a*c); end
在您的工作目录中创建一个函数quadratic3.m,然后在其中输入以下代码-
function [x1,x2]=quadratic3(a,b,c) % 这个函数返回根 d=disc(a,b,c); x1=(-b + d)/(2*a); x2=(-b - d)/(2*a); end
您可以从命令提示符处调用上述函数,如下所示:
quadratic3(2,4,-4)
MATLAB将执行上述语句并返回以下输出-
ans= 0.73205
全局变量可以由多个函数共享,为此,您需要在所有函数中将变量声明为全局变量。
全局声明必须在变量实际在函数中使用之前发生,最好将大写字母用作全局变量的名称,以将其与其他变量区分开。
让我们创建一个名为average.m的函数文件,并在其中输入以下代码-
function avg=average(nums) global TOTAL avg=sum(nums)/TOTAL; end
创建一个脚本文件并在其中键入以下代码-
global TOTAL; TOTAL=10; n=[34, 45, 25, 45, 33, 19, 40, 34, 38, 42]; av=average(n)
运行文件时,它将显示以下输出-
av= 35.500
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)