如何将函数和调用放在一个文件中?

时间:2013-04-10 09:56:13

标签: matlab

我希望有一个带有函数AND的文件,只需要很少的代码来调用该函数,例如:

function foo()
   ...
end

foo()

我想将这些代码保存到名为“everything.m”的文件(一个文件)中,然后在Matlab / Octave控制台中键入“everything”,我的函数foo将被定义并调用。

3 个答案:

答案 0 :(得分:2)

执行此类操作的常见方法是使用名为everything.m

的脚本
% everything.m
foo();

以及您希望能够使用的每个函数的一个文件:

% foo.m
function foo()
   ...
end

执行everything.m然后调用您要调用的所有函数(以及您可能希望在该阶段执行的任何其他任务)。

将所有函数放在Matlab路径上,意味着它们是“已定义”的(可从Matlab命令提示符或其他函数内部访问)。这是“Matlab方式”:)

请注意,每个文件可以有多个函数,

% bar.m 

function bar()
    otherFunction();  % WORKS OK 
end

function otherFunction()
    ...
end

只有最顶层的函数才能在Matlab命令提示符下看到:

>> bar 
>> % no error
>> 
>> otherFunction
??? Undefined function or variable 'otherFunction'.

答案 1 :(得分:1)

在Matlab中,您无法混合脚本和函数。所以在你的情况下,为了调用foo(),你需要编写另一个函数,否则matlab编译器会抱怨。

所以everything.m应该有一个名为everything的函数,您可以在其中调用foo()

这里有一个类似的问题

MATLAB script code and function code in the same file?

答案 2 :(得分:0)

我认为您可以在脚本中编写代码,然后使用相同的函数名称保存它。例如,如果您的函数是foo,则比保存文件时,其名称必须是:foo.m。从命令行调用foo会执行该函数。如果只想在没有输入参数的情况下调用函数,则必须在关键字“function”和“end”之间定义所需的所有变量。此外,只有当前文件夹是保存功能的文件夹时,才能成功调用该功能。如果你从另一个目录调用该函数,你将收到一个错误。要使函数“全局”工作,您应该将其添加到“matlab路径”。希望这对你有所帮助。