多语言展示
当前在线:1872今日阅读:84今日分享:32

如何优雅地使用Matlab

Matlab是个软件,作为用户的我们根本无从知道其工作原理,顶多就是看看官方手册介绍。所以我只说一下如何优雅的使用Matlab,仅仅是个人经验之谈,欢迎打脸1. 多借鉴其他语言特性,主要就是Fortran语言的模块化思想,还有C++中对象的概念;2. 想编写一个简洁优雅的程序要经过这么一种循环:看书->学到的知识用到自己项目中->读别人代码,找到闪光点->修改自己代码->再去读书……下面详细解释下1. 作为工科生难免会自己建立一个模型什么的,例如我们就经常鼓捣各种CFD模型。Matlab提供了一种几乎是积木似的语言,里面有各种现成的数学函数,但是想要把积木搭成城堡也需要一点学问不是?对我们来说这学问就是Fortran的模块化语言。下面再说就有点离题太远了,楼主有兴趣可以去找个现成的模型去看;2. 虽然最早的Matlab是用Fortran语言编写的,但是Matlab也可以有对象。(现在Fortran也有了,时髦啊!)在过去我从不用对象的时候,每次做项目的后处理都要针对各个项目重新写:提取结果文件,数据处理(插值排序等等),画图,输出图像或视频……每次都是那个累啊,终于有一天我看了本c++,里面提到了对象有代码通用性的好处,有了过去编程的基础再加上对象的思想,仅仅一个礼拜我就看完了Matlab官方的手册,后来我把每次后处理函数全部写成几个主要对象方法的形式(网格对象,计算结果对象,实测结果对象等等),虽然每次还是要改,但是比过去每次都重新编写要轻松太多了。而且我也发现“增加对象方法的数量”+“让方法功能减少”就会使对象越来越灵活……当初真是应该多听几门计算机的编程语言课啊3. 为什么要多读书我就不说了,书籍是人类进步阶梯,要是谁说“我Matlab学的非常好但是从没看过Matlab的书”的话请@李龙翔,我保证不打死他……4. 其次还要多读别人代码,因为有的东西书里没告诉你,这时候要是你智商又不够悟不出来,所以参考一些大神还是很有必要的。举个栗子:初学者应该都认识reshape函数,我刚学的时候也觉得这函数老方便了,你看它能把矩阵化成向量,也能把向量化成矩阵,所以有时候一个插值函数里用不下十几次,而且还有的在循环里用(循环上千次啊)。后来在一个程序里看到,当需要一个矩阵M按列排列成向量时候,直接用M(:)的形式。虽然读程序可能会看走眼,不过不要忘了在上千次循环里这样可以有效提高程序运行速度,而且Matlab的矩阵在内存里就是按列排列的,可以说M(:)的读取速度基本上是最快的……所以要写好代码,读程序也很重要,这里推荐去 File Exchange - MATLAB Central 逛逛,里面又许程序提供下载。虽然许多仍不完美,但是肯定能找到提高自己编程地方。听说过这么一句话,程序=数据结构 + 算法,Matlab是一种能够很直接的把数学方法转化为程序的语言,所以能够很方便的验证你的算法是否正确,假如你只是想把它当作计算器来使,那么多用就可以了。
推荐信息