2

我正在尝试编写一个简单的函数,例如

function [x y] = functionname (a, b, c, d, e)

所以我创建了一个名为 的 m 文件function-name.m,其中指定了所有变量。但是,我从中调用的 m 文件functionname不喜欢该名称,并坚持将其称为 m 文件的实际名称(,我得到错误not enough input arguments)。

我该如何解决这个问题?

4

2 回答 2

4

你无法绕过它。在 MATLAB 中,您必须使用函数名称来命名文件。该文件中具有不同名称的任何函数都是私有的(对该 m 文件中的代码以外的任何代码均不可见)。

于 2013-05-27T00:13:12.473 回答
3

MATLAB 文档指出文件名和函数名必须相同:

将功能代码保存在带有.m扩展名的文本文件中。文件名应与文件中第一个函数的名称相匹配。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。

但是,实际上重要的是文件名,而不是该文件中声明的主函数的名称。例如,如果您的文件名为func.m,但其中的函数已定义function functionname(...),则您需要将其调用为func(),而不是functionname()。尝试一下!

在你的情况下更糟,因为文件名是“function-name.m”,所以它包含一个连字符。函数名称中不允许使用连字符(MATLAB 将它们解释为减号),因此您基本上会遇到无法调用的函数。

最重要的是,如果您不想麻烦,请按照 MATLAB 的要求进行操作,并保持文件和函数的名称相同。

于 2013-05-27T00:24:59.140 回答