Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB:包含我所有函数的脚本_Matlab - Fatal编程技术网

MATLAB:包含我所有函数的脚本

MATLAB:包含我所有函数的脚本,matlab,Matlab,也许这是一个基本的问题,但我来了。我希望有一个.m,其中包含其他脚本和函数将访问的所有函数 我试着用所有函数编写一个脚本,然后在其他函数代码中调用它 我得到了一个错误。你能告诉我怎么解决这个问题吗 我正在尝试这个,它没有给我任何错误,并且做了我想要它做的事情,但是,这是一个好方法吗?有什么建议吗 function PruebasLlamaFuncion funcionFEM=@PruebasTodasFunciones; a=funcionFEM('OVERPOWER',1,5)

也许这是一个基本的问题,但我来了。我希望有一个.m,其中包含其他脚本和函数将访问的所有函数

我试着用所有函数编写一个脚本,然后在其他函数代码中调用它

我得到了一个错误。你能告诉我怎么解决这个问题吗

我正在尝试这个,它没有给我任何错误,并且做了我想要它做的事情,但是,这是一个好方法吗?有什么建议吗

function PruebasLlamaFuncion
    funcionFEM=@PruebasTodasFunciones;
    a=funcionFEM('OVERPOWER',1,5)
    b=funcionFEM('POWEROVERWELMING',2)
end

...


  function a=f(nombre,varargin)
     f=str2func(nombre)
     a=f(varargin{1:end});

  end
  function d=OVERPOWER(J,c)

     d=J*c;

  end

  function e=POWEROVERWELMING(J)
     e=J;
  end

我想你误解了什么。脚本用于按顺序调用一系列函数/其他脚本。如果您只想在其他代码中访问您的函数,那么只需要确保它们在路径上。您永远不需要“包含所有函数的脚本”。您可能会想到,但这些与您想要的正好相反(不能从定义它们的函数或同一文件中的其他本地函数的外部调用它们)

e、 g.如果
Function1
Function2
在您的路径上,您可以编写这样的脚本,也许可以作为如何使用这两个函数的演示:

a = 0;
b = 1;
c = 2;
d = 'Unicorns';
Result=Function1(a,b,c); 
Result2=Function2(b,d);
它没有也不应该包含任何函数定义。如果脚本找不到函数,请使用
addpath
()将这些函数文件所在的文件夹放入路径中。m文件应具有相同的名称,例如,以下文件需要放入名为
myfunc.m

function result = myfunc(a,b,c)
即使工作目录不在您的路径上,也可以调用该目录中的函数。

Function placement 与许多其他语言不同,Matlab允许单个文件只包含一个系统其余部分可见的主函数。主函数是第一个函数。()

调用在主函数体之后定义的任何函数。这些函数各自创建各自独立的工作区(作用域),可以相互调用,当然也可以由主函数调用

调用在主函数体中定义的任何函数。这些函数有自己的工作空间,但也可以访问和更改其父函数的变量。同一嵌套级别的嵌套函数可以相互调用,也可以调用本地函数,但本地函数不能调用嵌套函数,因为它们超出范围


权变措施 根据您希望继续的方式,您可以选择几个选项。 冒着给出太多选择的风险,但我希望能够详尽无遗,我会把清单从我首先要做的事情列到我最后要做的事情。 对于大多数事情,我会推荐1或2。 其他选项更多用于创建库/API,但我包含它们是为了展示可以做什么

  • 在Matlab路径或当前工作目录中的单独m文件中定义Function1和Function2,以正常调用它们

  • 将工作的主体(调用函数的主体)包装到函数本身中,并将其他函数定义为本地函数或嵌套函数。例如:

  • 您可以更进一步,使用一个函数返回本地或嵌套函数的函数句柄(指针),然后使用(在示例中)结构调用另一个脚本中的函数:
  • 如果有,可以使用函数创建所有本地函数的句柄单元数组(在本例中,定义必须位于主函数体之外),执行与上述相同的操作
  • 还可以创建具有静态函数的类:

  • 我希望这是有意义的,也希望能有所帮助。

    你应该粘贴一些代码和你的错误。我将编辑我的帖子以显示我的工作内容
    function output = main(a,b,c)
      Result=Function1(a,b,c); 
      Result2=Function2(b,d);
      ...
    
      % You can define Function1 and Function2 here for nested functions
    end
      % Or you can define Function1 and Function2 here for local functions
    
    function Functions = GetFunctions()
      Functions.F1 = @(a,b,c) Function1(a,b,c); 
      Functions.F2 = @(a,b)   Function2(a,b); 
    
      % You can define Function1 and Function2 here for nested functions
    end
      % Or you can define Function1 and Function2 here for local functions
    
    function Functions = GetFunctions()
      Functions = localfunctions(); % R2013b+ only
    end
      % Define Function1 and Function2 here for local functions
    
    classdef Functions
      methods(Static)
        % Define Function1 and Function2 here and call them just like the struct above.
      end
    end