在大学中肯定缺少不了MATLAB的存在,因为MATLAB涉及的领域真的很广,你如果翻翻核心文学,很多都是用MATLAB软件的。也因此证明了世界是数学的,不管是数学建模,还是通信,还有控制。如果用stateflow去建立控制器比想想要快的多,因为说白了,控制其实就是状态机组成的,而控制器算法就是PID。而MATLAB把这两方面都进行了优化,简单说这几年MATLAB就是更能让客户,不会因为数学公式不会,则放弃MATLAB,而是让产品更具有自动化,客户拿来就能用。
Simulink:操作更是如此,1000多个模块,你就都看看了解了解,就能搭建模型。
MATLAB工具箱:我现在用MATLAB基本上编代码很少了,因为MATLAB把工具箱都变成了GUI界面,就是跟VB一样,参数都是选择,最好还能一键M代码生成,对生成的代码改改就是自己的代码。
其实MATLAB那个PID优化有个学名,叫做一键PID优化,Stateflow中就连if-else都不用自己去写,就能完成编程工作。
如果学的深了,其中Simulink有个帮助,就是特别简单的弹簧阻尼震动的例子,你可以写微分方程做,也可以直接应用Simulink中的弹簧模块去做。甚至还可以自己在CAD软件画一个系统,然后自动变成Simulink模块。
近两年MATLAB推出了MATLAB Coder,就是从M语言生成C代码,把它和Simulink Coder合并叫Embedded coder。就是各种代码自动生成,而且能优化。说白了谁都知道MATLAB编程简单,还能生成C代码。Simulink可能接触的比较少,因为容易出错,书上介绍的也少,但是Simulink优点就是动态仿真,基于时间的,这是Matlab做不到的。Stateflow属于Simulink一个模块,但是非常出名的原因是它和Simulink有很大的区别,就相当于一个分段函数的分段点。我曾经用Simulink生成了一段代码,点选优化选项和不点选优化选项,差别是33%。而且生成的代码也不可能有出错的可能性。
LEGO NXT在大学中可能就不是那么常见了,但是大学常见的是机器人比赛,我们学校就有一个因为机器人比赛进清华了。但是LEGO的优点是不能泯灭的,它可以进行硬件电路的快速原型建立,给一些想学编程,但是不想学电路知识,不想看许许多多用户手册的人提供了很好的条件。因为现在大学,你除非买现成的开发板,才能自己编编程序,还是验证性的,而且显示的也没有机器人这么直观。否则必须自己学习画PCB板子,自己调试。现在编程的人一个月至少6000,画板子的一个月至少3000元。
最后说说MATLAB与LEGO NXT的联系。MATLAB 2012a开始完全支持LEGO NXT硬件。也就是能生成嵌入式代码直接给NXT运行。这样就完美的把电路原型设计简化,把底层驱动编写简化,完全让学生学习模型的设计,而不是迷失于复杂代码之中。设计出的模型直接生成代码做验证,不会有代码出错的可能性。现在什么最赚钱就是模型的设计,算法的开发,如果孩子能提前体会MATLAB设计流程,这才能对以后人生有重大的帮助。
展望未来一下,国外很多都是用MATLAB开发汽车,但是国内却很少,不过我相信如果中国发展道路一定会跟外国靠拢的。而且MATLAB现在可以对DSP,ARM,MSP430等生成优化的代码,对任何的板子都可以生成嵌入式代码,而且对特定板卡给了底层驱动。
我希望大家能多多使用MATLAB去学习LEGO NXT而不是去玩玩。