图片缩略图

Fdep:一个步行功能依赖查找器

version 1.7.0.0 (266 KB) by 我们
FDEP剖析ML文件和反复验看运行期间使用的所有用户自定义函数
4.3
56评级

25下载

更新2010年6月20日

视图版本历史

查看许可协议

编者按:这个文件被选为MATLAB中心本周精选

FDEP剖析MATLAB文件并迭代地查找所有用户定义的函数(模块),这些函数(模块)在运行时使用

FDEP为每个模块检索其
- 子功能
- 嵌套函数
- 匿名函数
- eval类调用
——未解决的电话
和所有
- ML库存函数
- ML内置函数
- - - - - - ML类
- - - - - - ML工具箱
它使用

运行时的选项和返回宏创建用户友好的,
直观易懂的交互式gui
-在各种面板和列表框中列出结果
-为每个模块绘制一个完整的大纲
详尽的信息
- 绘制完整的相关性矩阵
-绘制运行时和模块树

在本质上,FDEP为DEPFUN和MLINT一个包装;然而,由于高效的修剪引擎是相当(20-100倍!)快

如果您想要分发函数,那么FDEP特别有用,您可以看看还需要包括哪些函数以及它们使用的工具箱

FDEP对于调试语法正确的错误函数可能很有用

看到
>帮助fdep
以及附带的m文件帮助和一个详尽的例子

引用作为

