MATLAB - 函数声明

MATLAB - 函数声明 首页 / MATLAB入门教程 / MATLAB - 函数声明

函数是一起执行任务的一组语句,在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 并在其中输入以下代码-

链接:https://www.learnfk.comhttps://www.learnfk.com/matlab/matlab-functions.html

来源:LearnFk无涯教程网

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Android开发高手课 -〔张绍文〕

浏览器工作原理与实践 -〔李兵〕

Node.js开发实战 -〔杨浩〕

To B市场品牌实战课 -〔曹林〕

代码之丑 -〔郑晔〕

跟着高手学复盘 -〔张鹏〕

零基础实战机器学习 -〔黄佳〕

大数据经典论文解读 -〔徐文浩〕

JavaScript进阶实战课 -〔石川〕

好记忆不如烂笔头。留下您的足迹吧 :)