从内部(Matlab)代码部分调用函数

时间:2018-03-02 15:46:47

标签: matlab function nested code-separation

我有一个庞大的脚本,由许多代码部分组成,我彼此独立运行。对于其中一些代码部分,有很多重复代码,所以我想定义一个我可以从给定代码部分多次调用的函数。但是,我要么得到错误"在此上下文中不允许使用函数定义。",或者,一旦代码执行到达函数调用,它就表示函数未定义。

所以似乎Matlab(2016b)不接受在代码部分中定义的函数,或者我正在做其他错误的事情。

我尝试了什么:

  • 将整个脚本定义为一个函数,其名称与包含.m文件的名称完全相同,并带有相应的' end'在最后一行

  • 在与其相关的代码部分的末尾定义包含重复代码的函数

  • ..或在文件末尾(在最顶层的功能之前'结束')

  • ..或在文件末尾(在最顶层的功能之后'结束')

我的代码组织可能会受到批评,例如我可能会在我的文件中使用多个函数,而不是脚本样式的代码部分。但是,我想知道是否有一种方法可以从代码段内部调用函数。

1 个答案:

答案 0 :(得分:1)

您需要阅读以下文档:

值得注意的是,第二个包含相关信息:

  

从R2016b开始,存储函数的另一个选项是将它们包含在脚本文件的末尾。

你说你正在使用R2016b,所以可以在脚本中定义函数,但它们必须位于文件的末尾。该文档包含以下包含函数的有效脚本示例:

x = 3;
y = 2;
z = perm(x,y)

function p = perm(n,r)
    p = fact(n)*fact(n-r);
end

function f = fact(n)
    f = prod(1:n);
end