第一图书网

MATLAB高效编程技巧与应用

吴鹏 北京航空航天大学
出版时间:

2010-6  

出版社:

北京航空航天大学  

作者:

吴鹏  

页数:

259  

Tag标签:

无  

前言

当今社会,数学作为一切学科基础地位的特征越来越明显,其重要性不言而喻。MATLAB从诞生那一天起,就为数学和实际应用之间架起了一座桥梁,如今经过20多年的发展,这座桥变得越来越雄伟、壮观。现如今,从国外高校到国内高校,从国外期刊到国内期刊,早已随处可见MATLAB应用的身影。更重要的是,近几年来,国内许多高新技术公司也开始普遍应用MATLAB来进行算法前期开发、验证。如今,国内MATLAB相关书籍已经有很多,这些书籍极大地推动了MATLAB在国内的普及。但是MATLAB发展迅速,目前每年推出两个版本,现有书籍对MATLAB高版本一此特有的编程思想、高效的编程方法、新技术等,鲜有专门详细的讨论。本书力图以一种全新的模式,从各个角度将MATLAB呈现给读者。全书共分两部分:第一部分(第1~5章)是有关MATLAB高效编程的一些方法、原则介绍;第二部分(第6~12章)是案例分析。关于高效编程,本书详细讨论了传统的向量化编程原则在新旧版本MAT-LAB下的异同,MATLAB如何处理海量数据,匿名函数和嵌套函数灵活、强大、富有弹性的功能。在案例分析部分,介绍了25个案例,这些案例都来自我平时的研究积累以及长期以来帮助网友解决的典型问题。案例涉及复杂的多重积分、积分方程、非线性方程求解、全局优化、遗传算法、Benders分解算法、人脸图像压缩与重建、灰色分析、距离判别法与Bayes判别法在分类中的应用、支持向量机、各类型的常微分方程(组)求解、层次分析法以及定时器的应用等。互联网的兴起催生了很多专门讨论MATLAB相关技术的论坛、社区。这些社区集中了来自社会各行各业、高校各学科各专业的MATLAB使用者、爱好者。这些社区往往能够紧跟MATLAB的发展,并对其最新的技术及时作出反应。我从2005年开始就一直在国内一些成立较早的MATLAB论坛社区,如研学论坛、仿真科技论坛、振动论坛的MATLAB版面参与讨论问题,并发表了一系列技术精华帖。MATLAB中文论坛成立后,我通过该平台更是经常与各种程度的MATLAB使用者打交道,了解MATLAB使用者最容易遇到的一些问题,以及一些MATLAB软件最新的技术。可以将本书看成是我对这些经验的提取与总结。我在上大学期间一度十分痛恨“数值计算”这门课程,因为为了应付考试而不得不背一些算法流程、公式并手动计算结果,这是非常枯燥和烦琐的。后来竞180度转弯,喜欢上了数值计算,这完全是因为MATLAB——转机就是大二下学期的数学建模,必须要借助MATLAB完成。当用MATLAB轻而易举地随意拟合了一个20多阶的多项式来近似一堆数据时,我被震撼了。这种震撼是忍受了长时间无比枯燥的手动计算后而发自肺腑的。当然现在看来,那时候的拟合毫无技术含量,毫无实际意义。但也正是因为这个开始,促使我不断去探索MATLAB。一开始没有计算机,就去看书,在图书馆里看各种有关MATLAB的书。随着看的书的增多,MATLAB在脑子里也越来越清晰了,对它的喜爱也越来越深。后来2005年在公司实习,查资料时偶然进入论坛这片新天地,蓦然发现居然有那么多相同爱好的人,从此一发不可收拾,便开始了和一帮志同道合的朋友切磋提高的过程。

内容概要

