功能(文件)名称冲突警告

时间:2012-04-04 20:07:42

标签: function matlab collision

有没有办法让MATLAB提醒开发人员或警告用户目前存在于{{1}的不同目录中存在几个冲突(同名)版本的特定功能m文件}?这对于大型协作MATLAB项目非常有用。

2 个答案:

答案 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