【问题标题】:What does "shadows it in the MATLAB path" mean? How to do it in a file?“在 MATLAB 路径中隐藏它”是什么意思?如何在文件中做到这一点?
【发布时间】:2013-04-03 02:45:53
【问题描述】:

在运行 unitTester 文件之前,我总是需要这样做。我不明白为什么需要这样做。这是什么意思?为什么"Add to Path > Selected Folders and Subfolders" 还不够?

[更新] 这个here 可能是问题所在。内核以不同的技术编程,其中文件名相同。我需要确保在每种情况下只使用某些文件。最简单的方法是在这里使用一个包来不弄乱命名空间吗?

【问题讨论】:

  • 检查thisthis 讨论。我也遇到了这个错误,但我不记得我做了什么来解决它。也许您可以以编程方式更改代码中的路径。或者通过输入which 来检查文件是从哪个目录运行的
  • 关于您的更新:错误消息是关于似乎相同的测试脚本的名称。所以这是你需要首先解决的问题。之后你需要检查你的内核命名方案是否引入了类似的问题。

标签: matlab path namespaces package


【解决方案1】:

请改你的源代码名称,因为它的名称与 Matlab 的源代码相同

【讨论】:

    【解决方案2】:

    我在使用 Matlab r2015a 的 OS X 10.10.3 上遇到了同样的问题。

    我的文件在~/electrochemistry/Matlab/

    不知何故将最后一个文件夹重命名为小写解决了这个问题。在进行故障排除时,我注意到 Matlab 正在查找 ~/electrochemistry/matlab/,但找不到它要查找的内容(即我正在运行的 .m 文件)

    所以现在我在~/electrochemistry/matlab/工作,问题解决了

    【讨论】:

      【解决方案3】:

      MATLAB 在其搜索路径上搜索 m 文件,您可以使用 path 命令显示它。如果您在 MATLAB 路径上有多个具有相同基本名称的 m 文件(即扩展名之前的文件名部分,不包括目录),则 MATLAB 只能执行路径上第一个的 m 文件。

      您可以使用addpathrmpath 函数来动态修改路径。例如,您可以在测试运行脚本中自动添加相关目录。请注意,addpath 将新路径添加到路径列表的头部,以确保它优先于现有条目。

      防止此类名称冲突的另一种方法是packages

      编辑:要将目录转换为包,请执行以下操作:

      • 在其名称的开头添加+
      • 确保将目录的父目录放在 MATLAB 路径中。
      • 更新对包中函数的所有调用,方法是在它们前面加上 packagename. 或在调用之前包含包内容 (import packagename.*)。

      通常我更喜欢包而不是动态路径修改,因为它们更易于使用。请注意,您可以嵌套包(即my_matlab_files/+mypkg/+nested/foo.m)。

      【讨论】:

      • 你能举例说明如何将不同的内核here 打包成包吗?这种特定情况如何与 addpath/rmpath 一起使用?优点缺点? Listlist 是内核,sct 是内核。我正在测试不同的实现,我认为将它们的命名空间与一个包分开是一个聪明的主意,希望无论如何都能让事情更容易使用。第一个想法听起来有点像 hxcking...但可能更快。
      • 路径不是 MATLAB 搜索函数的唯一位置。此外,它可能不是 MATLAB 的首选。特别是,恰好位于当前工作目录中的任何函数都会阻止 MATLAB 路径上任何位置的任何同名函数。具体见mathworks.de/de/help/matlab/matlab_prog/…
      • @Alex:正确。感谢您的澄清!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 2023-04-06
      • 1970-01-01
      • 2010-11-03
      • 2011-08-25
      相关资源
      最近更新 更多