新書推薦:
![宋代社会经济史论集(增订版)(上下册)](http://103.6.6.66/upload/mall/productImages/24/31/9787100129251.jpg)
《
宋代社会经济史论集(增订版)(上下册)
》
售價:HK$
331.2
![博弈论与社会契约(第1卷):公平博弈](http://103.6.6.66/upload/mall/productImages/24/29/9787543235724.jpg)
《
博弈论与社会契约(第1卷):公平博弈
》
售價:HK$
124.2
![海外中国研究·政治仪式与近代中国国民身份建构(1911—1929)](http://103.6.6.69/upload/mall/productImages/y24/8/9787214288356.jpg)
《
海外中国研究·政治仪式与近代中国国民身份建构(1911—1929)
》
售價:HK$
101.2
![信息、生命与物理学](http://103.6.6.69/upload/mall/productImages/y24/8/9787521765953.jpg)
《
信息、生命与物理学
》
售價:HK$
90.9
![士仕之间:汉代士人与政治](http://103.6.6.69/upload/mall/productImages/y24/8/9787214274649.jpg)
《
士仕之间:汉代士人与政治
》
售價:HK$
78.2
![Redis 高手心法](http://103.6.6.66/upload/mall/productImages/24/31/9787121483455.jpg)
《
Redis 高手心法
》
售價:HK$
115.0
![勇往值钱:做自己人生的CEO](http://103.6.6.66/upload/mall/productImages/24/30/9787523606681.jpg)
《
勇往值钱:做自己人生的CEO
》
售價:HK$
68.8
![里山资本主义:不做金钱的奴隶,做个安心的里山主人(献礼大地)](http://103.6.6.66/upload/mall/productImages/24/29/9787576048896.jpg)
《
里山资本主义:不做金钱的奴隶,做个安心的里山主人(献礼大地)
》
售價:HK$
67.9
|
編輯推薦: |
关于MATLAB编程,关于Mathworks官方的Cody,如果您希望有所了解并和全世界的高手肩并肩,这本书一定能不负你望。两位作者在各大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利用累积乘积函数cumprod6
1.1.3构造特殊的乘积因子7
1.2数组基础训练:非零元素赋值为18
1.2.1循环 判断8
1.2.2利用逻辑判断 矢量索引9
1.2.3利用abs和sign9
1.2.4min函数更改nanflag设置参数10
1.3数组基础训练:将指定元素换成011
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和组合命令nchoosek28
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利用卷积命令conv262
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字符串基础训练:开心的201395
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 测试矩阵gallery105
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版本中的新函数repelem112
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利用进制转换函数dec2base128
2.10.3利用数值转字符函数num2str构造逻辑索引129
2.11字符串基础训练:元胞数组内字符串的合成129
2.11.1函数sprintf130
2.11.2利用向量的列排布变维131
2.11.3函数strjoin132
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直接调用函数repelem163
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利用滤波函数filter2168
3.7数组训练进阶:生成索引数自扩展序列170
3.7.1循环拼接171
3.7.2利用测试矩阵hankel172
3.7.3利用上三角矩阵函数triu meshgrid构造172
3.8数组训练进阶:指定子向量长度求均值173
3.8.1循环逐段求均值174
3.8.2利用频数累加函数accumarray174
3.8.3利用测试矩阵hankel176
3.8.4利用卷积系列命令177
3.9数组训练进阶:统计群组数量177
3.9.1循环拼接向量178
3.9.2涉及排重命令unique的几种解法179
3.9.3利用累积求和函数cumsum与diff181
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利用高低维索引转换函数sub2ind217
3.17.3利用稀疏矩阵构造指定位置索引217
3.17.4bsxfun单一维扩展构造索引217
3.17.5累积最值函数cummin218
3.18数组训练进阶:矩阵元素分隔内向的矩阵219
3.18.1循环 判断220
3.18.2利用函数kron扩维221
3.18.3利用索引构造变换对新矩阵赋值223
3.18.4利用稀疏矩阵命令sparse构造225
3.18.5利用累积求和命令accumarray226
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.12308
4.16.2正则表达式重解例2.1309
4.16.3正则表达式重解例2.5310
4.16.4正则表达式重解例2.6310
4.16.5正则表达式重解例2.8312
4.16.6正则表达式重解例2.9313
4.16.7正则表达式重解例2.10314
4.16.8正则表达式重解例3.5315
4.16.9正则表达式重解例3.6315
4.16.10正则表达式重解例3.7319
4.17小结319
第5章多维数组漫谈320
5.1多维数组基础321
5.2多维数组问题1:扩维328
5.2.1利用kron和reshape函数330
5.2.2利用cat函数332
5.2.3利用bsxfun和shiftdim函数337
5.2.4利用convn和shiftdim函数340
5.3多维数组问题2:乘操作340
5.3.1循环和分情况判断的基本方法341
5.3.2点积单独构造维数向量与循环的组合343
5.3.3利用高、低维索引变换343
5.3.4cell数组结构与repmat函数组合346
5.3.5cell数组结构 扩维349
5.4多维数组问题3:高维数组的矢量化索引寻址352
5.4.1permute做源数据维度变换的不同方式354
5.4.2索引分组360
5.5小结361
第6章匿名函数专题362
6.1匿名函数探析362
6.1.1基本应用362
6.1.2匿名函数嵌套构造函数在程序编写中的应用364
6.1.3匿名函数与参数传递367
6.1.4匿名函数进阶376
6.2匿名函数应用:函数迭代器381
6.2.1循环求解的多个变体381
6.2.2递归思路及引申382
6.3匿名函数应用:返回多输出385
6.3.1利用匿名函数创建多输出句柄385
6.3.2利用匿名函数构造更灵活的任意数量输出390
6.4匿名函数应用:复合句柄393
6.4.1利用子函数394
6.4.2利用匿名函数构造395
6.5匿名函数应用:斐波那契数列求值400
6.5.1几种不用匿名函数定义句柄的解法401
6.5.2使用匿名函数构造序列的相关算法404
6.6匿名函数应用:斐波那契数列构造406
6.6.1不使用匿名函数的几种求解思路407
6.6.2使用匿名函数构造受控句柄的几种解法409
6.7匿名函数应用:函数执行计数器中的匿名函数传参机理410
6.7.1save load存储调用变量412
6.7.2图形句柄413
6.7.3随机数控制器rng414
6.7.4全局变量定义global416
6.7.5匿名函数句柄传递计数结果417
6.8小结423
参考文献424
|
內容試閱:
|
学习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 suma
5 ans =
6
源代码1 说明,当元素序列中存在特殊元素NaN时,原有的代数运算规则将发生变化,比如:NaN 1=NaN,NaN inf=NaNNaN的详细介绍见1.11.2 小节。但在实际运算中这往往没有意义,我们可能更多需要的是统计除NaN之外的其他元素之和。
很多人想到循环遍历判断每个元素是否为NaN:
源代码2:除NaN以外元素的求和方法1
1 for i=1:lengtha
2 if isnanai
3 ai=0;
4 end
5 end
6 Result=suma
源代码2 用循环遍历序列的每个元素,通过命令isnan判断每个元素是否为NaN,如果是用0替换,最后求和。
对于没怎么接触过MATLAB的读者而言,源代码2 貌似不错:一个程序用到循环、判断两种流程,甚至还有isnan这样高端大气上档次的逻辑命令。但更加了解MATLAB矢量化操作的用户都知道,函数isnan支持矢量化逻辑操作,循环、判断流程可以全部去掉。
源代码3:除NaN以外元素的求和方法2
1 a=[1:5,NaN,7];
2 Result=suma~isnana
当然,在已知数组确定为正的情况下,isnan可用大于零的逻辑判断:=0代替,这是针对具体问题的特殊构造。
到此,即使具有一定MATLAB使用经验的读者,可能都会认为已经简无可简了,但重读求和命令sum后,你会发现MATLAB给这个使用频率最高的函数,悄然加上了后置辨识参数nanflag,专门用于判定数组或者矩阵求和过程是否应当略过非数。它有两个选项:{''includenan''}|''omitnan'',花括号内的是默认值,这也是为什么直接对数组求和而得到的结果却是NaN的原因,所以用sum求和时,把nanflag后置识别参数换为第二项,也就是''omitnan'',可直接得解。
源代码4:除NaN以外元素的求和方法3
1 a=[1:5,NaN,7];
2 Result=suma,''omitnan''
是不是更简单了呢?我们可以举一反三,不仅求和函数,在max、min、mean、std、cov等不少经常使用的命令中也有类似的非数辨识参数选项,有兴趣的话可以在帮助中搜索nanflag查看更详细的内容。仍以sum命令为例,有点基础的读者都知道MATLAB中的运算是以列为第一方向的,所以sum对于矩阵是按列求和的,如果要求按行求和,很多人会习惯性地先转置再求和:
源代码5:矩阵按行求和方法1
1 a=randi10,4
2 a =
3 9 7 10 10
4 10 1 10 5
5 2 3 2 9
6 10 6 10 2
7 suma''
8 ans =
9 36
但sum函数中有一个维度指定的后缀参数dim,就省去了从外部转置的步骤:
源代码6:矩阵按行求和方法2
1 suma,2
2 ans =
3 36
4 26
5 16
6 28
源代码6 中通过第2 个参数指定了求和方向为第2 维度,即列方向。
一些读者觉得两种方法其实一样,第2种方法无非在内部做转置,与单独在外部做转置的方法殊途同归。这里要指出的是,两种方法原理上有很大区别:一方面,强调尽可能多运用相对高效的内置函数,能在内部解决的问题尽量不放在函数外部;另一方面,也是更重要的,当矩阵维度进一步扩展时,前一种方法自动失效,比如对三维矩阵 n ,如需按第3维度求和,则可深入到元素做遍历循环:
源代码7:三维矩阵按页求和方法1
1 a=randi10,4,4,2;
2 for i=1:sizea,1
3 for j=1:sizea,2
4 Resulti,j=ai,j,1 ai,j,2;
5 end
6 end
7 Result
如果知道高低维索引转换命令ind2sub的用法,则二重循环降至一重也未尝不可:
源代码8:三维矩阵按页求和方法2
1 a=randi10,4,4,2;
2 for i=1:numela:,:,1
3 [I,J]=ind2subsizea:,:,1,i;
4 ResultI,J=aI,J,1 aI,J,2;
5 end
6 Result
不过在循环机制下,还是按页整体求和相对直观和高效,毕竟MATLAB支持同维矩阵元素的对位相加:
源代码9:三维矩阵按页求和方法3
1 a = randi10,4,4,2;
2 Result = a:,:,1;
3 for i = 2 : sizea,3
4 Result = Result a:,:,i;
5 end
6 Result
若对多维矩阵操作命令有一定基础,则把数据按问题要求变维再求和也能达到要求:
源代码10:三维矩阵按页求和方法4
1 squeezesumpermutea,[3,2,1]''
在源代码10 中,按照sum的求和顺序,先用permute重排多维数组求和,再用squeeze压缩多维矩阵还原为结果。上述对多维矩阵在高维度上的求和,明显感到循环遍历元素、变维等办法都很繁琐,其实只要更改sum默认维度参数dim,源代码710遇到的问题就都能避免:
源代码11:三维矩阵按页求和方法5
1 suma,3
如果对MATLAB的cell数据结构理解更多一些,则会发现一些涉及cell数据结构的命令也具有数据打乱重组的方式,求和则可通过cellfun函数调用求和句柄对归并数据完成操控:
源代码12:三维矩阵按页求和方法6
1 cellfun@sum,num2cella,3
以上是求和命令sum的应用示例,此外,分析时间序列的工具箱FinancialToolbox函数nansum同样可以指定维度,并自动忽略数据中的NaN求和,感兴趣的读者可在帮助中查看。另外,如果今后对MATLAB函数有了更深入透彻的认识,涉及数据的重组归并还可参照accumarray、splitapply等函数。
从上述矩阵求和例子能看出:一方面,掌握MATLAB函数是长期累积的过程,很多甚至是十分常见的命令,其调用方法也会随版本更替不断进化,需要不断学习和体会,并没有一劳永逸的捷径;另一方面,不少省时省力的扩展方法也说明,钻研内置函数是有潜力可挖的。此外,也建议读者朋友在条件允许的情况下,尽量使用新版本,因为每次新版本对一些命令调用格式的微调,往往给MATLAB编程工作带来意想不到的切实便利。
鉴于此,我们决定尝试总结一些函数综合运用的心得体会,帮助大家有针对性地训练在MATLAB中操控数组和字符串的技巧,以具体问题为导向,尽量贴近实战环境,把复杂问题的运算过程,分解成多个简单的代码步,由浅入深,逐步解释命令的组合与搭配思路,使问题化繁为简、读者容易理解,并举一反三,对MATLAB命令在具体环境中的用法有更深一层的体悟。
要写出好的代码,首先要能欣赏好的代码。本书中所选择的问题,大多来自Cody(Math-works公司主页上一个用MATLAB编程解决小问题的社区群体),在每个问题后,我们都给出了多种解决代码,以及关键窍要处的点评和注解,读者可以通过这些代码,洞见函数细微处控制的精妙杀招,开阔代码编写思路。相信打好这个基础,将为大家今后使用工具箱命令或自编函数,以高效简捷地解决专业上的具体问题,节省大量时间和精力!我想,随着代码欣赏力的提高,佐以适当练习,慢慢地您也能写出优雅如诗的MATLAB程序,到那时您就会发现写MATLAB代码解决问题的过程,居然充满了令人愉快的成就感!
我想,这就是我们写书的初衷和最终目的。
沟通和交流也是开阔MATLAB代码视界的有效途径,三人行必有我师,为与读者朋友们方便地交流和互相学习,本书在MATLAB中文论坛专设了交流版面(网址:http:www. ilovematlab.cnforum-260-1.html),如果在阅读本书和运行代码过程中,您有任何问题,欢迎来和我们互动讨论。同时,由于时间仓促,水平有限,书中难免有错误和疏漏,如果您发现有任何问题,请在本书的勘误网址(http:www.ilovematlab.cnthread-489591-1-1.html)提出,我们会尽快改正。
最后,我们感谢在本书内容上和求解代码中贡献智慧的Cody社区的兄弟姐妹,这些无名英雄默默的努力,正成为后人在黑暗中摸索MATLAB技巧的指路明灯。真诚感谢在探索MATLAB技巧的十几年的学习过程中,因网络结识的吴鹏、李国栋、谢中华、刘亚龙、黄源、刘鹏、LYCao等朋友,以及一直致力于推广MATLAB应用的麦客技术联盟,在本书撰写过程中,得到了你们很多宝贵的建议和意见。感谢北京航空航天大学出版社的编辑一直以来的帮助和鼓励。作者马良感谢母亲柳天毅长期的关心照顾,弟弟马强、好友王华和周兆军等一直以来在精神上的鼓励和支持;作者祁彬彬感谢身后一直默默支持自己的爱人邵冰华。同时,对马文涛、韩风霞、张致旭、窦婷、李伟东、安超、宋曦尧、赵昱杰、张国锋、孔祥松、魏志勋、徐浩鹏、丁洋、刘晨、门特、李曼茹、李森、李平、张超、谷翔、郑瑞峰、江海翔、李凯琪、殷凯、富文莲、褚传乐、孙海龙、吕晓龙、郭智鹏、曹璐、刘凯、支铁城等人在平时工作上的支持,也表示衷心的感谢。
马良2016年4月于东北大学
|
|