第1章 计算机和程序开发导论 1
1.1 背景 1
1.2 计算机架构的历史 1
1.2.1 巴贝奇差分机 2
1.2.2 巨人计算机 2
1.2.3 冯·诺依曼架构 2
1.3 现代计算系统 3
1.3.1 计算机硬件 3
1.3.2 计算机存储器 3
1.3.3 计算机软件 5
1.3.4 运行计算机程序 7
1.4 解释型程序的运行 7
1.5 预期结果 8
1.5.1 MATLAB简介 8
1.5.2 学习编程概念 8
1.5.3 解题技巧 8
本章小结 9
自我测验 9
第2章 入门 11
2.1 编程语言的背景 11
2.1.1 抽象 12
2.1.2 算法 12
2.1.3 编程范式 12
2.2 基本的数据处理 13
2.2.1 启动和退出MATLAB 13
2.2.2 变量赋值 13
2.2.3 数据类型 14
2.2.4 类和对象 15
2.3 MATLAB用户界面 16
2.3.1 命令行窗口 16
2.3.2 命令历史窗口 17
2.3.3 工作空间窗口 18
2.3.4 当前目录窗口 21
2.3.5 变量编辑器 21
2.3.6 图形窗口 21
2.3.7 编辑器窗口 22
2.4 脚本 23
2.4.1 文本文件 23
2.4.2 创建脚本 23
2.4.3 当前目录 24
2.4.4 运行脚本 24
2.4.5 脚本中的标点 24
2.4.6 调试脚本 25
2.5 工程实例——航天器发射 25
本章小结 27
特殊字符、保留字和函数 28
自我测验 28
编程 29
第3章 向量和数组 31
3.1 概念:使用内置函数 31
3.2 概念:数据集合 31
3.2.1 数据抽象 31
3.2.2 同质集合 31
3.3 向量 32
3.3.1 创建向量 32
3.3.2 向量大小 33
3.3.3 索引向量 33
3.3.4 缩短向量 34
3.3.5 向量运算 35
3.4 工程实例——力和力矩 41
3.5 数组 41
3.5.1 数组的属性 42
3.5.2 创建数组 42
3.5.3 访问数组的元素 43
3.5.4 删除数组的元素 44
3.5.5 数组运算 44
3.6 工程实例——计算土壤体积 50
本章小结 52
特殊字符、保留字和函数 52
自我测验 54
编程 54
第4章 执行控制 57
4.1 概念:代码块 57
4.2 条件语句的一般形式 57
4.3 i f语句 58
4.3.1 通用模板 58
4.3.2 MATLAB实现 59
4.3.3 重要的概念 60
4.4 switch语句 61
4.4.1 通用模板 61
4.4.2 MATLAB实现 62
4.5 迭代的一般形式 63
4.6 for循环 63
4.6.1 通用模板 63
4.6.2 MATLAB实现 64
4.6.3 索引实现方式 65
4.6.4 退出for循环 65
4.7 while循环 66
4.7.1 通用模板 66
4.7.2 MATLAB实现 66
4.7.3 loop-and-a-hal f的实现 67
4.7.4 退出while循环 68
4.8 工程实例——计算液体的体积 68
本章小结 69
特殊字符、保留字和函数 70
自我测验 70
编程 71
第5章 函数 74
5.1 概念:抽象和封装 74
5.2 函数的黑盒视图 74
5.3 MATLAB实现 75
5.3.1 通用模板 75
5.3.2 定义函数 75
5.3.3 函数的保存和使用 76
5.3.4 函数的调用 76
5.3.5 可变数量的参数 77
5.3.6 返回多个结果 77
5.3.7 辅助函数 78
5.3.8 MATLAB函数中的封装 78
5.3.9 全局变量 79
5.4 工程实例——测量固体 79
本章小结 81
特殊字符、保留字和函数 81
自我测验 81
编程 81
第6章 字符串 85
6.1 概念:映射、类型转换、分词、分隔 85
6.2 MATLAB实现 86
6.2.1 字符串的切片与连接 87
6.2.2 算术运算和逻辑运算 87
6.2.3 函数 87
6.3 类型转换函数 88
6.3.1 将数字转换为字符串 88
6.3.2 将字符串转换为数字 88
6.4 字符串的运算 90
6.4.1 简单的数据输出:disp(…)函数 90
6.4.2 复杂的数据输出 90
6.4.3 字符串的比较 91
6.5 字符串数组 92
6.6 工程实例——加密 93
本章小结 95
特殊字符、保留字和函数 95
自我测验 96
编程 96
第7章 元胞数组和结构体 96
7.1 概念:异构集合 99
7.2 元胞数组 99
7.2.1 元胞数组的创建 99
7.2.2 元胞数组的访问 100
7.2.3 元胞数组的使用 101
7.2.4 元胞数组的处理 102
7.3 结构体 103
7.3.1 结构体的构造和访问 103
7.3.2 构造函数 104
7.4 结构体数组 106
7.4.1 构建结构体数组 106
7.4.2 访问结构体的元素 107
7.4.3 操作结构体 109
7.5 工程实例——建造一个建筑物 111
本章小结 114
特殊字符、保留字和函数 114
自我测验 114
编程 115
第8章 文件的输入和输出 118
8.1 概念:串行I/O 118
8.2 工作空间I/O 119
8.3 高级I/O函数 119
8.3.1 探索 120
8.3.2 电子表格 120
8.3.3 带分隔符的文本文件 121
8.4 低级文件I/O 122
8.4.1 文件的打开与关闭 123
8.4.2 文本文件的读取 123
8.4.3 读取文本文件的例子 123
8.4.4 文本文件的写入 124
8.5 工程实例——电子表格数据 125
本章小结 126
特殊字符、保留字和函数 127
自我测验 127
编程 127
第9章 递归 130
9.1 概念:活动栈 130
9.1.1 栈 130
9.1.2 活动栈 130
9.1.3 函数实例 131
9.2 递归的定义 131
9.3 递归函数的实现 132
9.4 异常 133
9.4.1 早期的方法 133
9.4.2 异常处理的通用方法 134
9.4.3 MATLAB实现 134
9.5 封装函数 136
9.6 递归的例子 137
9.6.1 检测回文 138
9.6.2 斐波那契数列 138
9.6.3 函数零点 140
9.7 工程实例——机器人手臂运动 141
本章小结 144
特殊字符、保留字和函数 144
自我测验 144
编程 145
第10章 解决问题的原则 147
10.1 解决简单问题 147
10.2 解题步骤 148
10.3 运算概述 148
10.3.1 基本算术运算 148
10.3.2 集合的插入 148
10.3.3 集合的遍历 149
10.3.4 集合的创建 150
10.3.5 集合的映射 150
10.3.6 集合的过滤 151
10.3.7 集合的汇总 151
10.3.8 集合的搜索 151
10.3.9 集合的排序 152
10.4 解决更大的问题 152
10.5 工程实例——处理地缘政治数据 152
本章小结 156
自我测验 157
编程 157
第11章 绘图 159
11.1 基本绘图 159
11.1.1 窗口——图形的“容器” 159
11.1.2 调整图形的简单函数 159
11.1.3 一个窗口中的多个图形——子图 160
11.1.4 手动编辑图形 162
11.2 二维绘图 162
11.2.1 简单图形 162
11.2.2 绘图选项 163
11.2.3 参数图 163
11.2.4 其他二维绘图功能 164
11.3 三维绘图 164
11.3.1 线性三维图 165
11.3.2 三维线性参数图 166
11.3.3 其他三维绘图功能 167
11.4 曲面图 167
11.4.1 基本功能 167
11.4.2 简单的练习 168
11.4.3 三维参数曲面 171
11.4.4 旋转体 172
11.4.5 其他三维曲面绘图功能 175
11.4.6 组合曲面 176
11.5 操作绘图数据 176
11.6 工程实例——地理数据的可视化 176
11.6.1 数据的分析 176
11.6.2 数据的显示 177
本章小结 178
特殊字符、保留字和函数 179
自我测验 180
编程 181
第12章 矩阵 183
12.1 概念:行为抽象 183
12.2 矩阵运算 183
12.2.1 矩阵乘法 183
12.2.2 矩阵除法 185
12.2.3 矩阵求幂 185
12.3 实现 185
12.3.1 矩阵乘法 185
12.3.2 矩阵除法 186
12.4 旋转坐标系 188
12.4.1 二维旋转 188
12.4.2 三维旋转 190
12.5 联立线性方程组的求解 192
12.6 工程实例 194
12.6.1 陶瓷的成分 194
12.6.2 电路分析 195
本章小结 196
特殊字符、保留字和函数 196
自我测验 196
编程 196
第13章 图像 198
13.1 图像的性质 198
13.2 图像类型 199
13.2.1 真彩色图像 199
13.2.2 灰度图像 199
13.2.3 颜色映射图像 199
13.2.4 更好的图像格式 200
13.3 读取、显示、编写图像 200
13.4 图像处理 200
13.4.1 缩放图像 201
13.4.2 图像掩模 201
13.4.3 创建万花筒 205
13.4.4 曲面图片 206
13.5 工程实例——边缘检测 208
本章小结 210
特殊字符、保留字和函数 210
自我测验 211
编程 211
第14章 声音的处理 213
14.1 声音的物理原理 213
14.2 记录和回放 213
14.3 实现 214
14.4 时域操作 214
14.4.1 切割和连接声音 214
14.4.2 音乐的背景 216
14.4.3 音频的修改 217
14.5 快速傅里叶变换 219
14.5.1 背景 219
14.5.2 实现 220
14.5.3 简单的频谱分析 221
14.6 频域操作 223
14.7 工程实例——音乐合成器 225
本章小结 226
特殊字符、保留字和函数 227
自我测验 227
编程 227
第15章 数值方法 229
15.1 插值 229
15.1.1 线性插值 229
15.1.2 三次样条插值 231
15.1.3 外推 232
15.2 曲线拟合 233
15.2.1 线性回归 233
15.2.2 多项式回归 235
15.2.3 应用 236
15.3 数值积分 237
15.3.1 完全积分的计算 238
15.3.2 连续函数的积分 239
15.4 数值微分 240
15.5 解析式的运算 242
15.5.1 解析式的积分 242
15.5.2 解析式的微分 242
15.6 实现 242
15.7 工程实例——调整合成器的音符 243
本章小结 244
特殊字符、保留字和函数 245
自我测验 245
编程 245
第16章 排序 248
16.1 衡量算法成本 248
16.1.1 具体的大O的例子 248
16.1.2 分析复杂的算法 250
16.2 数据排序算法 250
16.2.1 插入排序 250
16.2.2 冒泡排序 251
16.2.3 快速排序 253
16.2.4 归并排序 254
16.2.5 基数排序 256
16.3 性能分析 256
16.4 排序算法的应用 258
16.4.1 使用sort (…) 258
16.4.2 插入排序 258
16.4.3 冒泡排序 258
16.4.4 快速排序 258
16.4.5 归并排序 259
16.4.6 基数排序 259
本章小结 259
自我测验 259
第17章 图论的处理 260
17.1 队列 260
17.1.1 队列的性质 260
17.1.2 队列的实现 260
17.1.3 优先队列 261
17.1.4 队列的测试 263
17.2 图 265
17.2.1 图的例子 265
17.2.2 图的处理 265
17.2.3 图的创建 266
17.2.4 图的遍历 268
17.2.5 图的搜索 270
17.3 最小生成树 270
17.4 图的路径搜索 272
17.4.1 精确算法 272
17.4.2 广度优先搜索算法 272
17.4.3 Dijkstra算法 273
17.4.4 近似算法 275
17.4.5 图搜索算法的测试 276
17.5 工程应用 277
17.5.1 简单的应用 277
17.5.2 复杂的应用 278
本章小结 278
编程 278
附录A MATLAB的特殊字符、保留字和函数 279
附录B ASCII字符集 287
附录C内部数字表示 288
附录D判断题和填空题答案 290