matlab用多了,发现在代码开发环境方面还真不如VS做的好,而且在项目管理上做的不如其他语言强大,开发小型代码很不错,如果代码工程量大的话,就会发现很难组织好。一个文件里面,第一个函数是主函数,后面的函数对外都不可见,这个就很别扭,所以要把其他需要供其他文件调用的函数都写成一个个文件,文件少了还好,如果多了,就想分分类,怎么分?要知道一个函数或脚本是无法或不方便调用其他文件夹里的函数的,加入matlab路径倒是个方法,但是matlab路径已经够多了,你加进去,过一阵,就不知道哪个是哪个了,不爽啊。而且如果想拷给别人用的话,还得时刻记得加路径。。。
可能也是对matlab项目了解的不多吧,最近也确实看到一些matlab项目的管理方法,比如使用private文件夹、@开头的文件夹、+开头的文件夹等,这些为项目管理提供了一些不错的想法,不过还是感觉不如c的好啊。
先来说一说private文件夹吧。
private函数是matlab软件中广泛使用的一种技术,其作用是限定某一些函数(private文件夹内)只能被令一些函数(private文件夹所在文件夹中的函数)使用,其他函数不能使用,这样的话就可以避免一些问题(因为一般的matlab函数是全局可见的,而private函数只能被private文件夹所在文件夹中的函数调用)。具体可以查看matlab帮助中有关Private Functions的介绍。下面做一下简单翻译吧,顺便练习一下英语吧。
private函数是那些放在以private子文件夹下的函数。这些函数被称为private是因为它们只对满足如下条件的函数或脚本可见:
1.函数要满足它被定义的文件在private文件夹的上一级目录;
2.脚本要满足它被满足条件1的函数调用,才能在其中使用private函数。
例如,假设文件夹newmath在matlab的搜索路径下(不在也可以),那么newmath文件夹下名字为private的文件夹中所包含的函数只可以被newmath文件夹下的函数调用。
由于private函数对父文件夹外不可见,所以它们能使用与其他文件夹中函数相同的名字。这对下面的情况是很有用的,如果你想创建你自己版本的函数,只需要把原始的函数放在其他文件夹下。因为matlab是在找标准函数之前找private函数的。
举个例子,创建如下文件
各文件内容如下
privatefunc.m:
function privatefunc
disp('privatefunc is called!')
end
scripttest.m:
disp('scripttest call privatefunc in private folder:')
privatefunc
functiontest.m:
function
disp('functiontest call privatefunc in private folder:')
privatefunc
scripttest
end
运行scripttest,结果如下
scripttest call privatefunc in private folder:
??? Undefined function or variable 'privatefunc'.
Error in ==> scripttest at 2
privatefunc
运行functiontest,结果如下
functiontest call privatefunc in private folder:
privatefunc is called!
scripttest call privatefunc in private folder:
privatefunc is called!