美国(2021)。Fdep:一个步行功能依赖查找器(//www.tatmou.com/matlabcentral/fileexchange/17291-fdep-a-pedestrian-function-dependencies-finder), MATLAB中央文件交换。检索

意见及评分(82.

马修·御

经过额外的测试,我对我之前的文章中的代码修复做了一些改进和bug修复。通过这些修复,fdep几乎完全可以正常工作了,只是没有列出Matlab类依赖项的完整路径,以及注释中描述的其他一些次要项目。

同样,下面的修复应用于fdep。在对mGraphVix.m进行了一个小错误修复后,类似于graphviz的MATLAB工具可以正确地使用fdep。

比较文件。\ DOWNLOADS \ fdep.m和\ SOURCE \ REPOS \ FDEP \ FDEP.M
* * * * * \ \ fdep.m下载
117:DOPT = {
118:“-toponly”
119:“安静”
120:};
* * * * *。\ \回购\ FDEP \ FDEP.M来源
117:DOPT = {
118:“toponly”
119年:};
*****

* * * * * \ \ fdep.m下载
761:
762: [dtmp dmod dmcl,多克斯,多克斯,多克斯,多克斯,docl] = depfun (fnam, par.dopt {:});% #好吧
763:IM = STRNCMP(par.mlroot,DTMP,numel(par.mlroot));
* * * * *。\ \回购\ FDEP \ FDEP.M来源
760:
761: compleevel0onlyopt = true;
762:如果~ (ismember (par.dopt toponly));compLevel0OnlyOpt = false;结束
763:
764:比较= matlab.depfun.internal.Completion({fnam},matlab.depfun.internal.Target.parse( '无'),compLevel0OnlyOpt);
765: DTMP = {parts(comp).path}';%这也初始化BuiltinListMap。
766:
后续代码期望主函数路径是第一个进入的
768: %。如果main函数不是第一个,那么修复列表
769:如果~ strcmpi (dtmp {1}, fnam)
770:DTMP(strcmpi(DTMP,fnam))= [];
771: DTMP = [fnam; DTMP];
772:结束
773:
774:内建= {};
775:如果retrieveBuiltinListMap(薪酬)。数> 0
776: builtIns = subsref(values(retrieveBuiltinListMap(comp)),substruct('{}',{1}));
777:结束
778:
779: dmod = {};
780: DMCL = {};
781:
782:如果~ isempty(内置)
783: dmod = cellfun(@(x)x. symbol,builtIns,'UniformOutput',false)';
784: dmcl = cellfun(@(x)matlab.depfun.internal.MatlabSymbol.basename(x. qsymbol),builtIns,'UniformOutput',false)';
785: ixbic = ismember(dmcl,matlab.depfun.internal. requirementsconstants . matlabbuiltclasses);
[] = [];%只保留内置类名的成员
787:结束
788:
789:depgraph = getDependencyGraph(COMP);
790:
791:如果depgraph。VertexCount > 1
792: dmcladd = cell(depgraph.VertexCount,1); / /显示数据
793: j = 0;
794: for I = 0:depgraph。VertexCount-1
795:如果depgraph.vertex .Data.symbol(我)。类型= = matlab.depfun.internal.MatlabType.BuiltinClass
796: j = + 1;
797: dmcladd{j} = depgraph.vertex(i).Data.symbol.Symbol;
798:结束
799:结束
800:如果j 801: dmcladd (j + 1:结束)= [];
802:结束
803: DMCL = [DMCL; dcladd];
804:结束
805:
806: DMCL =唯一(DMCL);部分重新实现的Matlab类列表。完全的重新实现将包括完全
807:路径解决。
808:
809: docx = cell(dtmp);尚未重新实施。与dtmp相同的长度。如果第一个入口是主要的功能,mai
810: n函数被标记为递归。这是'docx'信息的唯一用途。
811: docl = {};尚未重新实施。这只用于识别外部类型的类,例如Java, . net。
812:
813:IM = STRNCMP(par.mlroot,DTMP,numel(par.mlroot));
*****

* * * * * \ \ fdep.m下载
776:
777: dtmp {1} = fap.wnam;
778:如果fap.mp (1)
* * * * *。\ \回购\ FDEP \ FDEP.M来源
826:
827: dtmp {1} = fap.wnam;第一个途径必须是当前的乐趣
828:如果fap.mp (1)
*****

* * * * * \ \ fdep.m下载
2672: par.rexcmp ='(?<='').*(?='')|(?<=(\ \ d s)) +(?=(\.)$)';
2673: par.rexcyc='The McCabe complexity of';
2674:par.rexeva = '(^ feval $)|(^ EVALC $)|(^ evalin $)|(^ EVAL $)';
* * * * *。\ \回购\ FDEP \ FDEP.M来源
2722: par.rexcmp ='(?<='').*(?='')|(?<=(\ \ d s)) +(?=(\.)$)';
2723:par.rexcyc = '的麦凯布';%对于一个脚本,该读取McCabe的圈复杂......对于一个功能,这
2724:读取“[函数名称]”的麦凯布复杂...
2725: par.rexeva = '(^函数宏指令$)| (^ evalc $) | (^ evalin $) | (^ eval美元);
*****

* * * * * \ \ fdep.m下载
2890:如果任何(第九)
2891:CYC =正则表达式(CYC(ix)中,par.rexcmp, '匹配');
2892:赛克=[幕布{}):';
* * * * *。\ \回购\ FDEP \ FDEP.M来源
2941:如果任何(第九)
2942:赛克= regexp (par.rexcmp幕布(ix),“比赛”);
2943:赛克= cellfun (@ (x) fill_empty_fcnname_with_mfilename (x, par.wnam),幕布,UniformOutput,假);
2944:CYC = [CYC {:}]';
*****

* * * * * \ \ fdep.m下载
2936:结束
2937:功能[P,参数] = FARG_get_calls(P,PAR)
* * * * *。\ \回购\ FDEP \ FDEP.M来源
2988:结束
2989:
2990:函数infoCell = fill_empty_fcnname_with_mfilename(infoCell,filepath)
2991:如果长度(infoCell) = = 1
2992: infoCell = {",infoCell{1}};
2993: [~, infoCell{1}, ~]=fileparts(filepath);
2994:结束
2995:结束
2996:
2997:函数[p, par] = FARG_get_calls (p,票面价值)
*****

* * * * * \ \ fdep.m下载
3238:如果有(ix) %
3239:nfmt(IX)= par.lint.cyc(:,2);
3240: else % SCRIPT
* * * * *。\ \回购\ FDEP \ FDEP.M来源
3298:如果任何(IX)%FUNCTION
3299: nfmt (ix) = par.lint.cyc(第九,2);
3300: else % SCRIPT
*****

马修·御

虽然defun被删除了,但使defun工作的内部Matlab依赖项没有被删除。做以下更改将使这个工具主要是功能性的(减去Java类依赖和'调用'信息)。注意,这些修复还没有经过广泛的测试。

比较文件。\ DOWNLOADS \ fdep.m和\ SOURCE \ REPOS \ FDEP \ FDEP.M
* * * * * \ \ fdep.m下载
117:DOPT = {
118:“-toponly”
119:“安静”
120:};
* * * * *。\ \回购\ FDEP \ FDEP.M来源
117:DOPT = {
118:“toponly”
119年:};
*****

* * * * * \ \ fdep.m下载
761:
762: [dtmp dmod dmcl,多克斯,多克斯,多克斯,多克斯,docl] = depfun (fnam, par.dopt {:});% #好吧
763:IM = STRNCMP(par.mlroot,DTMP,numel(par.mlroot));
* * * * *。\ \回购\ FDEP \ FDEP.M来源
760:
761: compleevel0onlyopt = true;
762:如果~ (ismember (par.dopt toponly));compLevel0OnlyOpt = false;结束
763:
764: comp = MATLAB .depfun.internal. completion ({fnam}, MATLAB .depfun.internal. target .parse('MATLAB'), compleevel0onlyopt);
765: DTMP = {parts(comp).path}';%这也初始化BuiltinListMap
766:
767: builtIns = {};
768:如果retrieveBuiltinListMap(薪酬)。数> 0
769: builtIns = subsref(values(retrieveBuiltinListMap(comp)),substruct('{}',{1}));
770:结束
771: dmod = {};
772:DMCL = {};
773:
774:如果~ isempty(内置)
775:DMOD = cellfun(@(X)x.Symbol,建宏, 'UniformOutput',假)';
776: dmcl = knownClasses(builtIns{1}.classList)';
777:结束
778:
779: docx = {};尚未重新实施
780: docl = {};尚未重新实施
781:
782: im = strncmp (par.mlroot、dtmp元素个数(par.mlroot));
*****

* * * * * \ \ fdep.m下载
814:结束
815:如果~ isempty(多克斯{1})
816: par.spec (tenum.R) = 1;R %规范:
* * * * *。\ \回购\ FDEP \ FDEP.M来源
833:结束
834: if ~isempty(docx) && ~isempty(docx{1})
835: par.spec (tenum.R) = 1;R %规范:
*****

* * * * * \ \ fdep.m下载
2672: par.rexcmp ='(?<='').*(?='')|(?<=(\ \ d s)) +(?=(\.)$)';
2673: par.rexcyc='The McCabe complexity of';
2674:par.rexeva = '(^ feval $)|(^ EVALC $)|(^ evalin $)|(^ EVAL $)';
* * * * *。\ \回购\ FDEP \ FDEP.M来源
2691: par.rexcmp ='(?<='').*(?='')|(?<=(\ \ d s)) +(?=(\.)$)';
2692: par.rexcyc='The McCabe ';%对于一个脚本,该读取McCabe的圈复杂......对于一个功能,这
2693: read The McCabe complexity of '[function name]'…
2694: par.rexeva = '(^函数宏指令$)| (^ evalc $) | (^ evalin $) | (^ eval美元);
*****

* * * * * \ \ fdep.m下载
2890:如果任何(第九)
2891:CYC =正则表达式(CYC(ix)中,par.rexcmp, '匹配');
2892:赛克=[幕布{}):';
* * * * *。\ \回购\ FDEP \ FDEP.M来源
2910:如果任何(第九)
2911:CYC =正则表达式(CYC(ix)中,par.rexcmp, '匹配');
2912:赛克= cellfun (@ (x) fill_empty_fcnname_with_mfilename (x, par.wnam),幕布,UniformOutput,假);
2913:赛克=[幕布{}):';
*****

* * * * * \ \ fdep.m下载
2936:结束
2937:功能[P,参数] = FARG_get_calls(P,PAR)
* * * * *。\ \回购\ FDEP \ FDEP.M来源
2957:结束
2958:
2959:函数infoCell = fill_empty_fcnname_with_mfilename(infoCell,filepath)
2960:如果长度(infoCell) = = 1
2961: infoCell = {",infoCell{1}};
2962: [~, infoCell{1}, ~]=fileparts(filepath);
2963:结束
2964:结束
2965:
2966:函数[p, par] = FARG_get_calls (p,票面价值)
*****

* * * * * \ \ fdep.m下载
3238:如果有(ix) %
3239:nfmt(IX)= par.lint.cyc(:,2);
3240: else % SCRIPT
* * * * *。\ \回购\ FDEP \ FDEP.M来源
3267:如果有(ix) %函数
3268: nfmt (ix) = par.lint.cyc(第九,2);
3269: else % SCRIPT
*****

Milad Ekramnia

应该收回,以免浪费时间。

吉姆·尼科尔森

应该收回,以免浪费时间。

Bjarne Risløw

罗恩弗雷德里克斯

我很抱歉告诉你这个坏消息。在v2016a中从MATLAB中删除了DEPFUN函数(FDEP所需)。

开发者注意:请将“发布兼容性”改为v2016a之前的MATLAB版本。看起来这对我来说是一个非常有用的程序。

Kishankumar Dholariya

R2019B错误

Florian丹纳

Hendri Breedt

R2017b错误

Murat超常介质

芒滕

奥萨马Buhamad

你能告诉我如何解决这个depfun调用详情请?
我尝试用matlab.codetools.requiredFilesAndProducts替换depfun调用。下载188bet金宝搏然而,它仍然不起作用!

马提亚Goldgruber

这需要更新为R2014b+通过替换depfun调用matlab.codetools.requiredFilesAndProducts。下载188bet金宝搏

Varun的

安德烈

如果有人为最新的matlab做一个修复将是伟大的。现在它抛出一个关于depfun()用法的错误。

丹尼尔·佩雷拉

令人难以置信的,有我在五年前知道这个工具的存在,我会救了很多头痛的问题。

谢谢你!

伊戈尔

克莱顿楚,
是的,但是“只是替换函数名”的方法是行不通的。
R2015a仍然只显示一个警告,但是R2015b已经抛出了一个错误
:(

默罕默德

克莱顿楚

克莱顿楚

这需要更新为R2014b+通过替换depfun调用matlab.codetools.requiredFilesAndProducts。下载188bet金宝搏

Konstantinos代表作

太好了。很多谢谢!

莫莉Rossow

皮埃尔

为什么我没有找到以前呢?一个美妙的节省时间的工具。

布拉德·里德尔

上帝啊,这个功能太神奇了!万岁!

奥古斯汀

Rene Heideklang

非常有用的工具!

然而,在最新版本的2010年6月20日,最大允许M-file-name的类文件(脚本和功能都ok)为40个字符!对于较长的文件名,FDEP会产生令人费解的错误信息:

赋值A(:) = B时,A和B中的元素个数必须相同。

我花了一些时间才弄明白……不幸的是,除了使用更短的类名,我目前没有其他解决方案。这似乎与depfun无关。

有什么建议?

p功夫

速度远远超过depfun,像20倍。谢谢。

但是它似乎不返回.fig文件。
(也有问题的文件)

尤利娅•

宜兰酒吧

这是一个很棒的工具!
不过,我也需要得到每个函数调用的文件(行列)中的位置。是否可以 ?如果是的话,你能告诉我该怎么办呢?

蒂埃里Dalon

你好,
Fdep导致模式上的错误。UDD包中使用的m文件。
谢谢你的伟大贡献!

西蒙

神奇的!它还列出了实际使用的工具箱,这一点非常宝贵

斯科特·罗伯逊

这是一个非凡的工具!我一直在使用depfun,这是一个更好的工具。谢谢你!

尼克

奇妙的工具!它帮助我找到了需要未授权工具箱的功能。

我注意到一件事,想和大家分享一下:
Fdep()和底层的depfun()不解释“常量条件”分支,也就是说,当你有

如果1
Foo ();
其他的
Bla ();
结束

它列出了两种功能。在我的情况,这导致的情况是MATLAB抱怨非授权工具箱 - 这是我没有用。注释掉bla(下)解决了这个问题。:)

马特Wolinsky

非常有用的工具,而且快!

它对我来说工作得很好,除了一个问题:如果输入函数调用subfun。M仅从匿名函数内部,那么fdep()找不到它。

换句话说,如果我的乐趣。M有直线

Sfunc = @(X)subfun(X);
X =兰特;
y = Sfunc (x);

那么对于p=fdep('myfun'), p.fun不包含subfun.m

在此之前,因为我倾向于使用匿名函数的别名很多,例如FAB = @(C,d)F(A,B,C,d)

保罗

哇!聪明的和快速的。强烈推荐!谢谢你!

Reza Farrahi穆贾达姆

贾斯汀Elstrott

贾斯汀Elstrott

雅罗斯瓦夫Tuszynski

正是我所需要的

亚当一个

阿尔瓦罗·德尔珈朵

Nilimb

非常有用和快速。

埃里克

伟大的功能。省时省力。比我在20分钟后被迫退出的defun快多了。

凯利卡尼

这是一个很棒的函数,我已经用了很多年了。但是,gui不能很好地与多个显示器一起使用。因为GUI的不同部分使用了标准化和绝对单位,所以简单地在渲染后调整整个东西的大小并不是理想的(我只是偶然地发现,在我使用它的所有时间里,在右上角有一些我从来不知道存在的按钮)。如果我能告诉它该使用屏幕的哪个部分就好了(即使我必须在自己的版本中硬编码,但现在这似乎需要在代码中更改几行,我还没有全部跟踪它们)。

Aurelien Queffurust

哇!这是一个伟大的工具!

本Petschel

优秀的工具,更快,比DEPFUN更多的信息。

一个特别有用的功能是检测未解决的函数调用,而DEPFUN似乎没有做到这一点。每个模块的梗概都有一个未解析名称列表,但我无法找到一种方法来获得所有未解析名称的单个列表,除非通过浏览。

你可能也想关掉乳胶解释在相关矩阵的点标签(1921年线,我认为)。

干得好!

乔恩·格里菲思

你好,我有一些问题使用fdep在一个脚本/函数调用函数是集合的一部分。

例如fdep(“myfunction”、“m”)
在哪里
函数[X] = myFunction的(y)的
X = mycollection.getX(Y);
结束

有开关来捕捉这个吗?

谢谢
乔恩

Kassi

这是太棒了!我的工作需要使用/调试别人写的代码,这是非常有用的。感谢易于导航,干净,编写良好的代码:)

日常用品的

神奇的!

AMVR

(继续我之前的错误报告)。在跟踪我之前报告的错误之后,我注意到以下几点:

错误发生在:
ixb (1: par.mfun, 1) =找到(ixt (: 1) = = 1);
(? ?下标赋值维度不匹配。)

这是因为

K > > par.mfun
ans =
32

K>> nummel (find(ixt(:,1) == 1)))
ans =
41

AMVR

当在使用IBM的CPLEX的函数上运行fdep时,我得到以下错误
26日7:| cplexbilp P 1: C: \ ILOG matlab \ CPLEX_Studio_AcademicResearch122 \最大化策略\ \ x64_win64 \ cplexcreateprob.p
1: C: ILOG\CPLEX_Studio_AcademicResearch122\cplex\matlab\x64_win64\cplexoptimset.p
28 9: | cplexoptimset P 1: C: ILOG\CPLEX_Studio_AcademicResearch122\cplex\matlab\x64_win64\@Cplex\ cplex . P
???下标赋值维度不匹配。

Error in ==> fdep>FARG_get_entries at 3066
ixb (1: par.mfun, 1) =找到(ixt (: 1) = = 1);

错误在==> fdep>farg在2585
[p, par] = FARG_get_entries (p,票面价值);

Error in ==> fdep>FDEP_get_fun at 770
前受奖人fap [fa] = (fnam ' s ', ' - d ');

Error in ==> fdep>FDEP_get_dep at 664
[p par dtmp, dmlf dmod, dmcl, docl] = FDEP_get_fun (p, par, fnam frot);

错误在==> fdep>FDEP_get_dep在740
[p, par] = FDEP_get_dep (p par dtmp{我});

知道为什么会这样吗?

CLF

非常有用的。是否可以同时处理…的评论?
% ToDo-things吗?

朱利安

灿烂的!这个工具给我留下了深刻的印象,特别是,就像其他人评论的那样,比depfun的速度更快。您知道它是否能与新的(略)用户类定义一起工作吗?

奥立

好吧,我真是太蠢了。对不起。这个软件太棒了!

奥立

非常感谢,总的来说它工作得很好!不幸的是,我必须分析一个基于gui的软件项目,而fdep似乎只考虑自动调用的函数。例如,由于用户输入而被调用的子模块不会被分析。那是正确的吗?

如果是,我能做什么?我真的需要找出,在我最近“继承”的一个相当令人困惑的项目中涉及到哪些工具箱。

安德鲁

我们

安德鲁

不幸的是:不…
原因为何.EVAL之一。组由FDEP单独收集并且如果任何这样的构建体被发现显示一个警告标志...

那么,哪一个是人们应该遵守这些规则的原因之一呢
-不要使用EVAL
-仅在函数句柄中使用FEVAL
注意:
函数宏指令(@sind 30)
将正确找到调用SIND ...

对不起
我们

安德鲁

fdep是否能够找到feval调用,其中feval中的函数名参数本身是一个字符串变量?

例如

函数宏指令(帧,1、2、3)

我们

托马斯。
谢谢你的评论

为了实现你需要的,你可以这样做

页= fdep(“yourmain”);
%,
pp.sub.M
%是一个数组,列出了所有模块及其完整路径
%你可以简单地创建一个小工具,它执行的副本,比如
函数copymod (pp、newfolder)
%错误检查等遗漏…
因为我= 1:pp.nfun
拷贝文件(pp.sub (i)。m, newfolder);
结束
结束

我们

托马斯·本森

这是奇妙的。它在一个包含184个函数的matlab程序上工作得很快。另外一个有用的功能是在fdep中有一个选项,可以将所有非工具箱依赖项复制到当前工作目录,不过我认为我可以根据P结构中提供的信息自己编写这个选项。谢谢我们。

彼得Schmedling

奥列格•科马罗夫

我觉得这个工具真的很有用。

我们

奥列格
谢谢你的评论

有两个原因
1)一个MODULE是一个M-file/-script,并且是第一个(主)函数
只是这个文件中的另一个(子)函数吗
2)第一个函数应该(!)有相同的
命名为m文件(否则,mlint抱怨);这是一个简单的
为用户进行完整性检查

