我试图写一个简单的功能,e.g:函数和函数名错误
function [x y] = functionname (a, b, c, d, e)
所以我创建一个名为function-name.m
一个m文件,用指定的所有变量。然而,我打电话给functionname
的m文件不喜欢这个名字,并且坚持称它为m文件的实际名称(,即,我得到错误not enough input arguments
)。
我该如何解决这个问题?
我试图写一个简单的功能,e.g:函数和函数名错误
function [x y] = functionname (a, b, c, d, e)
所以我创建一个名为function-name.m
一个m文件,用指定的所有变量。然而,我打电话给functionname
的m文件不喜欢这个名字,并且坚持称它为m文件的实际名称(,即,我得到错误not enough input arguments
)。
我该如何解决这个问题?
你无法绕过它。在MATLAB中,您必须使用函数的名称命名文件。该文件中具有不同名称的任何函数都是私有的(对于该m文件内的代码以外的任何代码都不可见)。
的MATLAB documentation指出,该文件的名称和功能必须是相同的:
保存与
.m
扩展名的文件的功能代码。文件的名称应该与文件中第一个函数的名称相匹配。有效的函数名称以字母字符开头,可以包含字母,数字或下划线。
然而,是什么在实践中真正重要的是文件,在该文件中声明的主要功能不是名称的名称。例如,如果您的文件名为func.m
,但里面的函数定义为function functionname(...)
,则需要将其作为func()
而不是functionname()
调用。尝试一下!
就你而言,情况更糟,因为文件名是“function-name.m”,所以它包含一个连字符。连字符在函数名称中是不允许的(MATLAB将它们解释为负号),所以你基本上被一个你无法调用的函数所困。
底线是,如果你不想遇到麻烦,按照MATLAB的要求去做,并保持文件和函数名称相同。
谢谢你们两个 - 但我仍然无法让它工作! @Eitan,我已经将该函数与载有该函数的实际文件(使用.m,但是作为文本文件并且没有连字符,正如您所建议的)一样保存。现在,Matlab编辑器喜欢这个(并以绿色显示所有内容)。但是,当我运行它时,我仍然得到相同的错误味精“没有足够的输入参数”。当我在文本函数文件中定义函数时,是否需要遵守任何规则或“不要做”?谢谢你的提前。 – user2423335
您是否试图通过从m文件编辑器中按F5来运行它?如果是这样,那就错了。您需要使用所有必需的输入参数从外部调用该函数(例如,从命令提示符处)。在你的例子中,你需要将5个输入参数传递给你的函数。 –
谢谢你的回应。是的,我正在按F5运行它,这是错误的,但也有一个文件夹问题(该功能以某种方式保存在Matlab无法识别的地方)。修复这些,我的功能现在可以工作。谢谢! – user2423335