本书是作者八年MATLAB使用经验的总结,精心设计的所有案例均来自于国内各大MATLAB技术论坛网友的切身需求,其中不少案例涉及的内容和求解方法在国内现已出版的MATLAB书籍中鲜有介绍。 本书首先针对MATLAB新版本特有的一些编程思想、高效的编程方法、新技术进行了较为详细的讨论,在此基础上,以大量案例介绍了MATLAB在科学计算中的应用。内容包括:MATLAB快速入门、重新认识矢量(向量)化编程、MATLAB处理海量数据、匿名函数类型介绍、嵌套函数类型介绍、积分以及积分方程求解案例、优化及非线性方程(组)求解案例、人脸图像压缩与重建案例、有关预测分类的案例、常微分方程(组)求解案例、层次分析法及其MATLAB实现、定时器及其应用。 本书可作为高等院校本科生、研究生MATLAB课程的辅助读物,也可作为从事科学计算和算法研究的科研人员的参考用书。

书籍目录

第一部分 高效编程技巧 第1章 MATLAB快速入门  1.1 熟悉MATLAB环境   1.1.1 MATLAB的启动   1.1.2 MATLAB desktop   1.1.3 MATLAB 程序编辑器(Editor)  1.2 MATLAB牛刀小试   1.2.1 Hello,MATLAB   1.2.2 万能计算器用法   1.2.3 一个“囧”的动画   1.2.4 编写第一个MATLAB函数   1.2.5 用MATLAB运行Windows系统命令   1.2.6 用MATLAB发送电子邮件  1.3 M语言介绍   1.3.1 数值和变量   1.3.2 MATLAB程序流程控制  1.4 学习MATLAB的方法 第2章 重新认识矢量(向量)化编程  2.1 矢量化编程流行的一些观点  2.2 重新认识循环   2.2.1 高版本MATLAB对循环结构的优化   2.2.2 选择循环还是向量化  2.3 提高代码效率的方法   2.3.1 预分配内存   2.3.2 选用恰当的函数类型   2.3.3 选用恰当的数据类型   2.3.4 减少无谓损耗——给一些函数“瘦身”   2.3.5 变“勤拿少取”为“少拿多取”   2.3.6 循环注意事项   2.3.7 逻辑索引和逻辑运算的应用  2.4 应用高版本向量化函数提高开发效率   2.4.1 accumarray函数   2.4.2 arrayfun函数   2.4.3 bsxfun函数   2.4.4 cellfun函数   2.4.5 spfun函数   2.4.6 structfun函数 第3章 MATLAB处理海量数据  3.1 处理海量数据时遇到的问题   3.1.1 什么是海量数据   3.1.2 经常遇到的问题  3.2 有效设置增加可用内存   3.2.1 系统默认下内存分配情况   3.2.2 打开Windows 3GB开关  3.3 减小内存消耗注意事项   3.3.1 读取数据文件   3.3.2 数据存储   3.3.3 减小内存其他注意事项 第4章 匿名函数类型  4.1 什么是匿名函数   4.1.1 匿名函数的基本定义   4.1.2 匿名函数的种类  4.2 匿名函数应用实例   4.2.1 匿名函数在求解方程中应用   4.2.2 匿名函数在显式表示隐函数方面的应用   4.2.3 匿名函数在求积分区域方面的应用   4.2.4 匿名函数在求数值方面的应用   4.2.5 匿名函数和符号计算的结合   4.2.6 匿名函数在优化中的应用   4.2.7 匿名函数在求积分区域方面的应用   4.2.8 匿名函数和cell数组的结合应用 第5章 嵌套函数类型  5.1 什么是嵌套函数   5.1.1 嵌套函数的基本定义   5.1.2 嵌套函数种类  5.2 嵌套函数的变量作用域  5.3 嵌套函数彼此调用关系   5.3.1 主函数和嵌套函数之间   5.3.2 不同的嵌套函数之间   5.3.3 嵌套函数调用关系总结  5.4 嵌套函数应用实例   5.4.1 嵌套函数在求解积分上限中的应用   5.4.2 嵌套函数在GUI中的应用   5.4.3 嵌套函数在3D作图中的一个应用   5.4.4 嵌套函数表示待优化的目标函数   5.4.5 嵌套函数在表示微分方程方面的应用第二部分 案例介绍 第6章 积分以及积分方程案例  6.1 案例1:一般区域二重、三重积分MATLAB计算方法   6.1.1 概要   6.1.2 一般区域二重积分的计算   6.1.3 一般区域三重积分的计算  6.2 案例2:被积函数含有积分项的一类积分的一些求解方法   6.2.1 网格求解法   6.2.2 插值求解法   6.2.3 RBF神经网络逼近法   6.2.4 dblquad调用RBF神经网络法   6.2.5 dblquad+arrayfun方法   6.2.6 quad2d+arrayfun方法  6.3 案例3:一般区域N重积分  6.4 案例4:蒙特卡洛法计算N重积分   6.4.1 概述   6.4.2 基本的蒙特卡洛积分法   6.4.3 等分布序列的蒙特卡洛法  6.5 案例5:第二类FREDHOLM积分方程数值求解   6.5.1 概述   6.5.2 具体解法   6.5.3 实例  6.6 案例6:第一类FREDHOLM积分方程数值求解   6.6.1 概述   6.6.2 一类可以化为第二类Fredholm积分方程的第一类Fredholm积分方程求解方法   6.6.3 第一类Fredholm积分方程的直接数值积分解法讨论  6.7 案例7:第二类VOLTERRA积分方程数值求解   6.7.1 概述   6.7.2 具体解法   6.7.3 实例  6.8 案例8:第一类VOLTERRA积分方程数值求解   6.8.1 概述   6.8.2 转化为第二类Volterra积分方程   6.8.3 实例 第7章 MATLAB优化及非线性方程(组)求解案例  7.1 案例9:全局最优化的讨论   7.1.1 随机行走法寻优介绍   7.1.2 改进的随机行走法寻优  7.2 案例10:FSOLVE求非线性方程组的应用   7.2.1 概述   7.2.2 四元非线性方程组的求解   7.2.3 九元非线性方程组的求解   7.2.4 非线性积分方程的求解  7.3 案例11:渐变光波导方程求解   7.3.1 求解渐变光波导的模方程   7.3.2 二维渐变光波导方程作图  7.4 案例12:遗传算法在复杂系统可靠度和冗余度分配优化中的应用   7.4.1 问题提出   7.4.2 数学模型   7.4.3 遗传算法简介   7.4.4 实例分析  7.5 案例13:遗传算法在车间设备布局优化中的应用   7.5.1 问题提出   7.5.2 数学模型   7.5.3 算法步骤   7.5.4 求解代码  7.6 案例14:应用BENDERS分解算法求解混合0-1规划   7.6.1 概述   7.6.2 Benders分解算法   7.6.3 实例分析 第8章 案例15:人脸图像压缩与重建  8.1 概述  8.2 基本的PCA方法实现人脸图像压缩与重建   8.2.1 K-L变换   8.2.2 特征向量的选取  8.3 2DPCA方法实现人脸图像压缩与重建   8.3.1 概述   8.3.2 2DPCA算法介绍   8.3.3 图像压缩(特征提取)   8.3.3 图像重建  8.4 MATPCA方法实现人脸图像压缩与重建   8.4.1 概述   8.4.2 MatPCA算法  8.5 MODULEPCA方法实现人脸图像压缩与重建   8.5.1 概述   8.5.2 ModulePCA算法  8.6 算法在MATLAB平台上的实现   8.6.1 概述   8.6.2 基本PCA与2DPCA和MatPCA方法GUI   8.6.2 Module PCA方法GUI 第9章 有关预测分类的案例  9.1 案例16:北京市国民生产总值的灰色分析   9.1.1 概述   9.1.2 引言   9.1.3 灰色数据融合预测算法与灰色关联度   9.1.4 实例分析  9.2 案例17: 距离判别法与BAYES判别法在分类中的应用   9.2.1 概述   9.2.2 判别方法GUI   9.2.3 判别方法GUI应用举例  9.3 案例18: 支持向量机的应用   9.3.1 概述   9.3.2 支持向量机介绍   9.3.3 MATLAB所依据的支持向量机模型   9.3.4 支持向量机实现图像分割   9.3.5 支持向量机实现手写体数字识别 第10章 常微分方程(组)求解案例  10.1 案例19:常微分方程(组)解析求解案例   10.1.1 概述   10.1.2 dsolve函数   10.1.3 dsolve函数求解实例  10.2 数值求解常微分方程函数   10.2.1 概述   10.2.2 初值问题求解函数   10.2.3 延迟问题以及边值问题求解函数   10.2.4 求解前准备工作  10.3 案例20:非刚性/刚性常微分方程初值问题求解   10.3.1 概述   10.3.2 非刚性问题举例   10.3.3 刚性问题举例  10.4 案例21:隐式微分方程(组)求解   10.4.1 概述   10.4.2 利用solve函数   10.4.3 利用fzero/fsolve函数  10.5 案例22:微分代数方程(DAE)与延迟微分方程(DDE)求解   10.5.1 概述   10.5.2 微分代数方程(DAE)举例   10.5.3 延迟微分方程(DDE)举例  10.6 案例23:边值问题求解   10.6.1 概述   10.6.2 求解案例   10.6.3 对bvp4c和bvp5c的改进 第11章 案例24:层次分析法及其MATLAB实现  11.1 层次分析法概述  11.2 层次分析法实现步骤   11.2.1 层次分析法的主要步骤   11.2.2 建立层次分析的结构模型   11.2.3 构造成对比较矩阵   11.2.4 单一准则下元素相对排序权重计算及比较矩阵一致性检验   11.2.5 各元素对目标层的合成权重的计算过程  11.3 应用实例 第12章 案例25:定时器及其应用  12.1 定时器介绍   12.1.1 概述   12.1.2 定时器属性介绍  12.2 定时器应用举例参考文献

