QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2068|回复: 2
打印 上一主题 下一主题

【美赛必备】 MATLAB 入门教程六:编程风格与m文件

[复制链接]
字体大小: 正常 放大

2983

主题

142

听众

9762

积分

升级  95.24%

  • TA的每日心情
    开心
    2017-1-9 14:34
  • 签到天数: 272 天

    [LV.8]以坛为家I

    自我介绍
    吃吃吃

    社区QQ达人

    群组乐考无忧

    群组2014国赛优秀论文解析

    群组2016美赛冲刺培训

    群组2016国赛优秀论文解析

    群组2016国赛备战群组

    跳转到指定楼层
    1#
    发表于 2015-12-11 09:21 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    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

    一定要看一下这个!!!



    3856a6b6085e203c3ad951bc4d437011.jpg (1.51 MB, 下载次数: 195)

    3856a6b6085e203c3ad951bc4d437011.jpg

    zan
    转播转播0 分享淘帖0 分享分享1 收藏收藏0 支持支持1 反对反对0 微信微信
    果珍冰 实名认证       

    5

    主题

    30

    听众

    554

    积分

    一个数学爱好者

    升级  84.67%

  • TA的每日心情
    慵懒
    2017-7-27 17:11
  • 签到天数: 202 天

    [LV.7]常住居民III

    邮箱绑定达人 社区QQ达人 新人进步奖 发帖功臣 最具活力勋章 风雨历程奖

    群组2015国赛优秀论文解析

    群组Matlab讨论组

    群组2016美赛公益课程

    群组

    群组高数系列公益培训

    回复

    使用道具 举报

    果珍冰 实名认证       

    5

    主题

    30

    听众

    554

    积分

    一个数学爱好者

    升级  84.67%

  • TA的每日心情
    慵懒
    2017-7-27 17:11
  • 签到天数: 202 天

    [LV.7]常住居民III

    邮箱绑定达人 社区QQ达人 新人进步奖 发帖功臣 最具活力勋章 风雨历程奖

    群组2015国赛优秀论文解析

    群组Matlab讨论组

    群组2016美赛公益课程

    群组

    群组高数系列公益培训

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-23 12:30 , Processed in 0.371305 second(s), 69 queries .

    回顶部