亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> 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)

%This function calculates the maximum of the
% five numbers given as input
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 表达式和任意数量的输入和输出参数组成。

您可以直接在 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 的函数来计算二次方程的根。该函数将采用三个输入,即二次系数、线性系数和常数项。它会返回根源。

函数文件 quadratic.m 将包含主函数 quadratic 和子函数 disc ,计算判别式。

创建函数文件quadratic.m 并在其中输入以下代码 -

function [x1,x2] = quadratic(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of quadratic

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end   % end of sub-function

您可以从命令提示符调用上述函数 -

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  % nested function
d = sqrt(b^2 - 4*a*c);
end   % end of function disc

disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of function quadratic2

您可以从命令提示符调用上述函数 -

quadratic2(2,4,-4)

MATLAB 将执行上述语句并返回以下结果 -

ans =  0.73205

私有函数

私有函数是仅对有限的一组其他函数可见的主要函数。如果您不想公开函数的实现,可以将它们创建为私有函数。

私有函数位于子文件夹 具有特殊名称 private .

它们仅对父文件夹中的函数可见。

示例

让我们重写二次 功能。然而,这一次,disc 计算判别式的函数,将是一个私有函数。

在工作目录中创建一个名为 private 的子文件夹。存放如下函数文件disc.m 在里面 -

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end      % end of sub-function

在您的工作目录中创建一个函数 quadratic3.m 并在其中键入以下代码 -

function [x1,x2] = quadratic3(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 

x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end      % end of quadratic3

您可以从命令提示符调用上述函数 -

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

MATLAB

  1. Stratasys Insight 中的 10 个热门函数
  2. 带有程序示例的 C++ 函数
  3. 带有示例的 Python Lambda 函数
  4. Verilog 函数
  5. C - 函数
  6. MATLAB - 概述
  7. MATLAB - 变量
  8. MATLAB - 命令
  9. MATLAB - 数据类型
  10. MATLAB - 矩阵
  11. MATLAB - 数字
  12. MATLAB - 字符串