【发布时间】:2011-05-12 05:34:17
【问题描述】:
可能重复:
Is it possible to define more than one function per file in MATLAB?
为了在 MATLAB 中定义一个(非匿名的)函数,您需要创建一个与该函数同名的文件;例如,可以在文件 myfunc.m 中定义一个名为 myfunc 的函数,如下所示:
function rtn = myfunc(arg)
% do some stuff
end
假设在同一个文件myfunc.m中,我也有一个子函数,如
function rtn = myfunc(arg)
% do some stuff
end
function rtn = mysubfunc(arg)
% do some other stuff
end
AFAIK,在 subfunc.m 文件之外的任何地方执行都无法访问 mysubfunc。我一直并且继续对 MATLAB (R2010b) 中的这个小特性感到恼火。我错了吗 - 是否有 任何 方法可以从 myfunc.m 外部调用 mysubfunc?
更新: 新问题:有什么好的方法可以做到这一点吗?还是我真的应该忍气吞声,继续制作更多文件?
【问题讨论】:
-
不,你必须接受它。我使用半命名空间方法来减少混乱并鼓励我重用自己的代码(例如,在项目“heatflux”中,我将使用 hf_ 开始所有函数名)。
-
您的目标是什么?您是否只想减少将每个函数放在单独文件中的混乱情况?
-
如果你需要在 myfunc 之外访问 subfunc,那么几乎按照定义,它不应该是一个子函数。应为仅与封闭函数上下文相关的通用功能保留子函数。
-
我们的目标是确实减少混乱(文件数量和认知单位)。我正在以数字方式解决一个问题,并且有一组不同的可能迭代方案,它们都采用相同的输入并产生相同的输出。以前,正在运行 iterate 函数并切换哪个迭代方案,但 classdef 是一个非常干净的解决方案。想要在文件外部运行子功能以进行测试,同时快速制作新方法的原型。
标签: function matlab file function-pointers