章节摘录

插图:3)程序设计方面考虑的不周,导致内存溢出。这方面的原因一般表现得比较隐蔽。我们在设计一些变量较多的复杂程序时,可能没有及时释放掉一些不再会用到的变量所占用的内存。这样随着程序的运行,变量越来越多,内存中碎片也越来越多,再要产生新的较大的矩阵,就可能发生内存溢出的问题。4)问题求解方法考虑欠周,导致内存溢出。同样的问题,可能由多种求解方法。不同方法的效率以及所占用的资源相差很大。问题规模小的时候,不用考虑这方面的问题,可是问题规模较大的时候就必须考虑具体的求解方法了,否则就可能会由于内存溢出而无法求解问题。譬如符号计算。符号计算由于其语法简单,并且和传统教科书解决问题思路一致等特点,使得许多初学者很爱使用符号计算。但是符号计算由于精确性,使得其在计算过程中要保留大量的中间结果,这样导致复杂的计算问题用符号计算很容易内存溢出,即使不溢出,对于很多复杂的计算问题,符号计算也无法给出解析解。还有当求解涉及较大规模的稀疏型矩阵的问题时,没有采用稀疏矩阵数据结构也容易导致内存溢出。(2)运行极其缓慢的原因这是因为大数据量的处理总是伴随着大量的计算还有频繁的对内存各地址进行访问,这些开销往往比较占用资源。如果物理内存不够,系统开始调用页面文件来供程序使用,会使得程序运行速度有很大程度的下降。本章后半部分将介绍不增加物理内存的情况下,可供MATLAB高效利用内存的方法。3.2有效设置增加可用内存,随着计算机硬件的发展,如今的内存价格较之以前低廉了很多,主流PC包括笔记本式计算机的内存配置基本都不低于4GB了,这已经达到32位操作系统的寻址极限了。虽然64位操作系统可以支持更大的内存,但由于诸多因素导致64位操作系统完全取代32位操作系统还需要一段时间,在可预见的一段时间内,使用32位操作系统的读者还会很多,因此在32位操作系统下如何有效利用内存是这节主要讨论的内容。本小节以windows XP 32位操作系统为例来说明如何设置boot.ini,使得MATLAB程序可以利用更多的内存。3.2.1系统默认下内存分配情况首先需要澄清一个概念——虚拟内存(virtual memory)。有很多朋友习惯把硬盘上预留出来用做内存交换和扩展内存寻址空间的“交换文件”当做“虚拟内存”。因为它不是内存芯片,却在必要的时候和物理内存进行内存页交换,所以认为是“虚拟”的内存。当然这样讲有一定道理,也可以认为是人们通常说的“虚拟内存”代表的意思。但是有的时候,“虚拟内存”还代表另一种含义。简单说来,这种含义就是特定操作系统下多路程序进程共享的计算机物理内存以及页面文件。


