1

我想要一个带有函数和调用该函数的代码很少的文件,例如:

function foo()
   ...
end

foo()

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

4

3 回答 3

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'.
于 2013-04-10T10:32:44.657 回答
1

在 Matlab 中,您不能混合使用脚本和函数。因此,在您的情况下,为了调用 foo() 您需要编写另一个函数,否则 matlab 编译器会抱怨。

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

这里有一个类似的问题

MATLAB脚本代码和函数代码在同一个文件中?

于 2013-04-10T11:26:32.373 回答
0

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

于 2013-04-10T10:10:29.727 回答