是否可以将多个方法放在与主classdef文件分开的单个.m文件中?

时间:2018-01-15 15:57:48

标签: matlab oop

我有一个有很多方法的课。我知道我可以在@Class文件夹中讲述单独的函数。由于某些函数是相关的,我想知道是否可以在单个方法文件中存储多个函数。 原因是我希望事情保持清晰和有条理。

3 个答案:

答案 0 :(得分:2)

否:您可以将课程存储在单个文件中,也可以使用@文件夹。如果使用@文件夹,则可以将方法存储在主类文件中,也可以存储在每个方法的单个文件中。但是,您可以在主类文件中使用多个方法。

答案 1 :(得分:1)

不,你不能。从M文件外部只能看到M文件中的第一个函数。其他功能是私人的。

请注意,@Class文件夹中的常规函数​​和类方法之间没有区别,除非MATLAB仅在其中一个输入参数调度时调度@Class文件夹中的函数类。

MATLAB文档的相关部分:

答案 2 :(得分:1)

您可以做的一件事是创建一个函数,通过基于其中一个输入创建处理程序来调用文件中的其他函数之一。然而,这更像是在文件中构建一个巨大的开关盒来处理不同的功能,并可能导致许多错误潜力:

{0,5}

因此,通过将所需函数的名称作为字符串传递,您可以通过文件的主函数将其作为私有函数进行处理。

function X=multifun(varargin)   
   if (nargin==0)
      X='first of many error potentials';
      return
   end
   functionhandle=str2func(varargin{1});
   X=functionhandle(varargin(2:end));   
end

function x=a(varargin)
    x=sum([varargin{1}{:}]);
end

function x=b(varargin)
    x=mean([varargin{1}{:}]);
end

然而,你再次看到输入参数(multifun('a',2,3) ans = 5 multifun('b',2,3) ans = 2.5000 )会发生什么,这只是一种可怕的做法。所以

理论可能 - 是的。

值得推荐 - 不。