Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是;在MATLAB路径中将其阴影化”;什么意思?如何在文件中执行此操作?_Matlab_Path_Namespaces_Package - Fatal编程技术网

什么是;在MATLAB路径中将其阴影化”;什么意思?如何在文件中执行此操作?

什么是;在MATLAB路径中将其阴影化”;什么意思?如何在文件中执行此操作?,matlab,path,namespaces,package,Matlab,Path,Namespaces,Package,我需要在运行unitTester文件之前始终执行此操作。我不明白为什么需要这样做。这是什么意思?为什么“添加到路径>选定的文件夹和子文件夹”不够 [更新]这可能就是问题所在。内核采用不同的技术编程,其中文件名相同。我需要确保在每种情况下只使用某些文件。在这里使用包不破坏名称空间的最简单方法是什么?MATLAB在其搜索路径上搜索m文件,您可以使用path命令显示它。如果在MATLAB路径上有多个具有相同基名的m文件(即扩展名之前的文件名部分,不包括目录),则MATLAB只能执行路径上最先出现的文件

我需要在运行unitTester文件之前始终执行此操作。我不明白为什么需要这样做。这是什么意思?为什么
“添加到路径>选定的文件夹和子文件夹”
不够


[更新]这可能就是问题所在。内核采用不同的技术编程,其中文件名相同。我需要确保在每种情况下只使用某些文件。在这里使用包不破坏名称空间的最简单方法是什么?

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

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

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

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

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

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

我在OS X 10.10.3上遇到了与matlab r2015a相同的问题

我在
~/electrochematics/Matlab/

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


现在我在
~/electrochematics/matlab/
工作,问题解决了

更改源代码名称,因为它的名称与matlab的源代码相同

检查和讨论。我也遇到过这个错误,但我不记得我做了什么来解决它。也许您可以通过编程更改代码内部的路径。或者通过键入有关更新的
which
检查文件运行的目录:错误消息是关于似乎相同的测试脚本的名称。因此,这是您需要首先解决的问题。之后,您需要检查内核的命名方案是否会引入类似的问题。您能否举例说明如何将不同的内核制作成包?此特定案例如何与addpath/rmpath一起使用?赞成/反对?Listlist是一个内核,sct是一个内核。我正在测试不同的实现,我认为用一个包来分隔它们的名称空间是一个明智的想法,希望这样能使事情更易于使用。第一个想法听起来有点像hxcking…但可能更快。路径不是MATLAB搜索函数的唯一地方。而且,它可能不是MATLAB的首选。特别是,任何恰好位于当前工作目录中的函数都会在MATLAB路径上的任何位置屏蔽任何同名函数。有关详细信息,请参见@Alex:Correct。谢谢你的澄清!