另外,请注意面板中的第一个字符
米 (...) ...% <-主要功能
年代 (...) ...% <-第一个(官方)子函数
年代 (...) ...% <-等等

我们

奥列格•科马罗夫

这个包很棒,但我不明白为什么主函数被列在子功能窗格(或在'sub. s.n fn'):

函数foo
结束
函数foo2
结束

我只期望foo2的在那里。什么道理呢?
Tnx

乔纳斯

优秀的功能!

不过,在Windows中,output.froot中的文件分隔符指向错误的方向。这是故意的吗?

我们

嗨,德克
对增强的伟大建议!
我内置的辅助功能,它您需要的是什么,如果你想将其通过电子邮件发送给你...
一旦我能拿到它,它就会成为FDEP的一部分。
我们

德克

感谢这个神奇的工具。与defun相比,它的速度是惊人的。

不过有一个功能我还不太清楚:
Fdep让您可以很容易地从代码中的_somewhere_中确定使用了哪些工具箱。但不幸的是,要确定是哪个.m文件导致了这个工具箱依赖关系并不容易。
比如,在列表视图中选择一个工具箱,这样就可以突出显示直接依赖于所选工具箱的所有模块。

我们

贾森

是的,这是由设计...
虽然它可以很容易地改变,但它也(潜在地)会导致不希望的结果……
因此,要将一个文件夹中的文件用FDEP保存,而该文件夹不在ML的路径中,则必须CD到该文件夹中……
但是,让我知道这对你来说是一个真正的问题,因为它当然可以改变…

