MATLAB 说函数未定义
MATLAB is saying th function is undefined
我正在编写一个脚本来访问另一个脚本中编写的函数。
当我 运行 第二个脚本时,错误是函数未定义。
我一直在逆向工作,目前正在尝试让函数在命令 window 中工作。
函数文件已出现在当前文件夹window。当它突出显示时,所有功能和参数都显示在下面的 window 中(在顶部显示文件名,然后显示文件内容)。
当我将脚本中的函数调用复制并粘贴到命令 window 时,我仍然得到一个未定义的函数。
我尝试在单独的脚本中单独重建函数,但我仍然收到一条错误消息。
我已经确定它们在同一个文件夹中,并且拼写完全相同,我做错了什么?
'''
%文件名Lab_5_functions.m
function[vel] = velocity (g,m,co_d,t)
vel= ((g*m)/co_d)^(1/2)*tanh(((g*co_d)/m)^(1/2)*t);
end
function [dvel]= dvelocity (g,m,co_d,t)
dvel=(((.5*(g*m)/co_d)^(1/2)*tanh(((g*co_d)/m).^(1/2)*t_sec))-(((g*t)/(2*m))*(sech(((g*co_d)./m).^(1/2)*t))));
end
'''
v=速度(1,2,3,4)
%错误信息如下:
未定义函数或变量 'velocity'。
'''
谢谢
-MK
Matlab 正在使用文件名搜索函数。因此,您在文件 myfunc.m
.
中定义了一个 public 函数 myfunc
您可以在该文件中定义其他函数,但在 .m
文件之外无法访问它们。
MATLAB 通过查找文件名来查找函数,并期望该文件的第一行是函数定义。
例如:myfunc.m
function output = myfunc(input)
如果您确实希望在一个文件中包含多个函数(例如 module/library),我之前使用过一种变通方法:将所有函数写入文件中,然后包含一个 if-else 块来调用正确的功能。可以通过一些简单的检查来解析多个参数(参见 nargin
函数)。这是一个不太优雅的解决方案;我只在我有很多简单的功能时才使用它,而且有一堆 .m 文件会很烦人。
这是一个简单的例子:
调用文件:myfunc.m
function output = myfunc(fn, arg1, arg2, ...)
function out = func1(arg1, arg2, ...)
out = 0
if strcmp(fn, 'func1')
if nargin == 2
output = func1(arg1)
end
elseif strcmp(fn, 'func2')
...
end
我正在编写一个脚本来访问另一个脚本中编写的函数。
当我 运行 第二个脚本时,错误是函数未定义。
我一直在逆向工作,目前正在尝试让函数在命令 window 中工作。
函数文件已出现在当前文件夹window。当它突出显示时,所有功能和参数都显示在下面的 window 中(在顶部显示文件名,然后显示文件内容)。
当我将脚本中的函数调用复制并粘贴到命令 window 时,我仍然得到一个未定义的函数。
我尝试在单独的脚本中单独重建函数,但我仍然收到一条错误消息。
我已经确定它们在同一个文件夹中,并且拼写完全相同,我做错了什么?
''' %文件名Lab_5_functions.m
function[vel] = velocity (g,m,co_d,t)
vel= ((g*m)/co_d)^(1/2)*tanh(((g*co_d)/m)^(1/2)*t);
end
function [dvel]= dvelocity (g,m,co_d,t)
dvel=(((.5*(g*m)/co_d)^(1/2)*tanh(((g*co_d)/m).^(1/2)*t_sec))-(((g*t)/(2*m))*(sech(((g*co_d)./m).^(1/2)*t))));
end
''' v=速度(1,2,3,4) %错误信息如下: 未定义函数或变量 'velocity'。 '''
谢谢 -MK
Matlab 正在使用文件名搜索函数。因此,您在文件 myfunc.m
.
myfunc
您可以在该文件中定义其他函数,但在 .m
文件之外无法访问它们。
MATLAB 通过查找文件名来查找函数,并期望该文件的第一行是函数定义。
例如:myfunc.m
function output = myfunc(input)
如果您确实希望在一个文件中包含多个函数(例如 module/library),我之前使用过一种变通方法:将所有函数写入文件中,然后包含一个 if-else 块来调用正确的功能。可以通过一些简单的检查来解析多个参数(参见 nargin
函数)。这是一个不太优雅的解决方案;我只在我有很多简单的功能时才使用它,而且有一堆 .m 文件会很烦人。
这是一个简单的例子:
调用文件:myfunc.m
function output = myfunc(fn, arg1, arg2, ...)
function out = func1(arg1, arg2, ...)
out = 0
if strcmp(fn, 'func1')
if nargin == 2
output = func1(arg1)
end
elseif strcmp(fn, 'func2')
...
end