第1章MATLAB简介 1
1.1 MATLAB的那些事儿 1
1.1.1 MATLAB的起源 1
1.1.2 MATLAB的版本信息 1
1.1.3 MATLAB软件的系统组成 3
1.1.4 MATLAB的产品构成 4
1.1.5 Simulink的产品构成 6
1.1.6 MATLAB/ Simulink的应用领域 7
1.2 MATLAB的安装与启动 7
1.2.1 MATLAB的安装 7
1.2.2 MATLAB的启动 8
1.3 MATLAB工作界面 8
1.3.1工作界面布局 8
1.3.2工作界面的显示属性调整 9
1.3.3工作界面的布局调整 9
1.4命令窗口(Command Window) 10
1.4.1初识MATLAB命令 10
1.4.2分号的重要作用 10
1.4.3 MATLAB命令窗口中常用的快捷键 11
1.5历史命令窗口(Command History) 11
1.6当前目录窗口(Current Directory) 12
1.6.1 MATLAB搜索路径机制和搜索顺序 12
1.6.2 MATLAB当前目录管理 13
1.6.3 MATLAB搜索路径设置 13
1.7工作空间窗口(Workspace) 14
1.8程序编辑窗口(Editor) 15
1.8.1编辑M文件 15
1.8.2 M文件的调用 16
1.8.3 MATLAB程序编辑窗口中常用的快捷键 17
1.9 MATLAB帮助系统 17
1.9.1 MATLAB命令窗口帮助系统 17
1.9.2 Help帮助浏览器 18
1.10参考文献 21
第2章MATLAB基本操作 22
2.1变量的定义与数据类型 22
2.1.1变量的定义与赋值 22
2.1.2数据类型 23
2.1.3数据输出格式 23
2.2常用函数 23
2.3数组运算 25
2.3.1矩阵的定义 25
2.3.2特殊矩阵 28
2.3.3高维数组 30
2.3.4定义结构体数组 31
2.3.5定义元胞数组(Cell Array) 32
2.3.6几种数组的转换 33
2.3.7矩阵的算术运算 34
2.3.8矩阵的关系运算 36
2.3.9矩阵的逻辑运算 36
2.3.10矩阵的其他常用运算 37
2.4 MATLAB常用标点符号 41
2.5 MATLAB命令窗口中常用快捷命令 41
2.6参考文献 42
第3章MATLAB绘图与可视化 43
3.1图形对象与图形对象句柄 43
3.1.1句柄式图形对象 43
3.1.2获取图形对象属性名称和属性值 44
3.1.3设置图形对象属性值 45
3.2二维图形绘制 45
3.2.1基本二维绘图函数 45
3.2.2二维图形修饰和添加注释 48
3.2.3常用统计绘图函数 53
3.2.4特殊二维绘图函数 53
3.3三维图形绘制 55
3.3.1常用三维绘图函数 55
3.3.2三维图形的修饰和添加注释 60
3.4图形的打印和输出 65
3.4.1把图形复制到剪贴板 65
3.4.2把图形导出到文件 67
3.4.3打印图形 69
3.5动画制作 71
3.5.1彗星运行轨迹动画 71
3.5.2霓虹闪烁动画 72
3.5.3电影动画 73
3.5.4录制AVI格式视频动画 74
3.5.5制作GIF格式动画 75
3.6参考文献 77
第4章MATLAB程序设计 78
4.1 M文件——脚本文件和函数文件 78
4.1.1脚本文件 78
4.1.2函数文件 78
4.2 MATLAB程序流程控制与调试 79
4.2.1 MATLAB程序流程控制 79
4.2.2 MATLAB程序调试 81
4.3程序流程控制示例 83
4.3.1概述 83
4.3.2问题分析 83
4.3.3 MATLAB求解 84
4.4匿名函数、子函数与嵌套函数 85
4.4.1匿名函数 85
4.4.2子函数 87
4.4.3嵌套函数 87
4.4.4嵌套函数的彼此调用关系 91
4.5匿名函数、子函数与嵌套函数应用案例 95
4.5.1匿名函数应用实例 95
4.5.2子函数和嵌套函数应用实例 99
4.6编写高效的MATLAB程序 104
4.6.1重新认识循环 104
4.6.2提高代码效率的方法 110
4.7养成良好的编程风格 121
4.7.1命名规则 121
4.7.2程序设计注意事项 123
4.7.3程序编排与注释 123
4.8参考文献 124
第5章 图形用户界面(GUI)编程 125
5.1图形对象 125
5.1.1图形对象的类型 126
5.1.2图形对象的属性 127
5.1.3图形对象的操作 131
5.2图形用户界面的设计原则和步骤 136
5.2.1图形用户界面设计原则 136
5.2.2图形用户界面的设计步骤 136
5.3开发图形用户界面的方法 137
5.4直接编写M文件开发图形用户界面 140
5.4.1 M文件的类型 140
5.4.2根对象 144
5.4.3图形窗口对象 147
5.4.4坐标轴对象 149
5.4.5用户界面控件对象 151
5.4.6用户菜单对象 162
5.4.7用户现场菜单对象 163
5.4.8用户工具条对象 164
5.5利用GUIDE工具开发图形用户界面 166
5.5.1 GUIDE及其组成部分 166
5.5.2 GUIDE产生的FIG文件和M文件 167
5.5.3 GUIDE创建的GUI中的数据管理 170
5.5.4利用GUIDE创建图形用户界面 171
5.6典型案例介绍 175
5.6.1基于列表控件的图片浏览器 175
5.6.2在GUI中对鼠标进行控制 179
5.6.3实现同一GUI内的不同控件之间的数据传递 182
5.6.4实现不同GUI之间的数据传递 187
5.6.5在GUI中控制Simulink仿真过程 191
第6章MATLAB与TXT文件的数据交换 195
6.1案例背景 195
6.2从TXT文件中读取数据 195
6.2.1利用数据导入向导导入TXT文件 196
6.2.2调用高级函数读取数据 199
6.2.3调用低级函数读取数据 209
6.3把数据写入TXT文件 216
6.3.1调用dlmwrite函数写入数据 216
6.3.2调用fprintf函数写入数据 217
6.4参考文献 220
第7章MATLAB与Excel文件的数据交换 221
7.1利用数据导入向导导入Excel文件 221
7.2调用函数读写Excel文件 222
7.2.1调用xlsfinfo函数获取文件信息 222
7.2.2调用xlsread函数读取数据 223
7.2.3调用xlswrite函数把数据写入Excel文件 225
7.3 Excel-Link宏 227
7.3.1 Excel 2003加载Excel-link宏 227
7.3.2使用Excel-link宏 228
7.3.3 Excel 2007与Excel 2010加载和使用宏 231
7.4参考文献 234
第8章 数据库连接 235
8.1案例背景 235
8.2 MATLAB实现 235
8.2.1 Database工具箱简介 235
8.2.2 Database工具箱函数 235
8.2.3数据库数据读取 236
8.2.4数据库数据写入 240
8.3网络数据读取 242
8.3.1读取Yahoo数据 242
8.3.2读取Google数据 244
8.4参考文献 245
第9章 符号计算 246
9.1符号对象和符号表达式 246
9.1.1符号对象的创建 246
9.1.2符号表达式 247
9.1.3运算符 247
9.1.4符号计算与数值计算结合 248
9.2符号微积分 249
9.2.1极限、导数和级数的符号计算 249
9.2.2符号积分计算 251
9.3符号方程求解 252
9.3.1符号代数方程求解 252
9.3.2符号常微分方程求解 253
9.4参考文献 257
第10章 数值积分计算 258
10.1矩形区域积分以及离散数据积分 258
10.1.1矩形区域积分 258
10.1.2离散数据积分 260
10.2含参数积分 261
10.3一般区域二重和三重积分 262
10.3.1概要 262
10.3.2一般区域二重积分的计算 263
10.3.3一般区域三重积分的计算 265
10.4一般区域n重积分 267
10.5蒙特卡洛法计算n重积分 270
10.5.1概述 270
10.5.2基本的蒙特卡洛积分法 271
10.5.3等分布序列的蒙特卡洛法 272
10.6参考文献 274
第11章 方程与方程组的数值求解 275
11.1概述 275
11.2 MATLAB求解方程(组)的函数及其用法 275
11.2.1左除“\”与右除“/” 275
11.2.2 fzero函数 276
11.2.3 roots函数 277
11.2.4 fsolve函数 278
11.2.5含参数方程组求解 279
11.3应用扩展 280
11.3.1等额还款模型 280
11.3.2 MATLAB编程求解等额还款模型 281
11.4参考文献 282
第12章 常微分方程(组)数值求解 283
12.1数值求解常微分方程(组)函数概述 283
12.1.1概述 283
12.1.2初值问题求解函数 283
12.1.3延迟问题以及边值问题求解函数 284
12.1.4求解前的准备工作 285
12.2非刚性/刚性常微分方程初值问题求解 285
12.2.1概述 285
12.2.2非刚性问题举例 285
12.2.3刚性问题举例 287
12.3隐式微分方程(组)求解 290
12.3.1概述 290
12.3.2利用solve函数 290
12.3.3利用fzero/fsolve函数 291
12.4微分代数方程(DAE)与延迟微分方程(DDE)求解 295
12.4.1概述 295
12.4.2微分代数方程举例 295
12.4.3延迟微分方程(DDE)举例 300
12.5边值问题求解 303
12.5.1概述 303
12.5.2求解案例 303
12.6参考文献 307
第13章 线性规划问题 308
13.1案例背景 308
13.1.1线性规划应用 308
13.1.2线性规划的求解方法 309
13.2线性规划的标准型 309
13.3线性规划问题的MATLAB求解 309
13.4线性规划案例分析 310
13.4.1大规模内点法求解 311
13.4.2单纯形法求解 312
13.5案例扩展——含参数线性规划 313
13.5.1目标函数含参数 313
13.5.2约束函数含参数 314
13.6参考文献 315
第14章 非线性优化问题 316
14.1理论背景 316
14.2理论模型 316
14.2.1无约束非线性优化 316
14.2.2约束非线性优化 316
14.3 MATLAB实现 317
14.3.1 fminunc函数(无约束优化) 317
14.3.2 fminsearch函数 320
14.3.3 fmincon函数 322
14.4案例扩展 326
14.4.1大规模优化问题 326
14.4.2含参数优化问题 327
14.5参考文献 328
第15章 最大最小问题——公共设施选址 329
15.1案例背景 329
15.1.1最大最小问题 329
15.1.2垃圾场选址问题 329
15.2最大最小问题的MATLAB求解 330
15.2.1 fminimax函数 330
15.2.2垃圾场选址问题求解 331
15.3案例扩展 332
15.4参考文献 334
第16章 概率分布与随机数 335
16.1概率分布 335
16.1.1概率分布的定义 335
16.1.2几种常用概率分布 335
16.1.3概率密度、分布和逆概率分布函数值的计算 338
16.2生成一元分布随机数 340
16.2.1均匀分布随机数和标准正态分布随机数 340
16.2.2常见一元分布随机数 343
16.3生成多元分布随机数 348
16.4参考文献 349
第17章 描述性统计量和统计图 350
17.1案例背景 350
17.2案例描述 350
17.3描述性统计量 352
17.3.1均值 352
17.3.2方差和标准差 352
17.3.3最大值和最小值 353
17.3.4极差 353
17.3.5中位数 354
17.3.6分位数 354
17.3.7众数 354
17.3.8变异系数 354
17.3.9原点矩 355
17.3.10中心矩 355
17.3.11偏度 355
17.3.12峰度 355
17.4统计图 356
17.4.1箱线图 356
17.4.2频数(率)直方图 357
17.4.3经验分布函数图 358
17.4.4正态概率图 359
17.4.5 p-p图 360
17.4.6 q-q图 360
17.5案例扩展:频数和频率分布表 361
17.5.1调用tabulate函数作频数和频率分布表 361
17.5.2调用自编HistRate函数作频数和频率分布表 363
17.6参考文献 366
第18章 参数估计与假设检验 367
18.1案例背景 367
18.2常见分布的参数估计 367
18.3正态总体参数的检验 369
18.3.1总体标准差已知时的单个正态总体均值的U检验 369
18.3.2总体标准差未知时的单个正态总体均值的t检验 371
18.3.3总体标准差未知时的两个正态总体均值的比较t检验 371
18.3.4总体均值未知时的单个正态总体方差的x2检验 372
18.3.5总体均值未知时的两个正态总体方差的比较F检验 373
18.4参考文献 374
第19章 回归分析 375
19.1一元线性回归 375
19.1.1数据的散点图 376
19.1.2调用regress函数作一元线性回归 377
19.1.3调用自编reglm函数作一元线性回归 382
19.1.4调用robustfit函数作稳健回归 385
19.2一元非线性回归 388
19.2.1数据的散点图 389
19.2.2调用nlinfit函数作一元非线性回归 390
19.2.3利用曲线拟合工具cftool作一元非线性拟合 395
19.3多元线性和广义线性回归 402
19.3.1调用regress函数作多元线性回归 403
19.3.2调用自编reglm函数作多元线性回归 404
19.3.3调用自编reglm函数作二次回归 405
19.3.4拟合效果图 406
19.3.5调用stepwise函数作逐步回归 407
19.4多元非线性回归——地震震中位置的确定 410
19.4.1问题描述 410
19.4.2模型建立 411
19.4.3调用nlinfit函数作多元非线性回归 411
19.5参考文献 413
第20章 多项式回归与数据插值 414
20.1多项式回归 414
20.1.1多项式回归模型 414
20.1.2多项式回归的MATLAB实现 414
20.1.3多项式回归案例 415
20.2插值问题的数学描述 420
20.2.1什么是插值 420
20.2.2一维插值问题的数学描述 420
20.2.3二维插值问题的数学描述 421
20.2.4三次样条插值的数学描述 421
20.3一维插值 422
20.3.1自编拉格朗日插值函数lagrange 422
20.3.2 interpl函数 423
20.3.3 spline函数 427
20.3.4 csape和csapi函数 427
20.3.5 spapi函数(B样条插值) 430
20.3.6其他一维插值函数 431
20.4二维插值 432
20.4.1网格节点插值 432
20.4.2散乱节点插值 436
20.5高维插值 439
20.6参考文献 441
第21章MATLAB程序编译 442
21.1 MATLAB编译器的工作机理 442
21.1.1利用MATLAB编译器产生应用程序或运行库 443
21.1.2打包器(wrapper)文件 443
21.1.3组件技术文件(CTF) 444
21.2 MATLAB编译器的安装和配置 444
21.2.1安装要求 444
21.2.2编译器的安装 445
21.2.3编译器的配置 445
21.2.4选项文件 447
21.3编译 449
21.3.1有关MATLAB编译器技术 449
21.3.2 mec命令详解 450
21.3.3输入和输出文件 456
21.4部署 459
21.4.1确定需要打包的文件 459
21.4.2使用部署工具 460
20.4.3部署到目标计算机 470
21.5典型案例介绍 474
21.5.1将脚本M文件编译为独立的应用程序 474
21.5.2将函数M文件编译为独立的应用程序 479
21.5.3将由GUIDE创建的GUI程序编译为可独立运行的程序 482
21.5.4将MATLAB程序编译为C共享库 485
21.5.5将MATLAB程序编译为C+++动态链接库 491
21.6参考文献 498
第22章 系统级仿真工具Simulink及应用 499
22.1 Simulink简介 499
22.1.1何为Simulink 499
22.1.2 Simulink基础 500
22.1.3 Simulink仿真原理 514
22.2 Simulink动态系统建模与仿真 529
22.2.1动态系统建模 530
22.2.2动态系统仿真 544
22.2.3 Simulink与MATLAB数据交互 546
22.3 S-Function 551
22.3.1 S-Function简介及原理 551
22.3.2 S-Function实现方式及其特点 553
22.3.3 M语言S-Function 557
22.3.4 C MEX S-Function 568
22.4命令行仿真技术 576
22.4.1命令行方式建模 576
22.4.2命令行方式仿真 578
22.4.3命令行仿真示例 580
22.5综合实例 583
22.5.1案例1:字符编码与版本兼容 583
22.5.2案例2:用S - Function自定义模块 586
22.5.3案例3:温度控制 595
22.5.4案例4:模糊PID控制 602
22.5.5案例5:磁悬浮控制 609
22.6参考文献 614
附录Simulink常用命令列表 615