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