编辑推荐

《MATLAB高效编程技巧与应用:25个案例分析》是目前国内最大的MATLAB&Simulink技术交流平台,MATLAB中文论坛联合《MATLAB高效编程技巧与应用:25个案例分析》作者、编辑将为您提供所需要的问题答案和大量技术支持,让《MATLAB高效编程技巧与应用:25个案例分析》成为一个联系同行,链接相关知识点的活动载体。在线交流,有问必答。

图书封面

图书标签Tags

广告

下载页面


MATLAB高效编程技巧与应用 PDF格式下载



看到这本书翻了几页就觉得真的很不错,我也是一个工科专业高年级电子信息专业的学生,自己就是做信号信息处理这一块儿的所以比较注重实践能力的培养,这本书以实际的案例来讲述MATLAB高效变成的相关的技巧,很实用,值得推荐


很实用 对理解matlab的编程思想有帮助


数学建模大赛和平时matlab编程必备,内容很清晰,也比较新颖,我很有兴趣!


个人比较喜欢的一本书,比matlab编程的各种教材好用的多。


matlab高级编程推荐


别人推荐的书,买来一看,果然很强大。我平时使用的matlab只是最基本最常用的功能。通过这个书学习了不少东西。但是要把MATLAB编的程序转换成C++还是有一定的难度。里面现成的函数太强大了。


