2013-05-27 60 views
1

我试图写一个简单的功能,e.g函数和函数名错误

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

所以我创建一个名为function-name.m一个m文件,用指定的所有变量。然而,我打电话给functionname的m文件不喜欢这个名字,并且坚持称它为m文件的实际名称(,即,我得到错误not enough input arguments)。

我该如何解决这个问题?

回答

2

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

2

MATLAB documentation指出,该文件的名称和功能必须是相同的:

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

然而,是什么在实践中真正重要的是文件,在该文件中声明的主要功能不是名称的名称。例如,如果您的文件名为func.m,但里面的函数定义为function functionname(...),则需要将其作为func()而不是functionname()调用。尝试一下!

就你而言,情况更糟,因为文件名是“function-name.m”,所以它包含一个连字符。连字符在函数名称中是不允许的(MATLAB将它们解释为负号),所以你基本上被一个你无法调用的函数所困。

底线是,如果你不想遇到麻烦,按照MATLAB的要求去做,并保持文件和函数名称相同。

+0

谢谢你们两个 - 但我仍然无法让它工作! @Eitan,我已经将该函数与载有该函数的实际文件(使用.m,但是作为文本文件并且没有连字符,正如您所建议的)一样保存。现在,Matlab编辑器喜欢这个(并以绿色显示所有内容)。但是,当我运行它时,我仍然得到相同的错误味精“没有足够的输入参数”。当我在文本函数文件中定义函数时,是否需要遵守任何规则或“不要做”?谢谢你的提前。 – user2423335

+0

您是否试图通过从m文件编辑器中按F5来运行它?如果是这样,那就错了。您需要使用所有必需的输入参数从外部调用该函数(例如,从命令提示符处)。在你的例子中,你需要将5个输入参数传递给你的函数。 –

+1

谢谢你的回应。是的,我正在按F5运行它,这是错误的,但也有一个文件夹问题(该功能以某种方式保存在Matlab无法识别的地方)。修复这些,我的功能现在可以工作。谢谢! – user2423335