MATLAB 入门教程六:编程风格与m文件 取自http://www.matlabsky.com/forum-viewthread-tid-17682-fromuid-88314.html

Language is like a cracked kettle on which we beat tuned to dance to, while all the time we long to move the stars to pity.” - Gustave Flaubert, in Madame Bovary

——摘自MATLAB 编程风格指南-Richard Johnson 著

MATLAB和很多计算机成语语言一样需要代码(格式)的正确性、清晰性与通用性。良好的写作规范的程序比糟糕的写作规范的要好,因为他们具有较少的错误、易于调试与修改,因此,从一开始就考虑风格是很重要的。我们写出来的程序别人看不懂,你写的再好那也是一堆垃圾。MATLA的程序语言都是在m文件里完成的。

推荐俩个pdf大家可以自行看一下。就把其中我认为几个中要的部分个大家罗列一下。

http://dl.dbank.com/c081rv1r3q Matlab编程风格指南

http://dl.dbank.com/c0te7q7e0i 华为公司程序培训教材

  • 排版
排版的目的是帮助读者理解代码,缩排特别有助于展示程序的机构。
  • 注释
注释的目的是为代码增加信息。注释的典型应用是解释用法、提供参考信息、证明结果、阐述需要的改进等。经验表明,在写代码的同时就加上注释比后来再补充注释要好。

注释文字应该简洁易读

一个糟糕的或者是无用的注释反而会影响读者的正常理解。N.Schryer 提到:“如果代码与注释不一致,那么或许两者都是错误的。”一个通常更重要的是注释应该讲的是“为什么”(Why)和“怎么做”(how),而不是“是什么”(what)。

所有的注释语句应该用英语写作

在国际环境中,英语是最提倡使用的语言。这个不仅仅是因为国际环境的问题,使用过MATLAB程序的人都是到她的汉化是多么的垃圾。而且使用汉语很多时候都是运行不了的,所以一定要养成使用英语的习惯,当然有时可以适当的使用拼音。(当然仅限于这个程序是自己看的。)

  • 文档规范化
作为有用的文档应该包含一个对如下内容的可读性的描述:代码打算干什么(要求),它是如何工作的(设计),它依赖于什其他什么函数以及怎么被其他代码调用(接口),以及它是如何测试的等。对于额外的考虑,文档可以包含解决方案的选择性的讨论以及扩展与维护的建议。

Dick Brandon讲到:

“Documentation is like sex;when it\'s good,it\'s very,very good,and when it\'s bad,it\'s better than nothing.”

(这句话太经典了)

  • 首先考虑书写文档
一些程序员相信的方法是:“代码第一,回答问题是以后的事情。”而通过经验,我们绝大多数人知道先开发设计然后再实现可以导致更加满意的结果。如果将测试与文档留在最后,那么开发项目几乎不能够按期完成的。首先书写文档可以确保其按时完成甚至可能减少开发时间。

下面介绍个人认为是m文件最重要的功能,但是大部分书籍和资料都没有提到这一个功能。就是m文件里的publish功能!!

以前在学习自动控制时,想起做的那些PPT,想要把matlab程序非常好看的贴到ppt上是一件非常有难度的一件事情,而且为了打印作业我还得把m文件里的程序复制到word文档然后再把图片进行编排,花费了相当多的宝贵时间。那么现在有了这个功能,一切变得那么的简单。(当然有的时候不会出现你要的下过,还是需要花费点时间进行后期处理的,不过还是可以节省很多时间,当然前提是你遵守了上面的那些编写规则!!)

强烈推荐大家把这个视频看完了!!短短的5分钟,但是可以为你以后编写matlab程序剩下无数时间。

http://www.mathworks.com/videos/matlab/publishing-matlab-code-from-the-editor.html

publish功能的实现你要知道一个技巧就是%%后面一定要有一个空格,%后也需要一个空格!!!!

谈一谈m文件的debug功能

用过C编辑器的都有这种感觉,就是让程序能够在自己的调控下一点一点运行,非常有助于自己的理解,并且十分有助于程序错误的调试,也就是我们常说的debug。这种功能在VC++或是TC上都很容易实现,在一些单片机的集成开发环境IDE中也很容易实现。我想说的是,在MATLAB里面,这种功能也是异常的强大的。

  • debug菜单
控制单步运行

step单步,不进入函数

step in单步,进入子函数单步

step out在函数中的话跳出函数,否则直接跳入下个断点处

save and run存储,运行

go until cursor运行到光标处

可以看到,以上几个按钮和C编辑器中是基本一样的意思

断点操作

set/clear breakpoint:设置清除断点

set/modify conditional breakpoint设置或修改条件断点,条件断点可以使程序满足一定条件时停止

enable/diable breakpoints使断点有效或无效

clear breakpoints in all files清除所有断点

stop if errors/warnings程序出现错误或警告时停止运行,进入调试但不包括try...catch中的错误

进入调试时,命令窗口出现如下字样

K>>

运行到断点,程序停止,如要继续,则使用debug中的continue按钮

切换工作空间,结束对程序的调试,打开编辑窗口中的stack列表,选择base,切换到主工作空间。记得要清楚掉断点,红色圆点去掉了,绿色箭头(调试)变为白色,然后选择continue,白色箭头去掉,调试完成。

以下是一些常用的调试命令(转张卫国《MATLAB程序设计与应用》):

dbstop 断点设置

dbclear 清楚断点

dbcont 继续

dbdown/dbup 修改工作空间的上下文关系

dbquit 退出调试

dbstack 显示当前堆栈的状态

dbstatus 显示所有已设置的断点

dbstep 执行一行或多行代码

dbtype 显示M文件代码和相应的行号

内容不多,但是我觉得编写程序时debug是非常有用的,一些错误,不用单步等往往不容易找到,特别是在一写控制流或者有点乘等语句的m文件里。

对于m文件调用函数功能在上回控制流的那个帖子里已经写出。把自己想要介绍的m文件的功能都介绍完成了。

最后再次强调一遍,短短的5分钟,但是可以为你以后编写matlab程序剩下无数时间。

http://www.mathworks.com/videos/matlab/publishing-matlab-code-from-the-editor.html

一定要看一下这个!!!