虽然内容没有细细看完,但看前面应该是言简意赅的。我最烦什么都说一大通,没有多少实质内容的书了,大多matlab书籍就是絮絮叨叨的跟你这说一下,那说一下,书名还说什么精通之类的,实际上就是凑字数。


我其实想买的是另一本书,结果买成了这一本,还行吧,不过看matlab的书还是挺沉重的


很早的时候看过,确实能够帮助人迅速进如matlab环境


书算是由浅至深的,不过进行的速度稍微有点快,可能需要更多的练习才能掌握吧。不过,作为编程类的书籍,怎么没有光盘呢?


在论坛看到这本书的作者的帖子感觉不错就买下了 的却很好!


对图像处理作用不太大


没有复杂的理论,比较适合应用的人。比较实用。


就是中间有些偏应用的部分太过专业了,一般用不到。


内容充实,暂时真正学习中
书本质量差点而已


很详细,能指导学习,不过价格也可以


内容详实,还有光盘讲解,能学到些知识


内容完整,例子经典~~


书的质量很好,内容也很好,慢慢学


很棒的一本书,除了有些小错误


很使用,适合自学


书很好,但不适合初学者看。有一定基础的看会比较好。


书很不错,不过需要有一定的基础


专业书,看看学习不错


对这个系列的第一本买的书,学习了很多知识


书的纸张,印刷都很好。


仔细找时间瞧瞧


还可以的好。看了才好,用了才好,学了才好。好不好都在自己的决定。


这个系列的书写的都很不错 只是下载有时候有点麻烦


书这东西只要书名对了没什么好评的


讲解较全,但是要注意自己的安装版本


不错,看不懂。


不错,学到不少的东西!


haoyong~~


书的印刷质量很好,绝对正版


很喜欢这一系列的书,讲解的很到位,深入浅出


