找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 8250|回复: 13

MATLAB与LEGO NXT在大学学习之我见

  [复制链接]
发表于 2012-8-5 20:22:09 | 显示全部楼层 |阅读模式
在大学中肯定缺少不了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而不是去玩玩。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-8-5 20:51:26 | 显示全部楼层
本帖最后由 imlucky1 于 2012-8-5 20:54 编辑

记得好像你在另外一个帖子里提过,Matlab已经可以直接生成NXT-G的代码。

我有个问题:matlab能直接为NXT生成在labview里能调用的模块或代码吗?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 21:12:38 | 显示全部楼层
imlucky1 发表于 2012-8-5 20:51
记得好像你在另外一个帖子里提过,Matlab已经可以直接生成NXT-G的代码。

我有个问题:matlab能直接为NX ...

Simulink是直接生成高效C代码的。你可以直接应用Simulink设计你的程序,操作和Labview是差不多的。你问的问题是混编问题,混编是可以的 ,但是模块在labview里能不能代码生成就不知道了。
有一次MATLAB交流会曾经说过,labview的确可视化是比MATLAB好,一些专用软件也比MATLAB用着好。但是为什么还是要用MATLAB呢?因为MATLAB应用特别广,是一个大平台,如果你做你用一些专门的软件做完了,不一定能进行混编,而且接口什么的也不一定对的上。但是MATLAB几乎所有的事情都能在这个平台做。而且MATLAB的数学功底也比labview强太多了,所以一般仿真都在MATLAB上运行。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-5 21:29:06 | 显示全部楼层
楼主matlab肯定很熟练了,也提倡孩子能早体会MATLAB。
请教一下,小孩多大能接触MATLAB这类软件?

我有个想法:能否用matlab或者mathcad等,给小孩演示一下某些数学实验,直观给他展示一些数学思想,开阔他的数学眼界,而不是一味让学校整天给他们计算训练,变成计算机器人。

另外,不知道其它类似软件楼主熟悉吗,哪个比较容易上手?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 21:39:21 | 显示全部楼层
imlucky1 发表于 2012-8-5 21:29
楼主matlab肯定很熟练了,也提倡孩子能早体会MATLAB。
请教一下,小孩多大能接触MATLAB这类软件?


matlab是第四代计算机语言,语言要比C语言简单很多(越高级语言越简单,当然编译效率也就越低)。我是学电子信息工程的,软件接触的都是和硬件相关的。
我自己觉得越早接触越好吧,它比NXC编程还简单。simulink就和labview一样。MALTAB因为特别直观,你运行一行命令就能显示运行的结果,比较容易学,不像C得编完了才知道结果。数学实验?还是物理实验?如果数学实验利用MATLAB可以演示蒙特卡洛法概率问题,如果是物理实验可以建立方程在Simulink下运行配合VR模型演示出实例,帮助文件里面有一个演示无能量损失的小球在地面跳动的例子。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 21:39:58 | 显示全部楼层
imlucky1 发表于 2012-8-5 21:29
楼主matlab肯定很熟练了,也提倡孩子能早体会MATLAB。
请教一下,小孩多大能接触MATLAB这类软件?

你想演示哪方面内容呢?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-5 22:14:01 | 显示全部楼层
史上最强 发表于 2012-8-5 21:39
你想演示哪方面内容呢?

其实还没有特定的内容,目前还只是有这个想法。

小孩8岁,开学3年级。

让他把matlab当计算器肯定不是我想要的。当然,在他做运算技巧练习时这可以帮他验算。

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 22:31:13 | 显示全部楼层
imlucky1 发表于 2012-8-5 22:14
其实还没有特定的内容,目前还只是有这个想法。

小孩8岁,开学3年级。

那估计matlab也帮不上什么忙吧,因为数学还什么都没学到呢也就用用符号工具箱,教教编程可能也没什么兴趣。不过simulink连连模块也算挺好玩的了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-5 22:38:41 | 显示全部楼层
以下这个也许可以算一个例子吧:
有本robolab的书,小孩自己在看,有问题才找我商量。
上次他为里面这个问题找我了:LEGO小车,马达每次以同样的power转,但持续时间不一样,要求列个表,记录 小车开行距离-时间 数值。
然后问,如果要开某个距离,需要马达转多少时间?

因为有一点随机性,小孩用一开始距离最短的那个数据来作计算、推断,发现误差比较大。这时我给他找了个方格纸,给他去画点,然后目测画拟合直线,讲了为什么要搞一下拟合更好。因为这个比较直观,他还比较能接受拟合直线的概念。
这个直线我们又不满意,又擦了重画了几次。

这时如果有个软件,就可以更方便了,还可以跟他讲讲多种拟合的算法,比如最小二乘法什么的,然后直接让软件出拟合直线,相互比较,再跟他手工画的比较。这样的话效果应该会好得多,并乘势给他建立一些数学思维。

以后再有类似问题,他自己也可以去画拟合直线。

(而他学校的数学训练,就是让他们听到“15+6”时本能反应出是21.
最多再学个把6拆成5和1.
不是说这样不好,天天听着磁带做听算训练,实在过渡训练了。
而在数学思维方面和数学应用方面,现在的小学实在是很差的。)
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 23:09:31 | 显示全部楼层
imlucky1 发表于 2012-8-5 22:38
以下这个也许可以算一个例子吧:
有本robolab的书,小孩自己在看,有问题才找我商量。
上次他为里面这个问 ...

那您要这么说 我刚才已经决定matlab都能做了 记录角度数据,然后用拟合工具箱拟合,不需要写一行代码。matlab只是工具,教育方法还得看家长呵呵。 不过您需要这方面东西 我可以给您提供。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-6 00:19:09 | 显示全部楼层
史上最强 发表于 2012-8-5 23:09
那您要这么说 我刚才已经决定matlab都能做了 记录角度数据,然后用拟合工具箱拟合,不需要写一行代码。ma ...

谢谢
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-6 14:45:25 | 显示全部楼层
任何有关机器人的软件,讲到最后,全是数学!

IMLUCKY1教孩子方法值得学习!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-6 15:37:31 | 显示全部楼层
blackblue 发表于 2012-8-6 14:45
任何有关机器人的软件,讲到最后,全是数学!

IMLUCKY1教孩子方法值得学习!

的确到最后都是数学,但是MATLAB把数学全部优化成拖动滚动条看波形了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-6 18:59:39 | 显示全部楼层
blackblue 发表于 2012-8-6 14:45
任何有关机器人的软件,讲到最后,全是数学!

IMLUCKY1教孩子方法值得学习!

谢谢肯定
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-4-18 19:58 , Processed in 0.090562 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表