新書推薦:
![复利:全球顶尖投资者的31节认知与决策思维课](http://103.6.6.66/upload/mall/productImages/24/30/9787515372976.jpg)
《
复利:全球顶尖投资者的31节认知与决策思维课
》
售價:HK$
103.4
![最后的都铎:中世纪余晖下的宫廷爱欲与权力密码(女性写给女性的女性历史)](http://103.6.6.69/upload/mall/productImages/y24/8/9787559677419.jpg)
《
最后的都铎:中世纪余晖下的宫廷爱欲与权力密码(女性写给女性的女性历史)
》
售價:HK$
101.2
![窄门:纪德三部曲(插图珍藏版)](http://103.6.6.66/upload/mall/productImages/24/29/9787559486912.jpg)
《
窄门:纪德三部曲(插图珍藏版)
》
售價:HK$
158.7
![工业机器人集成应用](http://103.6.6.66/upload/mall/productImages/24/31/9787122449276.jpg)
《
工业机器人集成应用
》
售價:HK$
91.8
![像大人一样生存,像孩子一样生活(小时候觉得开心就好,现在也是)](http://103.6.6.66/upload/mall/productImages/24/30/9787510479519.jpg)
《
像大人一样生存,像孩子一样生活(小时候觉得开心就好,现在也是)
》
售價:HK$
56.4
![万有引力书系 海洋女王 里斯本的历史](http://103.6.6.66/upload/mall/productImages/24/31/9787218174976.jpg)
《
万有引力书系 海洋女王 里斯本的历史
》
售價:HK$
89.7
![周易大全](http://103.6.6.69/upload/mall/productImages/y24/8/9787221184023.jpg)
《
周易大全
》
售價:HK$
147.2
![元和十四年 : 大唐中兴与沉沦的十字路口](http://103.6.6.66/upload/mall/productImages/24/30/9787523409923.jpg)
《
元和十四年 : 大唐中兴与沉沦的十字路口
》
售價:HK$
79.4
|
編輯推薦: |
希望读这本书的人有一定的编程基础,这样读后会有更丰厚的收获。
本书的特色之一,就是特意针对近10年部分新版本出现的新操作、新功能和新函数,结合全国本科或者研究生数学建模竞赛中的一些赛题数据,给出作者们自己的分析和解决方案。书中数以百计的实例、500多段代码,均是作者们多年网络探讨和一线教学工作的感悟和体会,定会让读者有读后忍不住拍案叫绝。
本书在MATLAB中文论坛有交流版块,欢迎对MATLAB高效编程和在MATLAB数学建模领域有兴趣的读者前往交流探讨。详见前言。
读者免费提供书中示例的程序源代码和数据,请关注微信公众号“北航科技图书”,回复“3843”,获得百度网盘的下载链接。
|
內容簡介: |
本书主要介绍MATLAB编程基本操作方法与技巧。由于MATLAB近几年在基本操作和数据类型等方面发生了巨大变化,本书对于新版本MATLAB,尤其是R2019b到R2021b中的比较引人注意的新增函数与实用功能,结合代码示例说明其具体的应用方法。全书共10章,第1~4章介绍基本环境设置、代码调试工具使用方法、数据类型等,结合案例讲解包括隐式扩展与逗号表达式等基本操作在内的综合运用;第6~10章讲述函数与脚本、子函数与匿名函数在工程计算中的运用,以及绘图和实时脚本中的一些新老函数与代码案例。
本书包含大量代码案例,展示了MATLAB的基本操作方法、函数命令与数据类型是如何有机融合在一起来解决实际问题的。全书通俗易懂,适合具有一定基础但希望更进一步理解和掌握MATLAB编程语言特点的读者阅读,也可为科学研究工作者、教师在运用MATLAB语言解决实际编程问题时提供代码编写技巧与求解方法的参考。
|
關於作者: |
祁彬彬:毕业于中国石油大学(北京)地球探测与信息技术专业,毕业后一直从事石油软件研发工作。曾多次参加数学建模比赛,并获得全国一等奖、二等奖多次。近10年来,一直活跃在MATLAB的各大论坛,担任版主职务。在MATLAB官方的Cody程序解答活动中,目前排名全球第二。
马良:博士毕业于东北大学,副教授,从事现代机械设计理论相关研究。自2003年开始学习MATLAB语言,作为一名高校教师,近两年来在工作中开始致力于研究如何合理与综合地运用MATLAB等工具软件,辅助大学生数学建模的培训与教学,指导学生在2021~2022年连续取得了高教社杯国家一等奖、Mathorcup一等奖和美赛M奖的成绩。
靳欢:博士毕业于美国爱荷华大学,现任宁波诺丁汉大学助理教授,宁波市领军与拔尖人才。2016—2019年任麻省理工学院(MIT)兼职研究员。从事优化方法与机器学习方法在物流交通领域的应用、理论和实证产业结合的研究,运用优化理论和机器学习方法在国际SCI期刊上发表十余篇学术论文。主持和参与多项国家级及市级自然科学基金项目。
|
目錄:
|
第1章绪论1
1.1培养MATLAB编程的代码直觉1
1.1.1案例1:用MATLAB实现快速排序算法2
1.1.2案例2:MATLAB计算“亲密数”4
1.2使用新版本MATLAB6
第2章MATLAB环境设置与代码调试工具10
2.1设置MATLAB工作环境10
2.1.1修改默认工作文件路径10
2.1.2工作文件夹间的快速切换10
2.1.3一键调换界面背景配色方案12
2.1.4帮助文档的基本设置与有效利用14
2.1.5MATLAB代码编写环境16
2.2代码注释与智能缩进19
2.3MATLAB中的代码调试20
2.3.1MATLAB代码调试工具20
2.3.2代码调试示例1:逐行顺序调试22
2.3.3代码调试示例2:用Pause on Errors调试循环体23
2.3.4代码调试示例3:添加逻辑断点或assert函数24
2.4Visual Studio Code编写和运行MATLAB代码25
2.4.1VS Code编写MATLAB代码的环境配置26
2.4.2VS Code运行MATLAB代码28
2.5MATLAB编程语言的特点与代码示例分析28
2.5.1案例1:指定元素包含的判断问题29
2.5.2案例2:矩阵中的运算操作32
2.5.3案例3:列元素交换位置34
2.6总结36
第3章运算操作符与数据类型37
3.1运算操作符37
3.1.1MATLAB 中的常用运算符38
3.1.2最“MATLAB”的操作方式:矢量化运算39
3.1.3低调而强大的隐式扩展47
3.2数据类型52
3.2.1MATLAB中的基本数据类型52
3.2.2cell/struct/table 类型特征辨析53
3.2.3技巧:神秘的逗号表达式55
3.2.4技巧:两种快速生成结构数组的方法57
3.2.5文本类型:char 或 string58
3.2.6R2020b新功能:pattern模式搜索匹配string文本63
3.2.7用于时间描述的数据类型:datetim65
3.2.8关于映射表结构:containers.Map67
3.3总结69
第4章逻辑关系、逻辑运算与索引寻址70
4.1逻辑关系和逻辑运算70
4.1.1逻辑条件里的8个“是非”断定70
4.1.26种MATLAB 逻辑运算操作72
4.1.3进阶:“短路”运算与常规数组逻辑操作特征辨析73
4.1.4逻辑运算代码示例1:分段函数76
4.1.5逻辑运算代码示例2:构造字形矩阵78
4.2数组的索引寻址80
4.2.1多角标的高维索引80
4.2.2单一角标的低维索引81
4.2.3索引查找函数find82
4.2.4进阶:示例解析不同索引应用方法83
4.3总结91
第5章MATLAB 脚本与函数92
5.1脚本、函数的基本功能辨析92
5.2m-function 的基本结构剖析93
5.3varargout/varargin 定制数量可变的输入输出95
5.4用inputParser 解析输入变量97
5.5R2019b 新功能:用arguments 解析输入变量99
5.5.1arguments 调用格式与基本功能100
5.5.2示例1: 解析输入包含“名称值”属性参数对的函数101
5.5.3示例2:用自定义解析函数输入变量102
5.5.4示例3:解析输入包含varargin的函数103
5.6增强程序条理性的利器:子函数104
5.7函数和脚本综合运用实例105
5.7.1MATLAB 中的数值积分106
5.7.2非线性方程(组) 计算——求解器式与问题式方案110
5.7.3常微分方程及参数传递116
5.8总结120
第6章MATLAB 程序控制流程121
6.1控制流程概述121
6.2for/while 循环流程示例122
6.2.1for 循环122
6.2.2while 循环125
6.2.3for/while 流程综合示例:十一抽杀问题126
6.3多路分支的if 和switchcase 流程130
6.3.1克拉兹序列中if 流程解读130
6.3.2今天星期几——switch 流程做文本选择132
6.4总结136
第7章匿名函数及其应用137
7.1匿名函数概念与基本用法137
7.1.1匿名函数调用方法137
7.1.2应用示例1:匿名函数与参数化的绘图138
7.1.3应用示例2:以数据“反调用”匿名函数句柄140
7.2嵌套匿名函数与参数传递141
7.3嵌套匿名函数示例1:含参变量数值积分142
7.3.1匿名函数构造一重数值积分被积表达式142
7.3.2匿名函数构造带参数非矩形区域三重积分被积表达式143
7.4嵌套匿名函数示例2:含参变量的非线性方程组144
7.5嵌套匿名函数示例3:含参变量的常微分方程146
7.5.1ODE 的匿名函数基本解法146
7.5.2嵌套匿名函数构造含参变量常微分方程组148
7.5.3嵌套匿名函数 结构数组传递参数149
7.5.4嵌套匿名函数构造隐式微分代数方程(组) 模型152
7.5.5嵌套匿名函数构造携带分段参变量微分方程模型154
7.5.6匿名函数与ODE 中的Events 事件构造156
7.6总结159
第8章图形技术160
8.1图形对象160
8.1.1概念:MATLAB图形的对象父子结构关系161
8.1.2示例:空间参数曲线与图形对象层级162
8.2平面图形绘制基本方法概述163
8.2.1示例:曲线图绘制及属性参数设置代码分析163
8.2.2示例:曲线图和属性值设置初步165
8.2.3示例:图形属性参数的进一步设置167
8.2.4示例:多坐标轴子图的 subplot 和 tiledlayout 函数170
8.2.5绘图函数 plot 的数据逻辑175
8.2.6用 stackedplot 函数绘制堆叠图183
8.2.7函数 histcounts/histogram 与频数直方图188
8.2.8柱状图195
8.2.9用 polarplot 绘制极坐标图209
8.2.10用 xline/yline 绘制垂直和水平线210
8.2.11R2018b 新功能:增强的图轴和数据交互工具212
8.2.12R2020b 新增:线图对象的数据点标记214
8.3三维曲线 (面) 和数据可视化217
8.3.1对流线切片示例的拓展思考217
8.3.2三维数据图形的“动画”视效实现222
8.3.3光源和视效美化初步223
8.3.4综合示例:几何体堆叠画法和patch补片机理分析226
8.4R2019b 新功能:通过图表容器类自定义图形对象234
8.5MATLAB图形输出237
8.5.1MATLAB图形输出方式与类别237
8.5.2用 Export Setup(hgexport) 输出图形238
8.5.3R2020a 新函数:用copygraphics 输出图形239
8.5.4用pirnt/exportgraphics 函数打印和输出图片240
8.6总结243
第9章数据和文件I/O244
9.1数据I/O概述244
9.2load/save读写数据245
9.2.1用save保存数据245
9.2.2用load读取数据247
9.3用importdata读取数据249
9.4用textscan读取数据250
9.5R2013b 函数:readtable/writetable读写数据254
9.5.1简述新增数据读写高级命令254
9.5.2table 数据类型的基本知识255
9.5.3示例:readtable/writetable 读写 dat/txt 数据259
9.5.4示例:readtable 读取 csv 数据261
9.5.5示例:readtable/writetable 读写 Excel 数据262
9.5.6示例:readvars 从文件中读取变量264
9.6R2019a 新函数:readcell/writecell 读写数据265
9.6.1示例:writecell 将多个 Word 表格导入 Excel 文件265
9.6.2示例:readcell 将数据读入 MATLAB267
9.7R2019a 新函数:readmatrix/writematrix 读写数据270
9.7.1示例:writematrix cellfun 实现数据读取与类型变换270
9.7.2示例:复杂数值型数据的提取与读写272
9.8R2020b 新函数:用 readstruct 读取 xml 数据文件276
9.9xlsread/xlswrite 成为“不推荐函数”原因初探279
9.10总结279
第10章实时代码编辑器 (Live Editor)281
10.1引言281
10.2Live Editor 主要功能简介283
10.2.1新建实时脚本和实时函数283
10.2.2初识实时脚本的文本和代码环境283
10.2.3实时脚本中的大纲目录分级284
10.2.4文本环境中的公式插入285
10.2.5插入超链接286
10.2.6Code Example 功能287
10.2.7实时脚本中的互动式控件288
10.3实时脚本插入 App 实现交互任务289
10.4Live Editor 符号计算替代 MuPAD 的原因分析292
10.4.1Live Editor 符号计算:合乎习惯的公式显示效果292
10.4.2Live Editor符号计算:一致的语法风格293
10.5R2020b 新功能:交互式优化建模计算示例296
10.5.1空域飞行管理问题描述与数学模型297
10.5.2优化模型与实现代码297
10.5.3实时脚本嵌入交互式优化 App300
10.6总结303
参考文献304
|
內容試閱:
|
MATLAB作为一款大型科学运算工具,由于矩阵化的简练语言特征,拥有面向工程领域种类繁多的工具箱,长期占据着市场同类软件的主流地位,是高校硕博士、大中专师生以及科研工作者、工程师等从事各类研究与实践工作时的必备软件之一。近几年,我国许多高校理工科的课程体系设置中,也都增设了与MATLAB相关的辅修课程。
如何学习MATLAB才能达到依据学习和工作的具体要求随时编写程序解决问题的程度,是个有趣的话题。本书由大量问题与相应的代码解决方案,给出属于自己的答案,即:从实际问题入手,尽可能提出多种求解方案,综合呈现各类函数、基本操作不同组合的应用方式,达到切实提高用户代码实战运用能力的终极目标。本书提到的代码问题,绝大多数是笔者在高校从事实际MATLAB教学或者在网络上回答他人提问时所遇到的较为典型的案例。经过深入分析,笔者惊讶地发现许多初学者遭遇的代码困境,都源自对MATLAB基本语法知识、函数组合或操作的不熟悉,甚至是错误认识。
为此,本书通过大量案例系统地介绍MATLAB编程中的基本操作,但没有采取帮助文档的组织方式,而是以综合运用MATLAB的基础语法规则与矢量化操作为出发点,在代码解决方案中加入目前MATLAB中文书籍中尚未广泛提及的新版本函数、数据类型和操作方法。尽可能紧跟版本变化,把新功能、新命令快速纳入问题求解的程序中,让读者转换视角,基于问题求解,能够跟随书中案例的分析点评,不知不觉地对多种函数的搭配组合留下印象,举一反三,在自己的科研或工程项目中,把问题条件转换成“似曾相识”的某个代码模型,从而以不变应万变。
例如,MATLAB自R2016b版本起将隐式扩展纳入基本矩阵运算,因此以前要借助bsxfun函数才能完成的操作,现在用基本运算符和逻辑操作符就能直接实现,且包括min/max、dist、plot这样最基本的常用命令,甚至一些新的数据类型如string、datetime等,在调用时也自动支持隐式扩展操作。隐式扩展具有撼动用户MATLAB代码编写基本认知的潜在能力,随之而来的问题是:用户能否迅速适应版本更替,理解并充分利用隐式扩展简化代码运算操作,实现提高编程效率的目标?从历年的教学经验来看,仅通过帮助文档的相关代码示例,多数初学者很难达到真正掌握的要求,还是要结合更多的问题求解示例,经过比较、分析和实践才有可能满足用代码解决具体问题的需求。为此,本书在不同章节的许多问题中,将隐式扩展操作融入各类程序方案,读者通过阅读和揣摩隐式扩展在书中各类问题求解代码中的作用,就可以快速掌握这项非常实用的新矩阵操作方法。
再如从R2013b到R2020b版本,MATLAB陆续添加了从readtable/writetable到readcell/writecell,再到readmatrix/writematrix和readstruct/writestruct的系列数据读写函数,一个基于面向对象的完整highlevel数据I/O生态布局不知不觉完成了。以前很多读写函数如dlmread/dlmwrite、xlsread/xlswrite、csvread/csvwrite也都因此而纳入“不推荐”函数序列。MATLAB实现这种函数替代的原因是什么?新函数有哪些具体的特色与优势?这些问题本书也用具体的代码案例和相关分析一一做了解答。新版本、新操作、新命令的引入所带来的影响不胜枚举,限于篇幅,本书以抛砖引玉为目的,撷取其中比较典型的部分,在不同章节中以函数综合应用为基本框架,做了诸如:用于参数验证的arguments关键字应用、嵌套匿名函数代码实践、实时脚本及其与符号运算工具箱的结合、图形输出新增命令exportgraphics/copygraphics等具体内容的讨论。期望通过这些启发性与趣味性兼具的问题代码方案,激发读者学习全新MATLAB的兴趣,与时俱进,早日到达MATLAB编程的自由王国。
本书能得以完成需要感谢很多人,与同事陶彦辉、同学孙聪博士的讨论让我们拥有了更加丰富的案例素材,实验室的学生曾立恒、黄健文、李世博和廖正宏等,在课程教学过程中持续地反馈互动为许多书中案例的产生带来了新鲜的思考视角和灵感。对于网络上诸多热心网友的问题与建议,北京航空航天大学出版社陈守平编辑的辛勤工作,以及我们挚爱的家人一如既往无条件地支持鼓励,在此呈上我们真挚的谢意。
读者可以登录北京航空航天大学出版社的官方网站,选择“下载专区”→“随书资料”下载本书配套的程序代码。也可以关注“北航科技图书”微信公众号,回复“3843”可获得本书的免费下载链接。还可以登录MATLAB中文论坛,在本书所在版块(https://www.ilovematlab.cn/forum-282-1.html)下载相应代码。下载过程中遇到任何问题,请发送电子邮件至goodtextbook@126.com 或致电010-82317738咨询处理。书中给出的程序仅供参考,读者可根据实际问题进行完善或自行改写,以提升自己的编程实践能力。
受限于编者的能力和时间,书中的不妥与疏漏之处,欢迎广大读者批评指正。
|
|