书店没买到,在这买到了


给个说法


我喜欢,好书一本


期待是本好书


给爸妈买的,他们说好


非常好,质量很好,书的帮助很大


书的可操作性好,含金量很很高。我很满意


技巧性比较强 值得深读


冲的就是在线解惑


确实是有些自己的心得!支持


想学一些MATLAB编程的东西,但是千篇一律的入门教程、各种精通太没意思,看一些实际的东西可能收益更大再好的书,不看也和废纸一样


题目是高效编程,但里面是解微分方程和积分方程的东西占了大部分,组织的较乱,这本书所谓的编程技巧就是嵌套、匿名,说成是高效编程过于牵强


关于MATLAB高效率编程讲的很有心得


这本书挺实用的,里面很多详细的例子,对于学习MATLAB的人很有用处,是一本好书。


书的内容适合有一定MATLAB的基础的看,确实不错


MATLAB这门课 课设需要资料,买来恶补一下,顺便借鉴借鉴。。


案例很好,要是前面基础部分更丰富点就更好了,特别是函数部分


帮助我解决了常微分方程组的求解问题


案例稍有些简单啊


恩恩,这是一本提高编程效率,激发编程思想的好书....


认真看了书中的部分内容,感觉作者用心写了每一个部分。写了很多程序的技巧。


书籍质量还好 内容还没细看


前人总结的技巧 让后来人少走弯路


喜歡書中的解釋方法!


不错的书,里面有很多技巧,很受用,正在研读中


要网上找了很久,很有用的技术书!


有些新的见解和分析 还不错


对于一些初学者,书不错,


内容还行,可书的质量不大好


属于相对比较新的东西,还可以。


还没用,用过才知道真的


对建模很有帮助!!


给同学买的,书还可以


粗略的看了一下,和网上说的差不多吧,纸的质量一般,不如丛书的GUI手记质量好。


里面的实例给人省事了


看完后不想再看


都是经验之谈,很好的书啊


感觉还行,能够学到其它书上学不到的东西,买的还算值。


书的确不错的,质量和发货速度都满意


替别人买的,翻看了几下,还可以。


5天就到了


由于要参加今年的数学建模 不得不花点心思在matlab上面 于是就上网浏览一些书籍 觉得现在这个copy的年代里 就是这样 这本书总体不错 没有期待的那么好 总评 还行 我是负责编程的 买这本书 我觉得值


看起来很晦涩啊,适合matlab比较精通的人,内容一般


我觉得这本书本身不是很系统,但是总算给我们初学者一个观念:简化程序,达到最高效率。另外案例也很有参考性,值得阅读。


这本书还是比较注重实践的,但是对于基础学者来说,重点太扩散了!


纸质,印刷都挺好,讲得也很好,非常实用的一本书


还没深入看,不过感觉有点意思,虽然作者水平、语言功力均一般,


有很多技巧性的东西,讲的还是不错的。在实践中要多多理解和消化


书写得很细致,且回答了很多实际遇到的疑难问题,尤其是案例分析写得也很好,同时能紧跟matlab版本的新变化以及编程流行趋势就行讲解分析,不是为一本在matlab编程领域独具风格的好书!


讲的很独到,真是从不同的角度去理解matlab。值得看!


malab编程的一些实用的例程可以找到


非常喜欢这种民间作者的风格。


内容丰富 能学到很多东西 值得一读


书现在很贵,以前类似的书兑水很多。这书虽然不能说面面俱到,但确实有帮助。


想找关于matlab编程实例的书,选了很久选的这本,稍微有点难度,正在学习。


书还行,看了几章,希望以后的几章更给力


书的纸张很不错 发货也很快 很喜欢 谢谢


里面有些内容比较新颖,能给人启发!价格也还比较公道


Matlab经典书籍


MATLAB高效编程技巧与应用


这个书,看了都会喜欢的


案例额选的很一般


很好,例子不错


学习专用书-有助提高用途


相关图书