【问题标题】:MATLAB is saying th function is undefinedMATLAB 说这个函数是未定义的
【发布时间】:2019-10-05 18:57:24
【问题描述】:

我正在编写一个脚本来访问另一个脚本中编写的函数。

当我运行第二个脚本时,错误是函数未定义。

我一直在向后工作,目前正试图让该功能在命令窗口中工作。

函数文件已出现在当前文件夹窗口中。当它突出显示时,所有功能和参数都显示在下面的窗口中(在顶部显示文件名,然后是文件内容)。

当我将脚本中的函数调用复制并粘贴到命令窗口中时,我仍然发现函数未定义。

我尝试在单独的脚本中单独重建函数,但我仍然收到错误消息。

我已经确定它们在同一个文件夹中,并且拼写完全一样,我做错了什么?

''' %文件名 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) %错误信息如下: 未定义的函数或变量“速度”。 '''

谢谢 -MK

【问题讨论】:

    标签: matlab function undefined-function


    【解决方案1】:

    Matlab 正在使用文件名搜索函数。因此,您在文件 myfunc.m 中定义了一个公共函数 myfunc

    您可以在该文件中定义其他函数,但在 .m 文件之外无法访问它们。

    【讨论】:

    • 我使用 which 函数找到确切的文件位置,然后尝试创建文件路径,现在每次运行命令时都会弹出错误提示使用 eval 时出错。跨度>
    • 同样,每当我使用 load 命令时,它都会说 .m 文件不存在。
    • 您好,可以从您的 cmets 中找出答案,谢谢!
    【解决方案2】:

    MATLAB 查找文件名以查找函数,并期望该文件的第一行是函数定义。

    例如:myfunc.m

    function output = myfunc(input)
    

    如果您确实需要在一个文件中包含多个函数(例如模块/库),我之前使用过一种解决方法:将所有函数写入文件中,然后包含一个 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
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多