-2

这与我在之前的 StackOverflow 帖子(MATLAB 中的未定义函数)中提出的问题类似。

基本上,我在最新的 MATLAB 版本中使用函数 dtw,并且想调整它的一些部分。首先,我输入:

edit dtw

我将生成的代码保存到名为 dtw_Copy.m 的文件中,并将函数的名称也更改dtw_Copy为。x使用一组输入参数和逐行浏览代码y,我收到一条错误消息:

Undefined function 'dtwmex' for input arguments of type 'double'.

如果我没有逐行检查代码,我也会收到此错误消息,只需dtw_Current(x,y)在再次测试一组输入参数xy.

运行时:

help 'dtwmex'

表示dtwmex没有找到。我也试过:

edit 'dtwmex'

但有人告诉我 currentDirectory/dtwmex.m 不存在。

在网上搜索,我发现了一个似乎可以直接解决此错误的资源。该资源建议确保已安装工具箱。我不确定哪个工具箱支持该功能,因此我在网站dtwmex中输入了功能名称。这会导致一条消息:“您的搜索 - dtwmex - 没有匹配任何文档。”

该资源还建议验证用于访问该函数的路径。我按照说明进行操作,然后输入:

which -all dtwmex

我收到:

currentDirectory\matlab\toolbox\signal\signal\private\dtwmex.mexw64  % Private to signal

这似乎表明该函数在信号工具箱中,这是私有的?是否有可能仍然运行dtw_Current(x,y)和/或逐行运行其内容?

我尝试打开 dtwmex.mexw64 文件以将其内容添加为子例程(就像我上一个问题中的解决方案一样),但被告知它无法打开。

4

1 回答 1

0

该函数是一个已编译的 mex 文件,private位于工具箱的文件夹中。private文件夹在 MATLAB 中是特殊的,它们的内容只能从父目录中的文件访问。在您的情况下,这意味着只有toolbox/signal/signal文件夹中定义的函数才能找到/调用此函数。如果你想访问这个 mex 文件,你真的有两个选择。

  1. 将修改后的函数也保存在信号处理工具箱文件夹中,然后它将能够看到该private文件夹​​。缺点是您正在修改 MATLAB 安装。

  2. 将位于private文件夹中的必要文​​件复制到从外部函数访问的位置(基本上除了文件夹之外的任何位置private)。

但是,这些都不是真正推荐的。

于 2016-06-17T18:54:31.550 回答