发表于2024-12-26
MATLAB 向量化编程基础精讲 pdf epub mobi txt 电子书 下载
关于MATLAB编程,关于Mathworks官方的Cody,如果您希望有所了解并和全世界的高手“肩并肩”,这本书一定能不负你望。两位作者在各大MATLAB论坛任版主多年,都是MATLAB骨灰级用户,他们用平实的语言,剖析MATLAB的本质和系列编程技巧,因此,编程在这本书里是有趣的,让人欲罢不能的。MATLAB中文论坛为本书设有专门的交流版块,您有任何与本书有关的疑问,敬请来询。
《MATLAB 向量化编程基础精讲》使用MATLAB新版本2016a,拣选Mathworks官方群组Cody中一些有趣的代码问题,分6章讲解这些优秀示例代码中使用数组、字符串操作、正则表达式以及匿名函数等方面的MATLAB编程技巧,并对其中较为典型和精彩的用法做扼要点评,对一些复杂思路或代码的细节和步骤,还逐一展开了延伸分析,使学习MATLAB编程的用户,能迅速体会MATLAB矢量化编程语言的基本特色。
本书适合所有MATLAB编程爱好者和使用MATLAB的不同专业大学生阅读,还可供研究生、科研工作人员及高校教师参考。
马良,祖籍甘肃临洮,任教于新疆工程学院,副教授,东北大学博士研究生。自从2003年接触MATLAB后,便沉迷其中,虽闭门造车经年,但对MATLAB语言的喜好未改。作为普通高校教师,在平时的教学中,一直不遗余力地推广使用MATLAB更好地完成专业教学、学习和科研工作。
祁彬彬,毕业于中国石油大学(北京)地球探测与信息技术专业,毕业后一直从事石油软件研发工作。曾多次参加数学建模比赛,并获得全国一等奖、二等奖多次。近10年来,一直活跃在MATLAB的各大论坛,担任版主职务。在MATLAB官方的Cody程序解答活动中,目前排名全球第二。
第1章数组操作初步·1
1.1数组基础训练:算盘里的学问·1
1.1.1逐列循环结合正反向搜索·3
1.1.2利用累积乘积函数cumprod·6
1.1.3构造特殊的乘积因子·7
1.2数组基础训练:非零元素赋值为1·8
1.2.1循环+判断·8
1.2.2利用逻辑判断+矢量索引·9
1.2.3利用abs和sign·9
1.2.4min函数更改nanflag设置参数·10
1.3数组基础训练:将指定元素换成0·11
1.3.1循环+判断·12
1.3.2高低维索引转换后赋值·13
1.3.3利用bsxfun单一维扩展构造逻辑判断条件·15
1.3.4利用sparse函数对全零稀疏矩阵相关元素赋值·16
1.3.5利用累积方式构造向量的accumarray函数·17
1.4数组基础训练:正反对角线互换·19
1.4.1寻找元素行列索引关系循环赋值·20
1.4.2利用低维索引查找正反对角元素关系赋值·20
1.4.3结合逻辑数组或点乘构造对角线元素·21
1.4.4利用逻辑“或”操作·26
1.5数组基础训练:寻找真约数·28
1.5.1函数factor和组合命令nchoosek·28
1.5.2最大公约数命令·29
1.5.3含求余函数mod和rem的逻辑判断·30
1.6数组基础训练:康威的《生命游戏》·31
1.6.1枚举·32
1.6.2循环·34
1.6.3叠加与卷积·35
1.7数组基础训练:寻找最大尺码的“空盒子”·40
1.7.1循环·41
1.7.2利用conv2函数·42
1.8数组基础训练:寻找对角线上的最多连续质数·47
1.8.1卷积命令·48
1.8.2灵活的max+diff+find函数组合·53
1.9数组基础训练:扫雷棋盘模拟·59
1.9.1循环遍历元素+判断·60
1.9.2构造三对角矩阵的连乘方案·62
1.9.3利用卷积命令conv2·62
1.10数组基础训练:移除向量中的NaN及其后两个数字·65
1.10.1循环·66
1.10.2矢量化索引操作·67
1.11数组基础训练:把NaN用左边相邻数字替代·70
1.11.1循环+判断·70
1.11.2利用cumsum构造符合要求的索引·72
1.12数组基础训练:涉及类型转换的数据替代·75
1.12.1利用循环判断·76
1.12.2cellfun赋值符合条件的索引位元素·77
1.12.3利用原逻辑索引在cell数组中引用赋值·77
1.12.4统一逻辑索引以多输出方式赋值·77
1.13数组基础训练:递归中的输入输出变量交互·79
1.14小结·81
第2章字符串操作初步·82
2.1字符串基础训练:字符取反的七种武器·82
2.1.1利用循环+判断的传统方式·84
2.1.2矢量化索引与不同函数组合的替换取反·85
2.1.3函数sprintf+逻辑索引构造·85
2.1.4函数char+逻辑数组+四则运算符的多种字符串构造方式·87
2.1.5冒号操作做字符格式归并+ASCII码值运算转换·88
2.1.6函数num2str及其灵活的设定参数·90
2.1.7构造字符向量以输入做逻辑索引取反·91
2.2字符串基础训练:星号排布·92
2.2.1循环·93
2.2.2矢量化构造方式·95
2.3字符串基础训练:“开心”的2013·95
2.3.1
循环+利用函数unique判断·96
2.3.2循环+num2str转化年份为字符串分离数字·96
2.3.3num2str分离数字+排序做差·97
2.4字符串基础训练:寻找“轮转”的子字符串·99
2.4.1几种不同的循环方式·100
2.4.2利用卷积命令conv2+测试矩阵·105
2.4.3利用cellfun+strfind+测试矩阵gallery·105
2.5字符串基础训练:猜测密码·106
2.5.1循环+判断·107
2.5.2矢量化索引方式·108
2.6字符串基础训练:用指定数量填充字符·108
2.6.1循环判断及repmat扩展序列·109
2.6.2利用索引构造扩展·110
2.6.3try流程省略判断+函数strjoin拼接向量·110
2.6.4利用2015a版本中的新函数repelem·112
2.7字符串基础训练:带判断条件的字符串替代·112
2.7.1循环+判断·113
2.7.2矢量化索引构造·114
2.8字符串基础训练:抽取指定位数数字组成向量并排序·116
2.8.1floor+log10+mod组合·117
2.8.2转换为字符串提取单字符·118
2.9字符串基础训练:二进制字符中查找最长的“1”序列·122
2.9.1查找逻辑索引做差·123
2.9.2字符匹配方式处理字符串·124
2.9.3查找字符替换为空格·125
2.10字符串基础训练:剔除指定数字的序列求和·126
2.10.1利用log10或mod等函数的数值处理·126
2.10.2利用进制转换函数dec2base·128
2.10.3利用数值转字符函数num2str构造逻辑索引·129
2.11字符串基础训练:元胞数组内字符串的合成·129
2.11.1函数sprintf·130
2.11.2利用向量的列排布变维·131
2.11.3函数strjoin·132
2.12小结·133
第3章数组操作进阶:扩维与构造·134
3.1关于矩阵维数扩充的预备知识·135
3.1.1repmat函数·135
3.1.2索引构造·135
3.1.3kron函数扩维·136
3.1.4meshgrid和ndgrid函数扩维·137
3.1.5矩阵外积·139
3.1.6bsxfun函数矩阵扩维·139
3.1.7其他思路·145
3.1.8扩维思路的总结·145
3.2数组训练进阶:向量数值为长度的扩维·146
3.2.1循环·147
3.2.2利用arrayfun扩维·148
3.2.3利用repmat扩维·148
3.2.4利用meshgrid和ndgrid扩展矩阵索引·149
3.2.5利用bsxfun扩维·150
3.3数组训练进阶:求和与构造·151
3.3.1直接索引法·151
3.3.2加法中的减法·152
3.3.3中部元素置零·153
3.3.4测试矩阵构造·153
3.3.5卷积和滤波命令·157
3.4数组训练进阶:“行程长度编码”序列构造·160
3.4.1利用循环拼接repmat扩展矩阵·161
3.4.2索引扩维、arrayfun扩展和cell2mat拼接·161
3.4.3按reshape变维向量循环处理·161
3.4.4递归·162
3.4.5直接调用函数repelem·163
3.5数组训练进阶:“行程长度编码”的反问题·163
3.5.1循环拼接向量·164
3.5.2利用矢量化多次寻址构造序列·165
3.6数组训练进阶:孤岛测距·166
3.6.1序列1,0元素索引位相减取最小值·166
3.6.2直接处理每段“安全”区域·167
3.6.3利用相邻项数值的构造和比较·168
3.6.4利用滤波函数filter2·168
3.7数组训练进阶:生成索引数自扩展序列·170
3.7.1循环拼接·171
3.7.2利用测试矩阵hankel·172
3.7.3利用上三角矩阵函数triu+meshgrid构造·172
3.8数组训练进阶:指定子向量长度求均值·173
3.8.1循环逐段求均值·174
3.8.2利用频数累加函数accumarray·174
3.8.3利用测试矩阵hankel·176
3.8.4利用卷积系列命令·177
3.9数组训练进阶:统计群组数量·177
3.9.1循环拼接向量·178
3.9.2涉及排重命令unique的几种解法·179
3.9.3利用累积求和函数cumsum与diff·181
3.10数组训练进阶:对角矩阵构造·181
3.10.1矩阵叠加·182
3.10.2借助特殊矩阵构造·185
3.10.3循环处理构造思路·187
3.11数组训练进阶:在时间序列中插入0元素·187
3.11.1指定位置赋值·187
3.11.2增加0元素用reshape变维·189
3.11.3循环·190
3.11.4利用kron函数扩展矩阵·190
3.11.5正则替换·191
3.12数组训练进阶:Bullseye矩阵构造·191
3.12.1工具箱特殊函数·192
3.12.2利用特殊矩阵构造·194
3.12.3基本数列构造并矢量化扩维·195
3.12.4递归、判断与循环·199
3.13数组训练进阶:Bullseye矩阵构造扩展之一·200
3.13.1利用求余命令mod或rem获得矩阵数值·200
3.13.2利用循环逐元素赋值·203
3.14数组训练进阶:Bullseye矩阵构造扩展之二·204
3.14.1ndgrid对“基”序列扩维·204
3.14.2利用测试矩阵spiral试凑·204
3.15数组训练进阶:Bullseye矩阵构造扩展之三·205
3.15.1构造“基”序列扩维·206
3.15.2特殊矩阵构造·209
3.15.3递归与循环·209
3.16数组训练进阶:Bullseye矩阵构造扩展之四·210
3.16.1循环·211
3.16.2向量组合+meshgrid函数构造·212
3.16.3bsxfun扩维·214
3.16.4测试矩阵spiral试凑·214
3.17数组基础训练:最小值替换为行均值·215
3.17.1循环与矢量化函数二者的结合·216
3.17.2利用高低维索引转换函数sub2ind·217
3.17.3利用稀疏矩阵构造指定位置索引·217
3.17.4bsxfun单一维扩展构造索引·217
3.17.5累积最值函数cummin·218
3.18数组训练进阶:矩阵元素分隔——“内向”的矩阵·219
3.18.1循环+判断·220
3.18.2利用函数kron扩维·221
3.18.3利用索引构造变换对新矩阵赋值·223
3.18.4利用稀疏矩阵命令sparse构造·225
3.18.5利用累积求和命令accumarray·226
3.19数组训练进阶:矩阵分块均值——“外向”的矩阵·227
3.19.1循环逐个元素查找相邻索引号·227
3.19.2利用circshift函数换序叠加·228
3.19.3利用二维卷积和滤波函数·229
3.20小结·229
第4章字符操作进阶:正则表达式·231
4.1闲话正则·231
4.2灵活的正则语法·232
4.2.1元字符·232
4.2.2转义字符·234
4.2.3匹配次数·234
4.2.4模式·236
4.2.5分组运算·237
4.2.6关于锚点·239
4.2.7左顾右盼·239
4.2.8逻辑与条件运算·240
4.2.9标记操作·241
4.2.10动态正则表达式·243
4.2.11注释与搜索标识·246
4.3正则表达式基础:元音字母计数·248
4.3.1其他解法·249
4.3.2正则解法·251
4.4正则表达式基础:所有的字母都是大写吗?·252
4.4.1其他解法·252
4.4.2正则解法·254
4.5正则表达式基础:移除字符串中的辅音字母·255
4.5.1其他解法·255
4.5.2正则解法·258
4.6正则表达式基础:首尾元音字母字符串的查找·260
4.6.1其他解法·261
4.6.2正则解法·262
4.7正则表达式基础:提取文本数字求和·263
4.7.1其他解法·263
4.7.2正则解法·265
4.8正则表达式基础:钱数统计·267
4.8.1其他解法·268
4.8.2正则解法·271
4.9正则表达式基础:文本数据的“开关式”查找替换·274
4.9.1其他解法·275
4.9.2正则解法·275
4.10正则表达式基础:剔除且只剔除首尾指定空格·279
4.10.1其他解法·280
4.10.2正则解法·283
4.11正则表达式基础:电话区号查询·284
4.11.1其他解法·284
4.11.2正则解法·287
4.12正则表达式基础:字母出现频数统计·288
4.12.1其他解法·289
4.12.2正则解法·292
4.13正则表达式基础:翻转单词(不是字母)次序·294
4.13.1其他解法·294
4.13.2正则解法·296
4.14正则表达式基础:寻找最长的“回文”字符·298
4.14.1其他解法·298
4.14.2正则解法·299
4.15正则表达式基础:求解“字符型”算术题·301
4.15.1其他解法·301
4.15.2正则解法·304
4.16本书前三章中一些问题的正则解法308
4.16.1正则表达式重解例1.12·308
4.16.2正则表达式重解例2.1·309
4.16.3正则表达式重解例2.5·310
4.16.4正则表达式重解例2.6·310
4.16.5正则表达式重解例2.8·312
4.16.6正则表达式重解例2.9·313
4.16.7正则表达式重解例2.10·314
4.16.8正则表达式重解例3.5·315
4.16.9正则表达式重解例3.6·315
4.16.10正则表达式重解例3.7·319
4.17小结·319
第5章多维数组漫谈·320
学习MATLAB,从来不是“学习MATLAB”这么简单。
从一开始,对它的学习就和所学专业领域的相关理论同步,在学习阶段对它们的理解又交错生长、相互促进。毫无疑问,专业问题的研究处于核心主体地位,它高于对一个具体工具软件的钻研,但我们往往需要让公式、语言描述等,能以MATLAB作为媒介,解释、模拟、甚至预测事物运转的规律和真相。但这对于多数未必见长于编程的工程师,或者非计算机专业的高校大学生,具有一定的挑战性。
所以这时,学习方法就显得更加重要,人常说“工欲善其事,必先利其器”,可遇到的麻烦却往往是“器利,工未驭之以确法,致事不善”。层出不穷、匪夷所思的代码问题,往往是学习MATLAB伊始,没养成良好的编程习惯、没按正确方法发挥MATLAB特点所致。“良好习惯”或“正确方法”,并不仅仅是“每行代码都加注释”、“写一行隔个空行”等,当然,良好的编程习惯对代码后期维护调试大有好处,但这不是本书重点探讨的问题。我们要说的是:深入了解乃至掌控MATLAB函数,达到有效、简捷地用代码解决问题之目标。要达到这样的程度,恐怕要从调用方式到搭配组合再到执行效率,完整透彻理解MATLAB一些常用函数命令后,才能做到。很多人以为不难,认为看看命令帮助,学几个常见调用格式,写出程序,没有红色出错警示,就算大功告成了。
真是这样吗?举例而言:其实相当一部分用过MATLAB软件,哪怕使用多年的用户,对MATLAB的常用命令也都未必谈得上熟悉。不信?不妨试试下面这个对带有“非数”的数列求和的问题:
源代码1:带有非数时的求和
1 >> a=[1:5,NaN,7]
2 a =
3 1 2 3 4 5 NaN 7
4 >> sum(a)
5 ans =
6
源代码1 说明,当元素序列中存在特殊元素“ MATLAB 向量化编程基础精讲 电子书 下载 mobi epub pdf txt
别的还没吃,实在想不到板栗真的不好吃呀。应该与是赠品无关吧。祈祷其他的好吃,毕竟买了不少。机器人操纵器的控制问题是确定引起末端执行器执行命令运动所需的联合输入的时间历史的问题。 联合输入可以是联合力和转矩,或者它们可以是致动器的输入,例如电动机的电压输入,这取决于用于控制器设计的模型。 指令运动通常被指定为一系列末端执行器位置和方向,或者作为连续路径。
评分很不错的一本书,值得学习。不像国内出的很多书一样烂大街的质量。推荐……
评分很好的一本书,值得仔细研读。
评分这本书是真的好看,看完之后感觉考浙大没压力
评分书不错,我很喜欢
评分不错的说,正在看。实用性不错,这套书都很好
评分大宝贝棒棒哒好好补补对对对地方不不不
评分很不错的书!在网上下到电子版的,但是不方便,还是纸质的好!书里的算法讲的很细致,还有例程程序学习,真心推荐哪!
评分期待数模比赛的我
MATLAB 向量化编程基础精讲 pdf epub mobi txt 电子书 下载