第Ⅰ部分 基础知识 3
第1章 引言 3
1.1 使用MATLAB 4
1.1.1 算术 5
1.1.2 变量 6
1.1.3 数学函数 7
1.1.4 函数和命令 7
1.1.5 向量 7
1.1.6 线性方程组 9
1.1.7 教程和演示 10
1.2 Desktop 11
1.2.1 使用Editor和运行脚本 12
1.2.2 帮助、发布和视图 14
1.2.3 符号与MuPAD Notebook APP(记事本应用程序) 17
1.2.4 其他APP 20
1.2.5 附加特性 20
1.3 示例程序 22
1.3.1 剪切和粘贴 22
1.3.2 保存程序:脚本文件 23
1.3.3 程序实战 25
1.4 本章小结 26
1.5 本章练习 26
第2章 MATLAB基础 27
2.1 变量 27
2.2 工作空间 28
2.3 阵列:向量与矩阵 29
2.3.1 初始化向量:显式列表 29
2.3.2 初始化向量:冒号运算符 31
2.3.3 linspace和logspace函数 31
2.3.4 转置向量 32
2.3.5 下标 32
2.3.6 矩阵 32
2.3.7 捕获输出 33
2.3.8 结构规划 34
2.4 重力作用下的垂直运动 35
2.5 运算符、表达式和语句 36
2.5.1 数字 37
2.5.2 数据类型 37
2.5.3 算术运算符 37
2.5.4 运算符的优先级 38
2.5.5 冒号运算符 39
2.5.6 转置运算符 39
2.5.7 阵列算术运算 39
2.5.8 表达式 40
2.5.9 语句 41
2.5.10 语句、命令和函数 42
2.5.11 公式向量化 42
2.6 输出 45
2.6.1 disp语句 45
2.6.2 format命令 46
2.6.3 比例因子 47
2.7 for循环 48
2.7.1 用牛顿法计算平方根 48
2.7.2 阶乘! 49
2.7.3 数列的极限 49
2.7.4 基本for结构 50
2.7.5 单行中的for语句 51
2.7.6 更加一般化的for语句 51
2.7.7 通过向量化来避免使用for循环 52
2.8 判断 54
2.8.1 单行if语句 54
2.8.2 if-else结构 56
2.8.3 单行if-else语句 57
2.8.4 elseif 57
2.8.5 逻辑运算符 58
2.8.6 多个if与elseif的对比 59
2.8.7 嵌套if 60
2.8.8 将if向量化? 60
2.8.9 switch语句 60
2.9 复数 61
2.10 本章小结 63
2.11 本章练习 64
第3章 程序设计与算法开发 71
3.1 程序设计流程 72
3.2 MATLAB函数编程 79
3.2.1 内联对象:谐振子 79
3.2.2 MATLAB函数:y=f(x) 81
3.3 本章小结 82
3.4 本章练习 83
第4章 MATLAB函数与数据导入导出工具 85
4.1 常用函数 85
4.2 导入和导出数据 90
4.2.1 load和save命令 90
4.2.2 导出文本(ASCII)数据 90
4.2.3 导出文本(ASCII)数据 91
4.2.4 导出二进制数据 91
4.3 本章练习 92
第5章 逻辑向量 95
5.1 示例 96
5.1.1 不连续图 96
5.1.2 避免除零 97
5.1.3 避免无穷 97
5.1.4 对随机数进行计数 98
5.1.5 掷骰子 99
5.2 逻辑运算符 100
5.2.1 运算符的优先级 101
5.2.2 危险 101
5.2.3 逻辑运算符和向量 102
5.3 将逻辑向量作为下标 102
5.4 逻辑函数 104
5.5 用逻辑向量代替elseif阶梯 105
5.6 本章小结 107
5.7 本章练习 107
第6章 矩阵和阵列 111
6.1 矩阵 111
6.1.1 具体示例 111
6.1.2 创建矩阵 113
6.1.3 下标 113
6.1.4 转置 113
6.1.5 冒号运算符 114
6.1.6 复制行和列 116
6.1.7 删除行和列 117
6.1.8 初等矩阵 118
6.1.9 特殊矩阵 119
6.1.10 对矩阵使用MATLAB函数 119
6.1.11 操纵矩阵 120
6.1.12 对矩阵进行阵列(元素对元素)运算 120
6.1.13 矩阵和for循环 121
6.1.14 矩阵的可视化 121
6.1.15 将嵌套for循环向量化:贷款偿还表格 121
6.1.16 多维阵列 124
6.2 矩阵运算 124
6.2.1 矩阵乘法 124
6.2.2 矩阵求幂运算 126
6.3 其他矩阵函数 126
6.4 种群增长:莱斯利矩阵 126
6.5 马尔可夫过程 129
6.6 线性方程 131
6.6.1 MATLAB中的解法 132
6.6.2 残量 133
6.6.3 超定方程组 133
6.6.4 欠定方程组 134
6.6.5 病态 134
6.6.6 矩阵除法 135
6.7 稀疏矩阵 136
6.8 本章小结 138
6.9 本章练习 138
第7章 函数M-文件 141
7.1 示例:再看牛顿法 141
7.2 基本规则 143
7.2.1 子函数 147
7.2.2 私有函数 147
7.2.3 P-code文件 147
7.2.4 使用分析工具提高M-文件的性能 147
7.3 函数句柄 148
7.4 命令/函数对偶性 149
7.5 函数名解析 150
7.6 调试M-文件 150
7.6.1 调试脚本文件 150
7.6.2 调试函数 152
7.7 递归 152
7.8 本章小结 153
7.9 本章练习 154
第8章 循环 157
8.1 使用连续for语句的确定循环 157
8.1.1 二项式系数 157
8.1.2 更新过程 158
8.1.3 嵌套for语句 159
8.2 使用连续while语句的不确定循环 160
8.2.1 猜谜游戏 160
8.2.2 while语句 161
8.2.3 投资翻倍的时间 161
8.2.4 质数 162
8.2.5 抛射体轨迹 163
8.2.6 break和continue语句 165
8.2.7 目录 165
8.3 本章小结 166
8.4 本章练习 166
第9章 MATLAB图形 171
9.1 基本二维图形 171
9.1.1 标签 172
9.1.2 在相同的坐标轴上绘制多个图形 173
9.1.3 线型、标记和颜色 173
9.1.4 坐标轴限制 174
9.1.5 在一幅图中绘制多个图形:subplot 175
9.1.6 figure、clf和cla函数 176
9.1.7 图形输入 176
9.1.8 对数作图 176
9.1.9 极坐标作图 177
9.1.10 绘制快速变化的数学函数:fplot 178
9.1.11 属性编辑器 179
9.2 三维作图 179
9.2.1 plot3 179
9.2.2 使用comet3绘制三维动画 180
9.2.3 网面 180
9.2.4 等高线图 182
9.2.5 使用NaN剪切曲面 183
9.2.6 可视化向量场 183
9.2.7 矩阵的可视化 184
9.2.8 三维图形的旋转 185
9.3 句柄图形 186
9.3.1 获得句柄 186
9.3.2 图形对象的属性和修改方法 187
9.3.3 句柄向量 188
9.3.4 图形对象创建函数 189
9.3.5 指定父对象 189
9.3.6 定位图形 190
9.4 编辑绘图 191
9.4.1 绘图编辑模式 191
9.4.2 属性编辑器 191
9.5 动画 192
9.6 颜色等属性 195
9.6.1 色图 195
9.6.2 曲面绘图的颜色 196
9.6.3 Truecolor(真彩) 197
9.7 光照和镜头 198
9.8 保存、打印和导出图形 198
9.8.1 保存和打开图像文件 198
9.8.2 打印图形 199
9.8.3 导出图形 199
9.9 本章小结 199
9.10 本章练习 200
第10章 作为阵列的向量以及其他数据结构 203
10.1 更新过程 203
10.1.1 单位时间步长 204
10.1.2 非单位时间步长 206
10.1.3 使用函数 207
10.1.4 精确解 208
10.2 频率、柱状图和直方图 209
10.2.1 随机漫步 209
10.2.2 直方图 210
10.3 排序 211
10.3.1 冒泡排序 211
10.3.2 MATLAB中的sort函数 212
10.4 结构体 213
10.5 元胞阵列 215
10.5.1 将数据赋给元胞阵列 215
10.5.2 访问元胞阵列中的数据 216
10.5.3 使用元胞阵列 217
10.5.4 显示和可视化元胞阵列 218
10.6 类和对象 218
10.7 本章小结 218
第11章 错误和陷阱 221
11.1 语法错误 221
11.1.1 向量的大小不匹配 222
11.1.2 名称屏蔽 222
11.2 逻辑错误 222
11.3 舍入误差 223
11.4 本章小结 224
11.5 本章练习 224
第Ⅱ部分 实践应用 227
第12章 动力系统 227
12.1 悬臂梁 228
12.2 电流 230
12.3 自由落体 232
12.4 摩擦力作用下的投射体问题 239
12.5 本章小结 241
12.6 本章练习 242
第13章 仿真 243
13.1 随机数的生成 243
13.2 旋转硬币 244
13.3 投掷骰子 245
13.4 细菌分裂 245
13.5 随机游走 246
13.6 交通流量 247
13.7 正态(高斯)随机数 250
13.8 总结 250
13.9 本章练习 250
第14章 数值方法入门 253
14.1 方程组 253
14.1.1 牛顿法 253
14.1.2 二分法 255
14.1.3 fzero函数 257
14.1.4 roots函数 257
14.2 积分 257
14.2.1 梯形法则 257
14.2.2 辛普森法则 258
14.2.3 quad函数 259
14.3 数值微分 259
14.4 一阶微分方程 260
14.4.1 欧拉方法 261
14.4.2 示例:细菌生长 261
14.4.3 另一种下标表示法 263
14.4.4 预估-校正法 264
14.5 线性常微分方程(LODE) 264
14.6 龙格-库塔法 264
14.6.1 单独的微分方程 265
14.6.2 差分方程组:混沌 265
14.6.3 将额外参数传递给ODE求解程序 268
14.7 偏微分方程 269
14.8 其他数值方法 271
14.9 本章小结 273
14.10 本章练习 273
第15章 信号处理 277
15.1 谐波分析 278
15.2 快速傅里叶变换(FFT) 281
第16章 Simulink工具箱 285
16.1 弹簧-质块-阻尼器动力系统 290
16.2 弹跳球动力系统 291
16.3 范德波尔振子 293
16.4 杜芬振子 294
16.5 本章练习 295
第17章 Symbolic工具箱 297
17.1 代数 298
17.1.1 多项式 298
17.1.2 向量 300
17.1.3 矩阵 301
17.2 微积分 304
17.3 拉普拉斯变换和Z变换 305
17.4 广义函数 307
17.5 微分方程 308
17.6 funtool、MuPAD和帮助文档的使用 309
17.6.1 funtool 309
17.6.2 MuPAD记事本和帮助文档 309
17.7 本章练习 311
附录A 语法快速参考 313
附录B 命令与函数快速参考 317
附录C ASCII字符编码表 327
附录D 部分练习的答案 329