Matlab——函数和脚本的区别&在脚本中创建局部函数

脚本和函数的区别

函数:定义输入参数和输出参数的对应关系,方便外部调用,有函数 Function...end 声明。

脚本:一堆命令堆在一起,按照顺序执行,完成某一项任务的文件。没有 Function 函数声明。

函数定义:

Function 输出变量=函数名称(输入变量)

语句; 

end;

function用来定义函数,一般一个函数放在一个.m文件里。举个简单的例子建立一个myfunction.m,然后在文件中写。
function y=myfunction(a,b)
其中a,b是输入函数的参数,y是函数返回的值。当需要返回多个值时,可以将y看作一个数组,或者直接将函数的开头写成如function [x,y]=myfunction(x,y)的形式。
然后就是定义函数的内容,通俗的说就是怎样由输入参数a,b得到返回值y。比如最简单的y=a+b。

总结一下,将下面的代码
function y=myfunction(a,b)
y=a+b;
保存为一个m文件myfunction.m,调用方式如下。
num=myfunction(3,4);
这样就可以由函数中的y=a+b得到num的值是3+4=7。

无返回值函数定义:  function yourfcn(a,b,c)

在脚本中创建局部函数

从 R2016b 开始,MATLAB® 脚本(包括实时脚本)可以包含用于定义函数的代码。这些函数称为局部函数。局部函数在您要重用脚本中的代码时很有用。通过添加局部函数,可以避免创建和管理单独的函数文件。在尝试不同函数时,局部函数也很有用,可根据需要轻松添加、修改和删除它们。

创建包含局部函数的脚本

要创建包含局部函数的脚本或实时脚本,请转至主页选项卡,然后选择新建 > 脚本新建 > 实时脚本。然后,向脚本中添加代码。在文件末尾的脚本代码后,添加所有局部函数。在局部函数之前包含至少一行脚本代码。每个局部函数必须以其自己的函数定义语句开头,以 end 关键字结尾。函数可以按任意顺序显示。

例如,创建名为 mystats.m 的脚本。

edit mystats

在文件中,包括两个局部函数,mymean 和 mymedian。脚本 mystats 声明一个数组,确定数组的长度,然后使用局部函数 mymean 和 mymedian 计算数组的平均值和中位数。

x = 1:10;
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);

function a = mymean(v,n)
% MYMEAN Local function that calculates mean of array.

    a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Local function that calculates median of array.

    w = sort(v);
    if rem(n,2) == 1
        m = w((n + 1)/2);
    else
        m = (w(n/2) + w(n/2 + 1))/2;
    end
end

当您在实时脚本中添加局部函数时,MATLAB 会自动在第一个局部函数的定义之前添加一个分节符,并删除该函数后面的所有分节符。这是因为实时脚本不支持局部函数中的单个节。

运行具有局部函数的脚本

要运行包含局部函数的脚本或实时脚本,请在编辑器实时编辑器选项卡中,点击  运行按钮。您还可以在命令行窗口中键入已保存脚本的名称。

要运行单个节,请将光标放在该节内,并使用  运行节按钮(.m 文件需要 R2017b 或更高版本)。在 .mlx 文件中,您只能运行位于局部函数定义之前的节。

局部函数和变量的限制

局部函数仅在定义了这些函数的文件中可见。它们对其他文件中的函数不可见,并且不能从命令行窗口来调用。

当前文件中的局部函数优先于其他文件中的函数。即,当您在脚本内调用某个函数时,MATLAB 会先检查该函数是否为局部函数,然后在其他位置查找该函数。这样您可以在创建特定函数的备用版本的同时,将原始版本保留在另一文件中。

脚本可在基础工作区中创建变量并进行访问。局部函数与所有其他函数类似,具有与基础工作区分开的专属工作区。局部函数无法访问其他函数的工作区或基础工作区中的变量,除非您将这些变量作为参数传递。

访问有关局部函数的帮助

虽然您不能从命令行或其他文件中的函数调用局部函数,但您可以使用 help 命令访问其帮助。同时指定脚本和局部函数的名称,用 > 字符将它们隔开。

例如:

help mystats>mymean
 mymean Local function that calculates mean of array.

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值