"在MATLAB路径中阴影"是什么意思?如何在文件中执行此操作?

hhh*_*hhh 6 matlab namespaces path package

在此输入图像描述

我需要在运行unitTester文件之前始终执行此操作.我不明白为什么这是必需的.这是什么意思?为什么"Add to Path > Selected Folders and Subfolders"还不够?

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

Flo*_*ker 6

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

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

另一种防止名称冲突的方法是.

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

  • +在其名称的开头添加a .
  • 确保将目录的父项放在MATLAB路径中.
  • 通过packagename.在它们之前添加或通过在调用(import packagename.*)之前包含包内容来更新对包中函数的所有调用.

一般来说,我更喜欢使用包进行动态路径修改,因为它们更容易使用.请注意,您可以嵌套包(即my_matlab_files/+mypkg/+nested/foo.m).

  • 该路径不是MATLAB搜索函数的唯一位置.此外,它可能不是MATLAB的首选.特别是,碰巧在当前工作目录中的任何函数都会阻塞MATLAB路径上任何位置的同名函数.有关具体信息,请参阅http://www.mathworks.de/de/help/matlab/matlab_prog/function-precedence-order.html (3认同)