第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的产品构成 5
1.1.6 MATLAB/Simulink的应用领域 7
1.2 MATLAB的安装与启动 7
1.2.1 MATLAB的安装 7
1.2.2 MATLAB的启动 7
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 分号的重要作用 11
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 参考文献 20
第2章 MATLAB基本操作 21
2.1 变量的定义与数据类型 21
2.1.1 变量的定义与赋值 21
2.1.2 MATLAB中的常量 21
2.1.3 MATLAB中的关键字 23
2.1.4 数据类型 23
2.1.5 数据输出格式 24
2.2 常用函数 24
2.3 数组的定义 26
2.3.1 向量的定义 26
2.3.2 矩阵的定义 27
2.3.3 特殊矩阵 29
2.3.4 高维数组 31
2.3.5 访问数组元素 32
2.3.6 定义元胞数组(Cell Array) 33
2.3.7 定义结构体数组 34
2.3.8 几种数组的转换 35
2.3.9 定义数据集数组 36
2.3.10 定义表格型数组 37
2.4 数组运算 37
2.4.1 矩阵的算术运算 37
2.4.2 矩阵的关系运算 39
2.4.3 矩阵的逻辑运算 40
2.4.4 矩阵的其他常用运算 41
2.5 MATLAB常用标点符号 43
2.6 MATLAB命令窗口中常用的快捷命令 44
2.7 参考文献 45
第3章 MATLAB绘图与可视化 46
3.1 图形对象与图形对象句柄 46
3.1.1 句柄式图形对象 46
3.1.2 获取图形对象属性名称和属性值 47
3.1.3 设置图形对象属性值 48
3.2 二维图形绘制 48
3.2.1 基本二维绘图函数 48
3.2.2 二维图形修饰和添加注释 51
3.2.3 常用统计绘图函数 56
3.2.4 特殊二维绘图函数 57
3.3 三维图形绘制 59
3.3.1 常用三维绘图函数 59
3.3.2 三维图形的修饰和添加注释 64
3.4 图形的打印和输出 68
3.4.1 把图形复制到剪贴板 68
3.4.2 把图形导出到文件 70
3.4.3 打印图形 72
3.5 动画制作 74
3.5.1 彗星运行轨迹动画 74
3.5.2 霓虹闪烁动画 75
3.5.3 电影动画 76
3.5.4 录制AVI格式视频动画 77
3.5.5 制作GIF格式动画 79
3.6 参考文献 80
第4章 MATLAB程序设计 81
4.1 M文件——脚本文件和函数文件 81
4.1.1 脚本文件 81
4.1.2 函数文件 81
4.2 MATLAB程序流程控制与调试 82
4.2.1 MATLAB程序流程控制 82
4.2.2 MATLAB程序调试 84
4.3 程序流程控制示例 86
4.3.1 概述 86
4.3.2 问题分析 86
4.3.3 MATLAB求解 87
4.4 匿名函数、子函数与嵌套函数 88
4.4.1 匿名函数 88
4.4.2 子函数 90
4.4.3 嵌套函数 90
4.4.4 嵌套函数的彼此调用关系 94
4.5 匿名函数、子函数与嵌套函数应用案例 98
4.5.1 匿名函数应用实例 98
4.5.2 子函数和嵌套函数应用实例 102
4.6 编写高效的MATLAB程序 107
4.6.1 重新认识循环 107
4.6.2 提高代码效率的方法 113
4.7 养成良好的编程风格 124
4.7.1 命名规则 124
4.7.2 程序设计注意事项 126
4.7.3 程序编排与注释 126
4.8 参考文献 127
第5章 图形用户界面(GUI)编程 128
5.1 图形对象 128
5.1.1 图形对象的类型 129
5.1.2 图形对象的属性 132
5.1.3 图形对象的操作 135
5.2 图形用户界面的设计原则和步骤 140
5.2.1 图形用户界面设计原则 140
5.2.2 图形用户界面的设计步骤 141
5.3 开发图形用户界面的方法 142
5.4 直接编写M文件开发图形用户界面 145
5.4.1 M文件的类型 145
5.4.2 根对象 149
5.4.3 图形窗口对象 152
5.4.4 坐标轴对象 154
5.4.5 用户界面控件对象 156
5.4.6 用户菜单对象 168
5.4.7 用户现场菜单对象 169
5.4.8 用户工具条对象 170
5.5 利用GUIDE工具开发图形用户界面 172
5.5.1 GUIDE及其组成部分 172
5.5.2 GUIDE产生的FIG文件和M文件 173
5.5.3 GUIDE创建的GUI中的数据管理 176
5.5.4 利用GUIDE创建图形用户界面 177
5.6 典型案例介绍 181
5.6.1 基于列表控件的图片浏览器 181
5.6.2 在GUI中对鼠标进行控制 185
5.6.3 实现同一GUI内的不同控件之间的数据传递 188
5.6.4 实现不同GUI之间的数据传递 193
5.6.5 在GUI中控制Simulink仿真过程 197
第6章 MATLAB与TXT文件的数据交换 201
6.1 案例背景 201
6.2 从TXT文件中读取数据 201
6.2.1 利用数据导入向导导入TXT文件 202
6.2.2 调用高级函数读取数据 205
6.2.3 调用低级函数读取数据 215
6.3 把数据写入TXT文件 222
6.3.1 调用dlmwrite函数写入数据 222
6.3.2 调用fprintf函数写入数据 223
6.4 参考文献 226
第7章 MATLAB与Excel文件的数据交换 227
7.1 利用数据导入向导导入Excel文件 227
7.2 调用函数读写Excel文件 228
7.2.1 调用xlsfinfo函数获取文件信息 228
7.2.2 调用xlsread函数读取数据 228
7.2.3 调用xlswrite函数把数据写入Excel文件 231
7.3 Excel-Link宏 232
7.3.1 Excel 2003加载Excel-link宏 233
7.3.2 使用Excel-link宏 234
7.3.3 Excel 2007与Excel 2010加载和使用宏 237
7.4 参考文献 240
第8章 数据库连接 241
8.1 案例背景 241
8.2 MATLAB实现 241
8.2.1 Database工具箱简介 241
8.2.2 Database工具箱函数 241
8.2.3 数据库数据读取 242
8.2.4 数据库数据写入 246
8.3 网络数据读取 248
8.3.1 读取Yahoo数据 248
8.3.2 读取Google数据 250
8.4 参考文献 251
第9章 符号计算 252
9.1 符号对象和符号表达式 252
9.1.1 符号对象的创建 252
9.1.2 符号表达式 253
9.1.3 运算符 253
9.1.4 符号计算与数值计算结合 254
9.2 符号微积分 255
9.2.1 极限、导数和级数的符号计算 255
9.2.2 符号积分计算 257
9.3 符号方程求解 258
9.3.1 符号代数方程求解 258
9.3.2 符号常微分方程求解 259
9.4 参考文献 263
第10章 数值积分计算 264
10.1 矩形区域积分以及离散数据积分 264
10.1.1 矩形区域积分 264
10.1.2 离散数据积分 266
10.2 含参数积分 267
10.3 一般区域二重和三重积分 269
10.3.1 概要 269
10.3.2 一般区域二重积分的计算 270
10.3.3 一般区域三重积分的计算 272
10.4 一般区域n重积分 274
10.5 蒙特卡洛法计算n重积分 277
10.5.1 概述 277
10.5.2 基本的蒙特卡洛积分法 277
10.5.3 等分布序列的蒙特卡洛法 278
10.6 参考文献 281
第11章 方程与方程组的数值求解 282
11.1 概述 282
11.2 MATLAB求解方程(组)的函数及其用法 282
11.2.1 左除“\”与右除“/” 282
11.2.2 fzero函数 283
11.2.3 roots函数 284
11.2.4 fsolve函数 285
11.2.5 含参数方程组求解 286
11.3 应用扩展 287
11.3.1 等额还款模型 287
11.3.2 MATLAB编程求解等额还款模型 288
11.4 参考文献 289
第12章 常微分方程(组)数值求解 290
12.1 数值求解常微分方程(组)函数概述 290
12.1.1 概述 290
12.1.2 初值问题求解函数 290
12.1.3 延迟问题以及边值问题求解函数 291
12.1.4 求解前的准备工作 292
12.2 非刚性/刚性常微分方程初值问题求解 292
12.2.1 概述 292
12.2.2 非刚性问题举例 292
12.2.3 刚性问题举例 294
12.3 隐式微分方程(组)求解 297
12.3.1 概述 297
12.3.2 利用solve函数 297
12.3.3 利用fzero/fsolve函数和odel5i函数 298
12.4 微分代数方程(DAE)与延迟微分方程(DDE)求解 302
12.4.1 概述 302
12.4.2 微分代数方程举例 302
12.4.3 延迟微分方程(DDE)举例 307
12.5 边值问题求解 310
12.5.1 概述 310
12.5.2 求解案例 310
12.6 参考文献 314
第13章 线性规划问题 315
13.1 案例背景 315
13.1.1 线性规划应用 315
13.1.2 线性规划的求解方法 316
13.2 线性规划的标准型 316
13.3 线性规划问题的MATLAB求解 316
13.4 线性规划案例分析 318
13.4.1 传统内点法求解 318
13.4.2 单纯形法求解 319
13.5 案例扩展——含参数线性规划 320
13.5.1 目标函数含参数 320
13.5.2 约束函数含参数 321
13.6 参考文献 322
第14章 非线性优化问题 323
14.1 理论背景 323
14.2 理论模型 323
14.2.1 无约束非线性优化 323
14.2.2 约束非线性优化 323
14.3 MATLAB实现 324
14.3.1 fminunc函数(无约束优化) 324
14.3.2 fminsearch函数 327
14.3.3 fmincon函数 329
14.4 案例扩展 333
14.4.1 大规模优化问题 333
14.4.2 含参数优化问题 334
14.5 参考文献 335
第15章 最大最小问题——公共设施选址 336
15.1 案例背景 336
15.1.1 最大最小问题 336
15.1.2 垃圾场选址问题 336
15.2 最大最小问题的MATLAB求解 337
15.2.1 fminimax函数 337
15.2.2 垃圾场选址问题求解 338
15.3 案例扩展 339
15.4 参考文献 341
第16章 概率分布与随机数 342
16.1 概率分布 342
16.1.1 概率分布的定义 342
16.1.2 几种常用概率分布 342
16.1.3 概率密度、分布和逆概率分布函数值的计算 345
16.2 生成一元分布随机数 347
16.2.1 均匀分布随机数和标准正态分布随机数 347
16.2.2 常见一元分布随机数 350
16.3 生成多元分布随机数 355
16.4 参考文献 356
第17章 描述性统计量和统计图 357
17.1 案例背景 357
17.2 案例描述 357
17.3 描述性统计量 359
17.3.1 均值 359
17.3.2 方差和标准差 359
17.3.3 最大值和最小值 360
17.3.4 极差 360
17.3.5 中位数 361
17.3.6 分位数 361
17.3.7 众数 361
17.3.8 变异系数 361
17.3.9 原点矩 362
17.3.10 中心矩 362
17.3.11 偏度 362
17.3.12 峰度 362
17.4 统计图 363
17.4.1 箱线图 363
17.4.2 频数(率)直方图 364
17.4.3 经验分布函数图 365
17.4.4 正态概率图 366
17.4.5 p-p图 367
17.4.6 q-q图 367
17.5 案例扩展:频数和频率分布表 368
17.5.1 调用tabulate函数作频数和频率分布表 368
17.5.2 调用自编HistRate函数作频数和频率分布表 370
17.6 参考文献 373
第18章 参数估计与假设检验 374
18.1 案例背景 374
18.2 常见分布的参数估计 374
18.3 正态总体参数的检验 376
18.3.1 总体标准差已知时的单个正态总体均值的U检验 376
18.3.2 总体标准差未知时的单个正态总体均值的t检验 378
18.3.3 总体标准差未知时的两个正态总体均值的比较t检验 378
18.3.4 总体均值未知时的单个正态总体方差的x2检验 379
18.3.5 总体均值未知时的两个正态总体方差的比较F检验 380
18.4 参考文献 381
第19章 回归分析 382
19.1 MATLAB回归模型类 382
19.1.1 线性回归模型类 382
19.1.2 非线性回归模型类 385
19.2 一元线性回归 386
19.2.1 数据的散点图 387
19.2.2 模型的建立与求解 388
19.2.3 回归诊断 390
19.2.4 稳健回归 394
19.3 一元非线性回归 395
19.3.1 数据的散点图 396
19.3.2 模型的建立与求解 397
19.3.3 回归诊断 400
19.3.4 利用曲线拟合工具cftool作一元非线性拟合 402
19.4 多元线性和广义线性回归 404
19.4.1 可视化相关性分析 405
19.4.2 多元线性回归 406
19.4.3 多元多项式回归 409
19.4.4 拟合效果图 410
19.4.5 逐步回归 411
19.5 多元非线性回归 413
19.5.1 案例描述 413
19.5.2 模型建立 414
19.5.3 模型求解 415
19.6 参考文献 416
第20章 多项式回归与数据插值 417
20.1 多项式回归 417
20.1.1 多项式回归模型 417
20.1.2 多项式回归的MATLAB实现 417
20.1.3 多项式回归案例 418
20.2 插值问题的数学描述 423
20.2.1 什么是插值 423
20.2.2 一维插值问题的数学描述 423
20.2.3 二维插值问题的数学描述 424
20.2.4 三次样条插值的数学描述 424
20.3 一维插值 425
20.3.1 自编拉格朗日插值函数lagrange 425
20.3.2 interpl函数 426
20.3.3 spline函数 430
20.3.4 csape和csapi函数 430
20.3.5 spapi函数(B样条插值) 432
20.3.6 其他一维插值函数 433
20.4 二维插值 435
20.4.1 网格节点插值 436
20.4.2 散乱节点插值 439
20.5 高维插值 442
20.6 参考文献 444
第21章 MATLAB程序编译 445
21.1 MATLAB编译器的工作机理 446
21.1.1 利用MATLAB编译器产生应用程序或运行库 446
21.1.2 打包器(wrapper)文件 447
21.1.3 组件技术文件(CTF) 447
21.2 MATLAB编译器的安装和配置 447
21.2.1 安装要求 447
21.2.2 编译器的安装 448
21.2.3 编译器的配置 449
21.2.4 选项文件 450
21.3 编译 453
21.3.1 有关MATLAB编译器技术 453
21.3.2 mcc命令详解 454
21.3.3 输入和输出文件 459
21.4 部署 462
21.4.1 确定需要打包的文件 462
21.4.2 使用部署工具 464
21.4.3 部署到目标计算机 472
21.5 典型案例介绍 475
21.5.1 将脚本M文件编译为独立的应用程序 475
21.5.2 将函数M文件编译为独立的应用程序 478
21.5.3 将由GUIDE创建的GUI程序编译为可独立运行的程序 481
21.5.4 将MATLAB程序编译为C共享库 484
21.5.5 将MATLAB程序编译为C++动态链接库 492
21.6 参考文献 500
第22章 系统级仿真工具Simulink及应用 501
22.1 Simulink简介 501
22.1.1 何为Simulink 501
22.1.2 Simulink基础 502
22.1.3 Simulink仿真原理 518
22.2 Simulink动态系统建模与仿真 532
22.2.1 动态系统建模 532
22.2.2 动态系统仿真 548
22.2.3 Simulink与MATLAB数据交互 551
22.3 S-Function 555
22.3.1 S-Function简介及原理 555
22.3.2 S-Function实现方式及其特点 558
22.3.3 M语言S-Function 561
22.3.4 C MEX S-Function 572
22.4 命令行仿真技术 581
22.4.1 命令行方式建模 581
22.4.2 命令行方式仿真 582
22.4.3 命令行仿真示例 585
22.5 综合实例 588
22.5.1 案例1:字符编码与版本兼容 588
22.5.2 案例2:用S-Function自定义模块 592
22.5.3 案例3:温度控制 601
22.5.4 案例4:模糊PID控制 608
22.5.5 案例5:磁悬浮控制 615
22.6 参考文献 620
附录 Simulink常用命令列表 621