par*_*ser 0 matlab function-pointers file function
可能重复:
是否可以在MATLAB中为每个文件定义多个函数?
为了在MATLAB中定义(非匿名)函数,您需要创建一个与函数同名的文件; 例如,一个名为myfunc的函数可以在文件myfunc.m中定义,如下所示:
function rtn = myfunc(arg)
% do some stuff
end
Run Code Online (Sandbox Code Playgroud)
假设在同一个文件myfunc.m中,我还有一个子函数,如
function rtn = myfunc(arg)
% do some stuff
end
function rtn = mysubfunc(arg)
% do some other stuff
end
Run Code Online (Sandbox Code Playgroud)
据我所知,没有办法访问mysubfunc从执行的以外的任何地方发生subfunc.m文件.在MATLAB(R2010b)中,我一直并且继续被这个小小的特质所困扰.我错了-有任何方法来调用mysubfunc从外部myfunc.m?
更新:新问题:有什么好办法吗?或者我应该真的只是吮吸它并继续制作更多文件?
您可以在实用程序类中使它们成为所有静态方法.这些函数可以按名称全局引用,但您只需要管理一个M文件.
classdef mystuff % in mystuff.m
%MYSTUFF Utility functions for something or other...
methods (Static = true)
function rtn = myfunc(arg)
disp('myfunc');
end
function rtn = mysubfunc(arg)
disp('mysubfunc');
end
end
end
Run Code Online (Sandbox Code Playgroud)
在缺点方面,您需要限定或导入对它们的所有引用,例如mystuff.myfunc()."import mystuff.*"可以为类外的代码处理这个问题.
import mystuff.*
myfunc()
mysubfunc()
Run Code Online (Sandbox Code Playgroud)
在类中,函数之间的调用需要限定.(Matlab的MCOS语法中的大问题,恕我直言.)此外,它们比常规函数有更多的调用开销,因此如果你在紧密循环中调用它们,你的代码会更慢.从好的方面来说,现在他们是班级成员,你可以重构他们以利用私人类字段和功能等等.
如果要组织代码库,可以将它们放在名称空间中,方法是将它们放在名称以"+"开头的目录中.相同数量的文件,但至少你有一些结构给你的目录.