Dahua 的个人资料笑对人生,傲立寰宇照片日志列表 工具 帮助
8月26日

minesweeper

有好些时间没有更新blog,因为这段时间有很多别的事情:所做的research最近在进行implementation,观看奥运,接待朋友,搬家 。。。。。。现在生活开始转回学期的状态了。

这一年来在Csail一直使用Linux工作站,它的性能非常出色。前两天工作到晚上的时候,有点疲惫,想干点别的——终于发现这台机子的系统缺了一点东西——没有游戏。于是,自己动手,丰衣足食,用MATLAB写了一个扫雷,呵呵。我不是艺术青年,也就谈不上有多少美工设计了,不过玩起来的感觉,和在windows下的扫雷也没有太大差别。

程序放到Matlab Exchange上面了,有兴趣就去瞧瞧吧,呵呵

http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=21211&objectType=file

后来才发现,KDE下面还是有扫雷的,叫KMines。不过,还是自己写的东西比较亲切了。

现在越来越多的科学计算以外的东西开始在matlab下面被实现了——虽然不如在windows下面的counterpart pp,不过功能都挺齐全。Emacs的Fans们可以一天到晚只用Emacs一个程序不出来完成几乎全部的工作和娱乐。matlab离这种“操作系统化”的境界也不远了。

matlab自己的浏览器,你可以试试: web('www.google.com');  还有自己的ftp,文件下载命令urlread,音乐播放命令play,和电影播放命令movie。(在低版本matlab,上面的部分命令可能还没提供)

像email, painter这样的功能虽然暂时还没有内建,不过,实现起来也不是特别困难了。也许在不远的将来,我们真的可以长时间在matlab下面完成各种工作不用出来。

----------------------------------------------------------------------------------------------------

既然说到这里,就继续说点MATLAB的GUI编程吧。以前,在香港的时候,当算法要移植到系统的时候,都是用C#来完成外围的UI。现在,已经长时间在Linux下面工作了。坦白的说,可以选择的UI结构其实是更多了,主要有GTK, Qt,还有Java里面的Swing, Swt。但是,它们现在还处在战国时代,百家争鸣,却没有主流。现在自己写一些UI也主要是为了自己方便,也就不想折腾太多架构了,还是回到Matlab去吧。

比起其它高级语言下面的常用UI体系,Matlab的UI还是比较“土”的——但是,非常实用。它提供了一种普通语言一般没有内建的控件:axes,你可以直接在里面绘制各种图表。另外一个优势,就是和matlab代码的无缝套接,原来写好的算法,不需要任何移植或者重新封装,就能在这个UI上面直接调用。虽然长得很朴素,但是,对于科学方面的应用,它的开发效率无疑是最高的。

它提供了两种编写GUI应用程序的方式:使用Guide(一个类似于窗口设计器的东西,能直接往里面拉控件和调节参数),或者是直接手工写代码。我个人比较偏向于使用后者,一来自己写的东西代码比较简洁,二来自己能够自由选择合适的程序结构(取决于应用的逻辑),而不受限于自动生成的程序结构。

但是,写matlab对GUI应用有一个根本性的缺陷,那就是这种语言的核心不支持多线程编程(它的新版支持多核运算,但是和multithread不是一个概念),任何长时间的程序一旦跑起来,就会把其它东西的运行block掉。因此,它适合用于单步运算时间不太长的交互式算法,而长时间运行的陈程序,比如大规模的training,一般情况还是不要用UI来控制了。