我在最新的 MATLAB 版本中使用了函数 dtw,并希望调整其中的一些部分。首先,我键入:
edit dtw
我将生成的代码保存到名为 dtw_Copy.m 的文件中,并将函数的名称更改为dtw_Copy
。使用一组输入参数x
和y
逐行浏览代码,大约在第 90 行:
[metric, varargin] = getmutexclopt({'absolute','euclidean','squared','symmkl'},'euclidean',varargin);
我收到一条错误消息:
未定义的函数"getmutexclopt"用于类型为"cell"的输入参数。
如果我不逐行浏览代码,只需键入dtw_Current(x,y)
,在再次测试一组输入参数x
和y
之后,我也会收到此错误消息。
运行时:
help 'getmutexclopt'
表示未找到getmutexclopt
。我也试过:
edit 'getmutexclopt'
但是我被告知currentDirectory/getmutexcloptm.m不存在。
我试过了:
which getmutexclopt
并被告知找不到getmutexclopt
。
在网上搜索时,我找到了一个资源,该资源似乎可以直接解决此错误。 该资源建议确保已安装工具箱。我不确定哪个工具箱支持函数getmutexclopt
,所以我在网站上输入函数名称。这将导致一条消息:"您的搜索 - getmutexclopt - 与任何文档都不匹配。
该资源还建议验证用于访问函数的路径。我按照说明进行操作,当我键入时:
which -all getmutexclopt
我收到:
currentDirectorymatlabtoolboxsignalsignalprivategetmutexclopt.m % Private to signal
这似乎表明该功能在信号工具箱中,哪个是私有的?是否有可能仍然运行dtw_Current(x,y)
和/或逐行运行其内容?
是的,这个问题是因为函数getmutexclopt
是一个私有函数。如果您希望从dtw
的副本安全地调用该函数,则需要复制该函数。它似乎是一个基本功能(在命令窗口中键入edit private/getmutexclopt.m
),因此您可以将其作为子功能添加到dtw_Copy
/dtw_Current
中。
另请参阅此问题 - 不允许将私有函数添加到搜索路径。