发表于2024-11-23
关于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 向量化编程基础精讲 下载 mobi pdf epub txt 电子书 格式 2024
MATLAB 向量化编程基础精讲 下载 mobi epub pdf 电子书这本书很棒,准备学习这个呢,质量也可以
评分非常不错的一本书,很好,很好,非常好,我正需要,非常专业讲的非常详细
评分不错,书很好,希望能学习完,下次如果需要还来京东购买。
评分书不错,,很好,,
评分京东正版,优惠不如某逊多,不过送货比他们快多了。
评分是正品,物流挺快。
评分这几天事多,没有来得及看,期待好书
评分我为什么喜欢在京东买东西,因为今天买明天就可以送到。我为什么每个商品的评价都一样,因为在京东买的东西太多太多了,导致积累了很多未评价的订单,所以我统一用段话作为评价内容。京东购物这么久,有买到很好的产品
评分正在学这个软件,书的内容很充实
MATLAB 向量化编程基础精讲 mobi epub pdf txt 电子书 格式下载 2024