使用MATLAB,为什么像fts.data这样的东西可以在一个目录中工作,而不能在另一个目录中工作?

使用MATLAB,为什么像fts.data这样的东西可以在一个目录中工作,而不能在另一个目录中工作?,matlab,Matlab,我正在使用一个名为FINTS的金融工具盒。如果我从工具箱目录中复制一些代码来定制它,当我尝试执行类似fts.data的操作时,`我得到 对象中不存在指定的字段“data” 但是同样的事情在MATLAB库目录中也可以正常工作。它们都在我的路径中,所以我还需要更改什么?确保从根目录指定路径,而不是相对路径 比如说 addpath 'c:\...\...\MATLAB\mytoolbox 不是 如果更改工作目录,后者将中断请确保从根目录指定路径,而不是相对路径 比如说 addpath 'c:\...

我正在使用一个名为FINTS的金融工具盒。如果我从工具箱目录中复制一些代码来定制它,当我尝试执行类似fts.data的操作时,`我得到

对象中不存在指定的字段“data”


但是同样的事情在MATLAB库目录中也可以正常工作。它们都在我的路径中,所以我还需要更改什么?

确保从根目录指定路径,而不是相对路径

比如说

addpath 'c:\...\...\MATLAB\mytoolbox
不是


如果更改工作目录,后者将中断

请确保从根目录指定路径,而不是相对路径

比如说

addpath 'c:\...\...\MATLAB\mytoolbox
不是


如果您更改您的工作目录,后者将被破坏,我想,但是我还没有检查关于这个目录的文档,它的一个特点是类
FINTS
必须在目录
@FINTS
中定义。因此,如果要扩展该类,必须将代码放入该目录中。如果您想处理类
MYFINTS
,则需要将代码放入目录
@MYFINTS

我想,但我还没有检查关于这个的文档,它的一个特点是类
FINTS
必须在目录
@FINTS
中定义。因此,如果要扩展该类,必须将代码放入该目录中。如果您想处理类
MYFINTS
,则需要将代码放入目录
@MYFINTS

好吧,我想出来了。MATLAB在以类命名的方法目录中定义类方法。因此在本例中,类是
fints
,因此它的所有方法都在
@fints
中。我所要做的就是在我自己的工作区中创建一个名为
@fints
的新目录,它将成为
fints
的另一个类方法。通过调用
what className

可以查看类的所有方法好的,我已经找到了。MATLAB在以类命名的方法目录中定义类方法。因此在本例中,类是
fints
,因此它的所有方法都在
@fints
中。我所要做的就是在我自己的工作区中创建一个名为
@fints
的新目录,它将成为
fints
的另一个类方法。通过调用
what className

可以看到一个类的所有方法。我的所有路径都不是相对的,但我认为这不是路径问题,因为我可以在任意一个目录下运行脚本。但它似乎不知道@FINTS/目录外的FINTS是什么。我所有的路径都不是相对的,但我不认为这个问题是路径问题,因为我可以在任意一个目录下运行脚本。但它似乎不知道FINTS在@FINTS/目录之外是什么。我发现了更多信息:原始文件所在的目录是@FINTS目录,这意味着它与FINTS类有关。如何定义与此类相关的本地文件?我发现了更多信息:原始文件所在的目录是@fints目录,这意味着它与类fints相关。如何定义与该类相关的本地文件?如果您使用的是较新版本的MATLAB,我会小心创建多个@文件夹。下面是一段引用自“在MATLAB版本5到7中,@-folders不会对具有相同名称的其他@文件夹进行阴影处理,而是驻留在稍后的路径文件夹中。相反,该类是由具有相同名称的所有@文件夹中的方法组合定义的。这不再是事实。”该链接中给出的示例说明了这一点。如果您使用的是较新版本的MATLAB,我会对创建多个@文件夹持谨慎态度。这里引用的是“在MATLAB版本5到7中,@-folders不会对具有相同名称的其他@文件夹进行阴影处理,而是驻留在更高的路径文件夹中。相反,该类是由具有相同名称的所有@文件夹中的方法组合定义的。这不再正确。”该链接中给出的示例说明了这一点。