Matlab notes

Matlab 是每位工科生都不可缺少的软件,在使用的过程中,总是会遇到这样那样的问题,因此写一点笔记在这里。
以下笔记主要适用于 Matlab R2011b x64 on Windows 7。

字体

Matlab 的默认字体效果基本上还停留在 XP 的年代,这一点似乎到了 R2014b 都没有改善。为了爱护眼睛,我每次装完 Matlab 之后第一件事情就是更改字体。Matlab 的字体分为两大类,Desktop code 和 Desktop text,先说前者。由于 Matlab 蛋疼地没有提供 fallback 功能(我感觉是这样),所以指定英文字体的话,所有中文都会显示为框框;而指定中文字体的话呢,英文就会非常非常的丑陋。
通常来说,在 Windows 平台,遇到这种情况,指定一个微软雅黑不失为一个解决方案。但是问题在于,微软雅黑中内嵌的英文字体,也就是修改版的 Segoe UI 是不等宽字体,非常不适合作为代码显示字体来阅读,因此就此方案不可行。
那怎么办呢?解决方案有两种,一种是采用网友自制的拼接字体:把微软雅黑和某些等宽英文字体拼接一下,然后就可以拿来用了。但是如果制作者的功力不到家的话,往往会发生一些问题,并且,正如那个问题中最高票答主所言,这是一种对版权的侵犯行为。好吧,其实大多数人的 Matlab 也是盗版的,我就不吐槽了。
第二个解决方法,就如梁海所言,可以考虑采用文泉驿微米黑字体,这是一款自 Droid sans 修改而来的开源字体,其中提供了等宽的选项,试了下感觉效果还不错,虽然感觉逗号和句号分辨起来有点吃力。
然后说说 Desktop text 的字体选择,这个就很随意了,英文版的话选个 Verdana 就好。但是这样设置完之后,你还是会发现帮助文档的字体非常非常之丑,我不知道这是什么鬼,目前的解决方法是把 HTML propotional text 的字号单独调整为 11。

文件关联

Matlab 比较神奇的一点就是,装完之后,不管系统如何变迁,都可以不需重新安装无障碍使用,至少我这个版本是这样。因此,尽管我已经重装了不知道多少次 Windows,Matlab 依然停留在我第一次安装它的那个样子,搞得跟一绿色软件似的。但是这样也会带来问题,就是文件关联。
我当然知道,在.m的属性里可以把打开方式指向 %MATLAB%/bin/matlab.exe,但是这样设置带来的问题就在于,当 Matlab 已经打开的时候,双击一个 .m文件会打开一个新的 Matlab 实例,对于我这样使用一台五岁的破笔记本的用户来说,这是相当痛苦的。
解决方法是,管理员权限运行 Matlab,在帮助文件中搜索以下语句:

Run utility to associate files with .m extension

点击链接运行。然后修改.m文件属性,把打开方式指向 MATLAB,注意是 MATLAB,而不是什么『matlab starter application』。这样就可以了。

Cell Mode

与 Mathematica 不同, Matlab 分为脚本和命令行窗口,两者是分开的。
命令行的好处是,你敲击回车的时候,不会运行你上一个回车之前的命令,因此适合执行只需要运行一次的命令,诸如调试时候的 clear 啊,close all 啊之类的。想象一下这种命令要是写在脚本里好像会比较蛋疼。
脚本的好处是,可以清晰的保留之前的所有命令,可以很好地保留前后逻辑关系,下次使用时,只要注意好头尾的输入输出就可以重用了。
但是在调试脚本的时候,有时候并不希望把整个脚本都重新运行一遍,这样会很耗时,那难道要把这个代码块复制到命令行里去执行嘛?那就太不优雅了。
其实 Matlab 提供了类似于 Mathematica 的 Cell mode,可以单独执行脚本里的一个代码块。每个代码块以 %%开头,注意百分号后面要跟至少一个空格,按 Ctrl + Enter 执行。另外每个代码块自带高亮,对于提高脚本的可读性很有帮助。
来我来测试一下 Farbox 的代码高亮支持不支持这个特性。

1
2
3
4
%% what
ans = 42;
%% why
I just don't know.

可惜是不支持啊。无所谓啦。

哲学

他们说,Matlab 的精髓就在于对矩阵的处理,能用矩阵的时候,就不要用循环来写。
我听信了他们的话,所以花了三天时间琢磨了一个别人一天就写好的两阶段单纯形法的程序。我是不是太二了。

to be continued…