我们

杰森枫

既然它看起来功能齐全,为什么这个函数不能接受完整的路径名呢?

fdep(“C: \ \ \废话\ file.m ")

我得到一个错误说“文件未找到”。它似乎只对当前目录或MATLAB路径中的文件有效。

安德烈亚斯

我非常喜欢以前的版本!非常感谢。

最新版本有一个bug。如果分析一个密封的类(例如定义为"classdef (sealed) MyClass"),程序在fdep中在2928行崩溃。如果“(Sealed)”被删除,程序就会像广告中说的那样工作。

我们

与最新版本(08君2009年22:24:13 / R14-R2009a),每艾萨克森的错误消息不显示了?
原因是一个旧的解析器引擎,它不能处理较新的函数结构……
谢谢你提醒我这个问题…
我们

阿龙

这是一个伟大的想法,以伟大的方式实现!
全面的用户fraindly和有用的功能。

伟大的工作。

负担

很好。谢谢你分享这个非常有用的

尤里ķ

伟大的功能!很有用。是否有可能也看到一个包所需的其他文件,如垫子,TXT,INI等?

图像分析师

我刚下载下来,看起来很不错。然而,我希望你修复错误,它是定位错误的模块。我有一个主模块,它调用8个其他模块,其中7个和主模块在同一个文件夹中。然而,模块#2你列出的名字与我碰巧在另一个文件夹中有一个相同。我不知道你们为什么先看到这个,MATLAB没有,它看到并运行一个正确的,在主模块中。例如,在folder1中,我有m文件myFile和mySubFile1, mySubFile2等。但在folder2中,还有一个mySubFile1这是程序找到的,而不是folder1中的mySubFile1。

关于列表GUI的更多建议:
1.将[John D']按钮替换为滚动条或两个小按钮来增加或减少字体大小。
2.我也想在你的6个按钮上看到工具提示(马上,有些按钮的作用并不明显)。
3.我希望从GUI开始,而不是两个步骤的命令行过程。
4.图像处理工具箱被不正确地称为在工具箱列表框的“图像”。
5.一个比简短而神秘的“fdep”更长的、更具描述性的名称会更好。“行人”和它有什么关系?需要这个词吗?

以下是MATLAB对我的工具箱的报告:
MATLAB版本7.7(R2008b)
图像处理工具箱版本6.2 (R2008b)
MATLAB Builder NE版本3.0 (R2008b)
MATLAB编译器版本4.9 (R2008b)
信号处理工具箱版本6.10 (R2008b)
工具箱EXAMPLE_SCRIPTS版本1.0.0

这是我对一个好项目的看法。

乌尔斯(美国)施瓦兹

安德鲁,你能和我联系吗?不幸的是,您没有提供电子邮件地址。

安德鲁•沃尔顿

当使用mex文件时,它会崩溃。

URS(我们)施瓦茨

为了让FDEP适应JD的视力,我们刚刚上传了一个升级版本

1)糖果色被移至零(仍然希望他们能够快速地将不同的面板组合在一起)

2)添加了JOHN D'按钮;它的帮助部分说:
这是为了纪念约翰·德埃里科,一位最受尊敬的长者
FEX和CSSM贡献者,视力很差
点击该按钮将增加字体大小1点每次

版本标签是07- 11 -2007 21:10:00
我们

约翰D 'Errico

与往常一样,从我们一个功能齐全,完全能够工具。做得好。

我有一个评论——我的眼睛有点老了,在图形界面的小字体和配色方案上有点困难。色彩柔和的文字在柔和的背景上很难阅读。是时候给我的眼镜配个新处方了?

卡洛琳Herbst

极大的帮助,的确!此外,作者在愉快的电子邮件交流后很快添加了一个新功能。

Matlab的emorr

哇!

MATLAB版本兼容性
创建R14
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区宝藏狩猎

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!