编辑推荐
适读人群 :本书可作为高等院校本科生、研究生MATLAB课程的辅助读物,也可作为从事科学计算、程序设计的科研人员的参考书。 新版第二版已上市,详情点击:
内容简介
MATLAB面向对象编程——从入门到设计模式
分为三部分。
第一部分介绍MATLAB面向对象编程基础知识,包括什么是类,类之间的基本关系,以及MATLAB提供的面向对象编程语言的具体功能;
第二部分是面向对象编程的进阶篇,对概念进行归类,方便读者在编程中遇到问题时查询和检索;
第三部分把面向对象编程的方法应用到实际问题中,并且从实际问题中抽象出一般的解决方法,即设计模式。
本书可作为高等院校本科生、研究生MATLAB课程的辅助读物,也可作为从事科学计算、程序设计的科研人员的参考书。
作者简介
徐潇,软件工程师,物理博士,研究方向为电子结构计算、密度泛函算法开发;计算机硕士,研究方向为图像处理。在科研编程中经历了开发大型程序难以维护的困难,花了很多时间用于改进程序但总不尽如人意。从2009 年接触并开始使用MATLAB面向对象编程,发觉工程进度被迅速加快,于是萌生了写一本介绍MATLAB 面向对象编程的书的念头,希望把这个优秀的工具介绍给大家。
李远,研究员(Senior Research Scientist),物理博士,研究方向为光电子器件;硕士就读于北京交通大学,后在Wake Forest University 取得物理博士学位,曾在华盛顿大学做博士后。希望这本《MATLAB面向对象编程——从入门到设计模式》能够给工程科学领域的工作者带来更多方便,尤其是在一些需要长期使用而且不断更新的程序上。
前言/序言
MATLAB 中文论坛创始人math:该书的第一位受益者
(代序)
2009 年末,我应中国科学院南京土壤研究所(简称土壤所)的邀请,与他们的科研人员一起开发“土壤红外光谱信息系统”。这个系统非常复杂,它涉及中国海量土壤光谱数据的快速存储和读取,数据处理算法的开发、调试和验证,以及客户端多界面(GUI)的开发。其中, 数据存取使用的是MATLAB 数据库工具箱和MySQL 数据库;数据处理算法(包括数据的滤波处理、降维、数据的匹配、预测等)使用的是MATLAB 统计学工具箱、优化工具箱和神经网络工具箱;客户端的界面非常多,如数据库的可视化操作、算法参数的在线调试以及数据处理结果的展示等,所有的界面都是使用MATLB GUIDE 完成的。从把系统的要求整理出来,到系统第一个版本的完成,用了将近1 个月的时间。由于是密集型开发,所以在这段时间内我对整个系统的流程、架构非常熟悉,因此开发起来也不是特别困难。该系统在2010 年获得了中国软件的著作权(编号:2010R11L027920)。
2013 年,土壤所再次邀请我。他们想对这个系统进行升级,并做成网络版——只要用户能连接网络并且使用MATLAB,就能使用这个系统,使之不仅仅局限于在土壤所使用,更希望它能服务于所有的科研人员,同时给该系统增加多种算法。土壤所成立了专门的研究小组以开发和维护此系统。当我在思考如何指导该研究小组升级系统时,我面临一个比较棘手的问题:如果对原系统进行升级,需要改动的地方特别多。因为数据的读写、算法的运用以及界面展示这三者之间是高度耦合的,很多函数的实现都是在MATLAB GUIDE 的回调函数里完成的。对于一个复杂的系统来说,一个地方的小小改动,通常需要测试整个系统架构和算法的稳定性,而且这也不利于系统更新。那么,科研人员有了新的数据匹配的算法,如何通过改变最少的代码来实现新的算法,同时又能保证系统的完整性和可靠性呢?
有一天我跟徐潇一起吃午饭,跟他分享了我遇到的问题。徐潇告诉我,软件设计中,解决这个问题的标准方法是使用面向对象编程和MVC(Model-View-Controller,模型-视图-控制器)模式。虽然看起来这有点浪费以前的代码,但对于系统的长远稳定性和易维护性来说,这是大型系统的不二选择。而且他正在写一本关于MATLAB 面向对象编程的书。他说,如果我感兴趣,他可以单独用一章专门来写如何基于MATLAB 面向对象编程实现MVC。我说好,你写好我第一个使用。两个星期后,徐潇发给我一个PDF 文件,以非常通俗的例子诠释了如何实现MVC 的过程,就是大家现在所看到的该书第7 章:分离用户界面和模型。我在使用的过程中,充分地感受到了MATLAB 面向对象编程的强大。我大概花了10 小时的时间,就把2009 年的系统架构改成了MVC 的架构。2013 年8 月,我把新的架构展示给了土壤所负责系统开发和维护的研究小组。该研究小组成员对MATLAB 语言了解不是很多,但是这并没有阻碍他们开发系统,因为我们已经完全把算法的模型(Model)、界面视图(View)以及如何实现用户输入的获取(如键盘、鼠标事件)这三者完全分开,放在了不同的类(Class)中。研究小组在一个星期之内就掌握了系统的架构,并且能独立地对系统进行开发和维护。以上是我的亲身经历。
MATLAB面向对象编程——从入门到设计模式 下载 mobi epub pdf txt 电子书 格式