有没有办法让MATLAB提醒开发人员或警告用户目前存在于{{1}的不同目录中存在几个冲突(同名)版本的特定功能m文件}?这对于大型协作MATLAB项目非常有用。
答案 0 :(得分:1)
如果您有特定的功能名称,则需要检查是否已存在具有该名称的任何功能,您可以使用功能WHICH。例如,如果我将一个新的函数文件test.m
添加到我当前的目录(C:\Program Files\MATLAB\R2010b\bin\
),那么这就是WHICH告诉我的:
>> which test -all
C:\Program Files\MATLAB\R2010b\bin\test.m
C:\Program Files\MATLAB\R2010b\toolbox\stats\stats\@classregtree\test.m % classregtree method
C:\Users\user\Documents\MATLAB\test.m % Shadowed
现在有三个函数叫test
:一个是classregtree
个对象的类方法,一个是我刚刚创建的函数(顶行),最后一个(底线)现在是阴影由我刚刚制作的那个。这意味着,如果我从当前目录调用test
,则会调用第一个>> which test -all
C:\Users\user\Documents\MATLAB\test.m
C:\Program Files\MATLAB\R2010b\toolbox\stats\stats\@classregtree\test.m % classregtree method
。如果我换到另一个目录,我会改为:
test
较新的test
功能现在不会显示,因为上一个目录未保存在MATLAB path上。之前隐藏的{{1}}函数现在将是一个名为。
答案 1 :(得分:0)
如果您想检查路径中的所有可能的冲突,可以使用文件交换中的this function。
示例用法:
>> [~, collisions] = name_collisions;
Found the following duplicate names:
25 x Contents.m
2 x complex2interleaved.m
2 x demosinit.m
2 x exported_values.mat
2 x gcGuiReport.mat
2 x header.m
2 x interleaved2complex.m
2 x ltfatdiditfail.m
2 x mexinit.m
2 x octinit.m
2 x ref_spreadadj_1.m
2 x signalsinit.m
2 x startup.m
2 x testinginit.m
它还返回一个带有碰撞文件路径的结构。
>> disp(collisions)
51×1 struct array with fields:
name
folder
date
bytes
isdir
datenum