前一段时间由于做项目的原因,是我这个对matlab一窍不通的小学生也慢慢有了一点使用心得,关键是在学习过程中不放弃能实现的各种想法,有句话:不管黑猫白猫,只要抓到 老鼠就是好猫,我呢,不论什么方法,只要能做出来就是“好方法“,呵呵,有点自欺欺人的感觉。
当时我们做项目的时候,开始用的是matlab6.5 的版本,这个版本还算好用,但是如果在.net下调用的话(我用的是C#)就比较麻烦了,众所周知,matlab的科学运算可算是出神入化,如果在C#下编写同等功能的函数,代码量可谓超过matlab不知道多少倍,而且编写出来的效率,准确率还有待商榷,就拿一个简单的矩阵运算 矩阵相乘来说,虽然不难写,但代码量很多,况且还有那种很难甚至在我们水平下很难写出来的函数,所以,调用matlab就是一个很明智的选择。当时采用的方法是采用matlab提供的C++函数库,将matlab语言转换成C++语言,然后编译成.dll文件供.net 调用,这一下又有问题了,这就涉及到跨平台调用,.net 是托管平台,而原来的C++用的是非托管的平台开发的,所以中间的传输比较麻烦,虽然不是很难。那段时间可真是消耗了不是体力啊。
还好我有善于发现的精神,在网络上漫游的时候突然发现新版本的matalab(我用的是matalab R2007b)提供了一个deploytool的工具,可以将matalab函数直接打包成.net组件,在.net下直接引用.dll文件就可以用了,这下可真是让俺欣喜若狂啊,迫不及待的用了一周的时间从网上下载了个matlab(同志们,一周的时间啊,这要需要多大的耐力啊,如果不是有种强烈的欲望,我想我是不能坚持下来的),按照网上为数不多的介绍文章,简单了试了一下,竟然一点脸面不给的试验失败,我无奈的将帮助文档看来一遍又一遍,还是不行,照着例子重写还是不行,悲伤,绝望啊。然而人可能在绝望的时候总能迸溅出伟大的思想,我想可能是环境的问题,就将/MATLAB/R2007b/toolbox/dotnetbuilder/bin/win32/v2.0/GACInstaller.exe文件安装了一下(注意,不要随便改路径,要按默认路径安装,不然还要手动添加路径),然后再次编译,成功通过,呵呵,终于搞定。当然如果你一开始就成功的话,就没必要再安装这个文件一下。