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表达式以及任意数量的输入和输出参数组成。

您可以直接在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)

%此函数返回

%二次方程。

%它需要3个输入参数

%x2,x和

%常数项

%它返回根

d = disc(a,b,c);

x1 = (-b + d) / (2a);
x2 = (-b - d) / (2
a);

end % end of quadratic

function dis = disc(a,b,c)

%函数计算判别式

dis = sqrt(b^2 - 4a 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 %嵌套函数

d = sqrt(b^2 - 4a c);

end % 结束函数disc

disc;

x1 = (-b + d) / (2a);
x2 = (-b - d) / (2
a);

end %结束函数 quadratic2

您可以从命令提示符处调用上述函数,如下所示:

quadratic2(2,4,-4)

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

ans = 0.73205

私有函数

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

私有函数位于具有特殊名称 Private 的子文件夹中。

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

实例

让我们重写quadratic函数。不过,这一次,disc函数计算判别式,将是一个私有函数。

在工作目录文件夹中创建一个名为 private 的子文件夹,在其中存储以下函数文件 disc.m

function dis = disc(a,b,c)

%函数计算判别式

dis = sqrt(b^2 - 4a c);

end %子函数结束

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

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

% 这个函数返回

% 一元二次方程。

它需要3个输入参数

% 它们是 x2,x 和

% 常数项

% 它返回根

d = disc(a,b,c);

x1 = (-b + d) / (2a);
x2 = (-b - d) / (2
a);

end %结束 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

相关推荐
顶呱呱程序4 小时前
2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
算法·matlab·音视频·matlab-gui·音频滤波·脉冲响应不变法
简简单单做算法6 小时前
基于Retinex算法的图像去雾matlab仿真
算法·matlab·图像去雾·retinex
其实吧316 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
Matlab程序猿小助手1 天前
【MATLAB源码-第208期】基于matlab的改进A*算法和传统A*算法对比仿真;改进点:1.无斜穿障碍物顶点2.删除中间多余节点,减少转折。
开发语言·嵌入式硬件·算法·matlab·机器人
IT猿手1 天前
基于卷积神经网络(CNN)的时间序列预测,15个输入1个输出,可以更改数据集,MATLAB代码
人工智能·深度学习·神经网络·算法·matlab·cnn
其实吧31 天前
基于MATLAB的运动车辆跟踪检测系统
开发语言·matlab
梦里水乡8572 天前
基于MATLAB的农业病虫害识别研究
开发语言·matlab
墨痕_7772 天前
论文阅读笔记Dense Passage Retrieval for Open-Domain Question Answering
matlab
真的是我22 天前
基于MATLAB课程设计-图像处理完整版
图像处理·人工智能·计算机视觉·matlab
顶呱呱程序3 天前
2-140 基于Solidworks和Matlab Simulink Simscape仿真的机器人手臂仿真
开发语言·matlab·机器人·simulink·simscape·机器人手臂仿真