一个函数是一组在一起执行任务的语句。 在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函数有五个输入参数和一个输出参数。

函数语句之后的注释行提供了帮助文本。当键入时,这些行被打印 -

Trial>> help mymax

This function calculates the maximum of the

five numbers given as input

现在,我们来调用这个函数 -

mymax(11,22,35,81,198)

执行上面代码,得到以下结果 -

Trial>> mymax(11,22,35,81,198)

ans =

198

匿名函数

匿名函数就像传统编程语言中的内联函数,在单个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

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

Trial>> quadratic(2,4,-4)

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.m函数,得到以下结果 -

Trial>> quadratic2(2,4,-4)

ans =

0.7321

私有函数

私有函数是仅在有限的其他函数组中可见的主函数。如果不想公开函数的实现,则可以将其创建为私有函数。

私有函数处在在专用名称为私有的子文件夹中。

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

示例

下面来重写二次函数。这一次,计算判别式的disc函数将是私有函数。

在工作目录中创建一个名为private的子文件夹(F:\worksp\matlab\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(对应目录为:F:\worksp\matlab),并在其中键入以下代码:

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

在Matlab命令行中,调用以上定义的函数 -

Trial>> quadratic3(2,4,-4)

ans =

0.7321

全局变量

全局变量可由多个函数共享。 为此,需要在所有函数中声明变量为全局变量。

如果要从基本工作区访问该变量,则在命令行中声明该变量。

全局声明必须在函数实际使用变量之前进行。 将大写字母用于全局变量的名称是一个很好的做法,以区别于其他变量。

示例

下面创建一个名为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)

执行上面示例代码,得到以下结果 -

Trial>> global TOTAL;

TOTAL = 10;

n = [36, 45, 35, 45, 33, 29, 50, 41, 58, 47];

av = average(n)

av =

41.9000

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

函数matlab,Matlab函数相关推荐

  1. matlab matlabpool,Matlab matlabpool函数undefined

    我尝试使用matlab并行计算功能. 我先输入"版本"来检查,如果我已经安装了并行计算工具箱,它确实Matlab matlabpool函数undefined >> ve ...

  2. 【MATLAB】函数句柄

    在MATLAB平台中,对函数的调用方法分为直接调用法和间接调用法. 1.直接调用函数,被调用的函数通常称为子函数.一个文件中只能有一个主函数. 2.函数句柄--提供一种间接调用函数的方法.创建函数句柄 ...

  3. MATLAB常用函数, 常见问题

    MATLAB常用函数 1.常用取整函数 round(x):四舍五入函数 floor(x) : 向下取整, 即 floor(1.2)=1,  floor(1.8) = 1 ceil(x) : 向上取整, ...

  4. matlab doc函数,matlab常用函数.doc

    matlab常用函数.doc MatLab 常用函数 1. 特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 name ...

  5. matlab 函数 向量参数,Scipy integrate(quad,quadration,nquad)不能集成向量参数化函数?等效函数(MATLAB works)...

    我正在将一些代码从MATLAB转换为python,并且正在努力获得一个函数,该函数以数组参数(作为参数)来使用Scipy进行集成.在 我已经将代码简化为一个在Scipy中产生相同错误的基本示例,而等效 ...

  6. matlab 某些函数

    某些函数 %用于matlab的注释 sz size yhat pred prediction s starting porint t terminus 一般来说,可以使用公式 r = a + (b-a ...

  7. matlab fsolve()函数的使用。

    前言:哎,没想到我最高访问量居然是这篇博文,想了一下重新布局了,因为以前版本的CSDN版本更新,现在的版本阅读性更强了.(更新2019.5) fsolve()函数通常用于数值求方程或方程组的解,更常用 ...

  8. matlab fsolve()函数的使用

    fsolve()函数通常用于数值求方程或方程组的解,更常用于求解非线性方程组.其基本结构如下:(可以在matlab命令页面输入help fsolve查询) fsolve()解决的方程形式为F(X)=0 ...

  9. Matlab绘图函数一览

    原文  http://www.cnblogs.com/liangliangh/p/3749016.html 要查看Matlab所有绘图函数,请从Matlab主界面菜单查看"绘图目录" ...

  10. matlab中imresize函数的用法,为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同

    为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同?今年 4 月,我在依照 MATLAB 代码自己写一个卷积神经网络 C++ 实现的过程中,就发现了这个问题,不过那 ...

最新文章

  1. Java 学习(1) ---JDK安装和配置环境变量
  2. UIProgressView的使用
  3. Spring学习(六)bean装配详解之 【通过注解装配 Bean】【基础配置方式】
  4. Linux上的node站点之centos配置nodejs运行环境笔记
  5. excel设置图片自动更新_智能Excel排班表,日期自动更新,三班排班一键统计,极简轻松...
  6. 如何实现 asp.net core 安全优雅退出 ?
  7. h5键盘把页面顶走了_微信h5开发的坑
  8. C 使用异或(xor)加密/解密文件
  9. centos7安装英伟达显卡驱动
  10. IDC发布中国AI云服务市场报告 百度智能云排名第一
  11. 清明时节雨纷纷,心思却剪不断,理还乱
  12. mac安装appium时执行appium-doctor命令提示command not found: appium-doctor
  13. 在PC上打开微信页面
  14. 谷粒商城笔记+踩坑(18)——购物车
  15. 获得除当前元素外的所有其他元素,并对其他元素进行设置
  16. Source not fount
  17. 如何测试人工智能软件?
  18. 声网sdk android接入,声网 SDK 接入以及音视频通话应用开发指南
  19. JXTA的安装和使用
  20. 『互联网架构』软件架构-git服务搭建与使用(四)

热门文章

  1. 跳出圈子易,再入围城难,重新学编程,且学且珍惜
  2. 用rate-limit来限制特定用户的流量
  3. 【转】在CSS中 ID与Class的区别?谢谢
  4. java 二叉堆_二叉堆(三)之 Java的实现
  5. ip pim spare 源树 和 共享树_iPhone通过内置应用与电脑传输共享文件指南
  6. 【温故知新】HTML学习笔记(表格)
  7. 在ABAP/4中声明表格控制
  8. 关于程序变式中动态选择的一点说明
  9. 惨绝人寰的日期函数,用的方便
  10. Smartforms Debug