MATLAB:包含我所有函数的脚本
也许这是一个基本的问题,但我来了。我希望有一个.m,其中包含其他脚本和函数将访问的所有函数 我试着用所有函数编写一个脚本,然后在其他函数代码中调用它 我得到了一个错误。你能告诉我怎么解决这个问题吗 我正在尝试这个,它没有给我任何错误,并且做了我想要它做的事情,但是,这是一个好方法吗?有什么建议吗MATLAB:包含我所有函数的脚本,matlab,Matlab,也许这是一个基本的问题,但我来了。我希望有一个.m,其中包含其他脚本和函数将访问的所有函数 我试着用所有函数编写一个脚本,然后在其他函数代码中调用它 我得到了一个错误。你能告诉我怎么解决这个问题吗 我正在尝试这个,它没有给我任何错误,并且做了我想要它做的事情,但是,这是一个好方法吗?有什么建议吗 function PruebasLlamaFuncion funcionFEM=@PruebasTodasFunciones; a=funcionFEM('OVERPOWER',1,5)
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,但我包含它们是为了展示可以做什么
我希望这是有意义的,也希望能有所帮助。你应该粘贴一些代码和你的错误。我将编辑我的帖子以显示我的工作内容
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