【问题标题】:How to put a function and a call of it in one file? [duplicate]如何将一个函数和它的调用放在一个文件中? [复制]
【发布时间】:2013-04-10 09:56:12
【问题描述】:

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

function foo()
   ...
end

foo()

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

【问题讨论】:

  • 两个文件有什么问题?或者您想在一个文件中包含多个函数?
  • 丹是对的,您可以将多个功能保存在一个文件中。但请记住,您不能混合使用脚本和函数。所以在你的情况下,为了调用 foo() 你可能需要编写另一个函数,否则 matlab 编译器会抱怨。
  • @Dan,我想在一个文件中包含许多函数以及对其中一个函数的调用。
  • @Entropiece,谢谢,你能把这个作为答案发布,这样我可以接受吗?
  • 好像是classes :)

标签: matlab


【解决方案1】:

做这种事情的常用方法是有一个名为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'.

【讨论】:

    【解决方案2】:

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

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

    这里有一个类似的问题

    MATLAB script code and function code in the same file?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多