《MATLAB高效编程技巧与应用:25个案例分析》
书籍勘误汇总贴帖在16/17楼!我的新书,预计6月前后出版。书籍的内容简介+前言+目录如下:欢迎大家关注。
《MATLAB高效编程技巧与应用:25个案例分析》前言+简介+目录
内容简介
本书针对MATLAB新版本一些特有的编程思想、高效的编程方法、新技术进行了较为详细的讨论,在此基础上,以大量案例介绍了MATLAB在科学计算中的应用。内容包括:MATLAB快速入门、重新认识矢量(向量)化编程、MATLAB处理海量数据、匿名函数类型介绍、嵌套函数类型介绍、积分以及积分方程案例、优化及非线性方程(组)求解案例、人脸图像压缩与重建案例、有关预测分类的案例、常微分方程(组)求解案例、层次分析法及其MATLAB实现、定时器及其应用。
本书可以作为高等院校本科生、研究生MATLAB课程的辅助读物,也可作为从事科学计算和算法研究的科研人员的参考用书。
前 言
当今社会,数学作为一切学科基础地位的特征越来越明显,其重要性不言而喻。MATLAB从诞生那一天起,就为数学和实际应用之间架起了一座桥梁,如今经过20多年的发展,这座桥变得越来越雄伟、壮观。现如今,从国外高校到国内高校,从国外期刊到国内期刊,早已随处可见MATLAB应用的身影。更重要的是,近几年来,国内许多高新技术公司也开始普遍应用MATLAB来进行算法前期开发、验证。
如今国内MATLAB相关书籍已经有很多,这些书籍极大地推动了MATLAB在国内的普及。但是MATLAB发展迅速,目前每年推出两个版本,现有书籍对MATLAB高版本一些特有的编程思想、高效的编程方法、新技术鲜有专门详细的讨论。很多教材还在介绍老版本的MATLAB里的技术、方法。譬如inline函数对象,现如今The Mathworks公司早已不推荐使用。
本书力图以一种全新的模式、从各个角度将MATLAB呈现给读者。全书共分两部分,第一部分是有关MATLAB高效编程的一些方法、原则介绍,第二部分是案例分析。关于高效编程,本书详细讨论了传统的矢量化编程原则在新旧版本的MATLAB下的异同、MATLAB如何处理海量数据、匿名函数和嵌套函数灵活、强大、富有弹性的功能。
在案例分析部分,一共介绍了25个案例,这25个案例都来自作者平时的研究积累以及长期以来帮助网友解决的典型问题。案例涉及复杂的多重积分、积分方程、非线性方程求解、全局优化、遗传算法、Benders分解算法、人脸图像压缩与重建、灰色分析、距离判别法与Bayes判别法在分类中的应用、支持向量机、各类型的常微分方程(组)求解、层次分析法以及定时器的应用等等。
互联网的兴起催生了很多专门讨论MATLAB相关技术的论坛、社区,这些社区集中了来自社会各行各业、高校各学科各专业的MATLAB使用者、爱好者。这些社区往往能够紧跟MATLAB的发展,并对其最新的技术及时作出反应。作者从2005年开始就长期活跃在国内一些成立较早的MATLAB论坛社区,如研学论坛、仿真科技论坛、振动论坛的MATLAB版面参与讨论问题,并发表了一系列技术精华帖。MATLAB中文论坛成立后更是经常与各种程度的MATLAB使用者打交道,熟悉MATLAB使用者最容易遇到的一些问题,以及一些MATLAB软件最新的技术。本书可以看成是作者对这些经验的提取与总结。
作者上学期间一度十分痛恨数值计算这门课程,因为为了应付考试要不得不去背一些算法流程、公式,并手动计算结果,这是非常枯燥和繁琐的。后来180度转弯喜欢数值计算,完全是因为MATLAB。转机就是大二下学期的数学建模,必须要借助MATLAB完成。当用MATLAB轻而易举的胡乱拟合了一个20多阶的多项式来近似一堆数据时,我被完全震撼了。这种震撼是发自内心的,尤其是忍受了长时间无比枯燥的手动计算后而发自肺腑的。当然现在看来,那时候的拟合毫无技术含量,毫无意义。但也正是这个开始促使作者不断去探索MATLAB,一开始没有电脑,就去看书,在图书馆里看各种有关MATLAB的书。随着看的书的增多,MATLAB在脑子里也越来越清晰了,对它的热爱也越来越加深了。后来05年在公司实习通过查资料偶然进入论坛这片新天地,蓦然发现居然有那么多相同爱好的人,从此一发不可收拾,便开始了和一帮志同道合的朋友切磋提高的过程。
特别感谢北京航空航天大学出版社陈守平编辑,在她一再支持与鼓励下,作者决定接受挑战,完成本书创作。
在本书的写作过程中,作者得到了天津科技大学谢中华老师xiezhh、MATLAB中文论坛创始人math(张延亮)和仿真科技论坛前总版主bainhome(马良)的支持与鼓励,在此,作者向他们表示最真诚的谢意。
最后,还要感谢我的家人朋友,在他们无微不至的关心与支持下,我顺利完成本书的写作,在此,向他们表示最衷心的感谢。
由于作者水平有限,书中难免出现错误,恳请广大读者和同行批评指正,作者不胜感激。
吴鹏
2010年3月于北京市昌平区
目录
第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.32DPCA方法实现人脸图像压缩与重建
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.2dsolve函数
10.1.3dsolve函数求解实例
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定时器应用举例
参考文献
[ 本帖最后由 ChaChing 于 2010-6-20 21:46 编辑 ] 有一不成熟的想法, 等新书出版后, 再请LZ发个专帖, 看是否可设个专区, 方便读者一起讨论!?
不过个人还未请示高层, 不知是否可行!? 尽量看看 强烈支持rocwoods兄!!! 恭喜rocwoods新书出版,呵呵 恭喜rocwoods出书~~前来膜拜~~~ LZ的功力, 有目共睹! 出书时来学习
若不清楚处, 还请开通
期待拜读! 期待中
个人对时间复杂度较感兴趣 期待中..... 刚通网,支持一下roc。