第1章 MATLAB入门 1
1.1 MATLAB简介 1
1.1.1 MATLAB的由来 1
1.1.2 MATLAB的发展 1
1.1.3 MATLAB语言的特点 2
1.1.4 MATLAB的组成 6
1.1.5 Simulink简介 8
1.2 MATLAB的开发环境 9
1.2.1 开发环境概览 9
1.2.2 命令窗口 10
1.2.3 工作空间 13
1.2.4 历史命令 14
1.2.5 工作目录 14
1.2.6 编辑器 15
1.2.7 设置路径 15
1.3 MATLAB的在线帮助 17
1.3.1 利用命令窗口获得帮助 17
1.3.2 利用帮助浏览器获得帮助 18
第2章 MATLAB的数据与数据类型 21
2.1 数据的基本概念 21
2.1.1 标量与向量 21
2.1.2 数组与矩阵 21
2.1.3 实数与复数 21
2.1.4 常量与变量 22
2.1.5 变量的命名规则 22
2.2 数据的类型 23
2.2.1 使用数据时的注意事项 23
2.2.2 数值型 26
2.2.3 字符型 30
2.2.4 逻辑型 35
2.2.5 结构体型 38
2.2.6 元胞型 39
2.3 数据类型的转换 40
2.3.1 数值型数据之间的类型转换 40
2.3.2 非负整数的进制转换 41
2.3.3 数值型与字符型数据的转换 42
2.3.4 元胞型与其他数据类型的转换 42
第3章 数组、矩阵及其运算 44
3.1 数组的创建 44
3.1.1 数组的创建 44
3.1.2 特殊数组的创建 45
3.1.3 数组的大小 47
3.1.4 数组的访问 47
3.1.5 数组的组合、扩充、拆分与重组 48
3.2 数组的运算 51
3.2.1 关系运算 51
3.2.2 逻辑运算 52
3.2.3 数组的四则运算 53
3.2.4 数组的集合运算 54
3.3 矩阵的运算 55
3.3.1 加减运算 55
3.3.2 乘法运算 55
3.3.3 除法运算 58
3.3.4 乘方运算 59
3.4 矩阵的求值运算 60
3.4.1 计算矩阵的行列式值 60
3.4.2 计算矩阵的逆与伪逆 61
3.4.3 计算矩阵的秩 61
3.4.4 计算矩阵的迹 61
3.4.5 计算向量和矩阵的范数 62
3.4.6 计算矩阵的条件数 63
3.4.7 计算矩阵的最大无关组 64
3.4.8 计算矩阵的特征值与特征向量 64
3.4.9 计算矩阵的正交基 65
3.5 矩阵的特殊运算 65
3.5.1 矩阵的转置 65
3.5.2 矩阵的旋转 66
3.5.3 抽取对角线元素 67
3.5.4 抽取上下三角阵 68
3.6 特殊矩阵 68
3.6.1 希尔伯特矩阵 68
3.6.2 范德蒙德矩阵 69
3.6.3 特普利茨矩阵 69
3.6.4 伴随矩阵 70
3.6.5 帕斯卡矩阵 70
3.6.6 稀疏矩阵 71
3.7 矩阵的分解 73
3.7.1 三角分解 73
3.7.2 奇异值分解 74
3.7.3 正交分解 75
3.7.4 Cholesky分解 76
3.7.5 Schur分解 76
3.7.6 特征值分解 77
第4章 MATLAB的程序设计 78
4.1 程序控制结构 79
4.1.1 顺序结构 79
4.1.2 选择结构 80
4.1.3 循环结构 85
4.2 程序的流程控制 87
4.2.1 continue命令 87
4.2.2 break命令 88
4.2.3 return命令 88
4.3 try-catch结构 89
4.4 M文件 90
4.4.1 M文件的命名规则 90
4.4.2 脚本文件 90
4.4.3 函数文件 91
4.5 函数类型 91
4.5.1 主函数 92
4.5.2 子函数 92
4.5.3 嵌套函数 93
4.5.4 私有函数 96
4.5.5 重载函数 98
4.5.6 匿名函数 98
4.5.7 利用全局变量传递参数 99
4.6 程序的优化 100
4.6.1 用数组运算取代循环 100
4.6.2 尽量调用MATLAB函数 101
4.6.3 使用循环时的注意事项 102
4.7 实例分析 103
第5章 MATLAB的数值计算 108
5.1 多项式的计算 108
5.1.1 生成多项式 108
5.1.2 多项式的加减乘除 109
5.1.3 多项式的求导 109
5.1.4 多项式的求值 110
5.1.5 多项式的求根 111
5.2 插值计算 111
5.2.1 一维数据的插值 112
5.2.2 二维数据的插值 113
5.2.3 一般分布的二维数据插值 117
5.3 曲线拟合 118
5.3.1 多项式拟合 118
5.3.2 最小二乘拟合 119
5.4 数据分析和统计 122
5.4.1 基本的数据分析和统计 122
5.4.2 协方差和相关系数 129
5.5 概率统计 130
5.5.1 随机变量的分布与数字特征 130
5.5.2 参数估计 133
5.5.3 假设检验 134
5.5.4 方差分析 136
5.6 数值积分 138
5.6.1 一元函数的数值积分 138
5.6.2 二元函数的数值积分 139
5.7 数值微分 140
5.8 方程的解 141
5.8.1 线性方程组的解 141
5.8.2 非线性方程的解 143
5.8.3 非线性方程组的解 144
5.8.4 无约束最优化问题 145
5.8.5 有约束最优化问题 147
第6章 MATLAB的文件操作 148
6.1 对Excel数据表和Lotus 1-2-3数据表的操作 148
6.1.1 对Excel数据表的操作 148
6.1.2 对Lotus 1-2-3数据表的操作 152
6.2 对图像文件的操作 153
6.2.1 检查图像文件的相关信息 154
6.2.2 读取图像文件 154
6.2.3 保存图像文件 155
6.3 对音频和视频文件的操作 156
6.3.1 检查音频和视频文件的相关信息 157
6.3.2 读取音频和视频文件 158
6.3.3 保存音频和视频文件 159
6.4 对ASCII文件的操作 160
6.4.1 读取ASCII文件 161
6.4.2 写入ASCII文件 165
6.5 对MAT文件的操作 166
6.5.1 读取MAT文件 166
6.5.2 写入MAT文件 167
6.6 用低端的I/O函数操作文件 167
6.6.1 打开和关闭文件 168
6.6.2 逐行读取文本文件 169
6.6.3 读取二进制文件 170
6.6.4 写入二进制文件 171
6.6.5 控制文件句柄 171
第7章 MATLAB的绘图 173
7.1 基本二维绘图 173
7.2 多图绘制与图形修饰 177
7.2.1 多图绘制 177
7.2.2 图形属性的设置 181
7.2.3 图形的辅助说明 183
7.2.4 设置坐标轴网格与坐标框 187
7.3 特殊二维绘图命令 189
7.3.1 绘制区域图 190
7.3.2 绘制条形图 192
7.3.3 绘制罗盘图 193
7.3.4 绘制彗星图 194
7.3.5 绘制等高线图 194
7.3.6 绘制误差棒图 195
7.3.7 绘制速度向量图和向量场图 196
7.3.8 绘制直方图和饼图 197
7.3.9 绘制填充图和伪彩色图 198
7.3.10 绘制火柴杆图和阶梯图 199
7.3.11 绘制极坐标图和对数坐标图 200
7.3.12 ezplot和fplot绘图 201
7.4 三维绘图命令 204
7.4.1 派生的三维绘图命令 204
7.4.2 mesh三维网格绘图 205
7.4.3 surf三维曲面绘图 207
7.4.4 标准三维曲面命令 209
7.5 三维绘图的修饰 210
7.5.1 改变视角 210
7.5.2 设置光源 213
7.5.3 设置色图 214
第8章 图形用户界面的设计与实现 217
8.1 图形对象基础 218
8.1.1 图形对象 218
8.1.2 图形对象句柄 219
8.1.3 图形对象属性的获取与设置 220
8.2 GUI基础 224
8.2.1 启动GUI 224
8.2.2 Layout编辑器 224
8.2.3 保存并运行GUI 226
8.3 设计GUI:曲线绘制及属性修改系统 226
8.3.1 任务1-1:使用菜单编辑器进行GUI设计 226
8.3.2 任务1-2:为设计好的GUI编写回调函数 229
8.3.3 任务1-3:使用文本框、编辑框和按钮实现用户输入参数 234
8.3.4 任务1-4:使用Slider实现用户输入参数 237
8.3.5 任务1-5:在不同的坐标轴上绘图 237
8.3.6 任务1-6:利用Check Box控件实现加网格和去边框功能 240
8.4 设计GUI:学生成绩查询系统 242
8.4.1 MATLAB预定义的对话框 242
8.4.2 任务2-1:使用uigetfile获取学生成绩表的路径和文件名 242
8.4.3 任务2-2:使用Listbox显示学生姓名 244
8.4.4 任务2-3:使用Pop-up Menu显示课程名单 245
8.4.5 任务2-4.:从列表框中选择要查看的学生姓名 246
8.4.6 任务2-5:在表控件中显示查询结果 248
8.4.7 任务2-6:使用图标设计器设计图标 250
8.4.8 任务2-7:使用工具栏实现保存文件功能 251
8.5 设计GUI:使用ActiveX控件 252
第9章 Simulink概述 255
9.1 启动Simulink 255
9.2 模型窗口介绍 256
9.3 建立模型 257
9.3.1 选择模块 257
9.3.2 模块的操作 257
9.3.3 信号线的操作 261
9.3.4 对模型进行注释 263
9.3.5 模型的缩放 263
9.4 运行模型 264
9.5 查看仿真结果 264
9.5.1 示波器参数的设置 264
9.5.2 信号的组合 265
9.6 向量和矩阵 268
9.7 保存和打开已有模型 269
9.8 处理大的模型 269
9.9 常用的仿真参数配置 270
9.9.1 Solver求解器 271
9.9.2 Solver选项卡的参数设置 272
9.9.3 Data Import/Export选项卡的参数设置 275
9.9.4 Optimization选项卡的参数设置 276
9.9.5 Diagnostics选项卡的参数设置 277
第10章 常用模块库及数据的导入导出 279
10.1 Simulink基本库简介 279
10.2 Sources信源库与外部数据的导入 280
10.2.1 Sources信源库介绍 280
10.2.2 外部数据的导入 282
10.2.3 从工作区导入模块参数 286
10.3 Sinks信宿库与仿真数据的导出 288
10.3.1 Sinks信宿库介绍 288
10.3.2 Floating Scope悬浮示波器 289
10.3.3 仿真数据的导出 291
10.4 User-Defined Functions库 293
第11章 动态系统的仿真与分析 296
11.1 连续系统 296
11.1.1 连续模块库介绍 296
11.1.2 Integrator积分器 297
11.1.3 采用积分器进行连续系统的仿真 300
11.1.4 采用传递函数进行连续系统的仿真 302
11.1.5 采用零-极点模块进行连续系统的仿真 304
11.1.6 采用状态方程进行连续系统的仿真 305
11.1.7 4种连续系统仿真方法的比较 306
11.2 离散系统 307
11.2.1 离散模块库介绍 307
11.2.2 Unit Delay单位延迟模块 308
11.2.3 采用Unit Delay进行离散系统的仿真 309
11.2.4 采用传递函数进行离散系统的仿真 310
11.2.5 采用状态空间进行离散系统的仿真 311
11.2.6 零阶保持器 311
11.2.7 多速率的离散系统 312
11.3 命令行仿真 313
11.3.1 使用sim命令对系统进行仿真 313
11.3.2 获取和设置仿真参数 316
11.3.3 确定模型的状态 318
11.3.4 寻找模型的平衡点 319
11.3.5 模型的线性化 322
第12章 子系统 325
12.1 子系统的建立与基本操作 325
12.1.1 建立子系统 325
12.1.2 子系统的基本操作 328
12.2 封装子系统 328
12.2.1 封装子系统 328
12.2.2 使用封装子系统 337
12.2.3 修改封装子系统 338
12.3 模块库技术 338
12.3.1 建立模块库 338
12.3.2 库模块与引用块的关联 339
12.3.3 在库浏览器中加入自建模块库 342
12.4 Simulink自带的子系统模块库 344
12.4.1 Enable使能子系统 344
12.4.2 Trigger触发子系统 345
12.4.3 触发使能子系统 346
12.4.4 Switch Case子系统和Switch Case Action Subsystem子系统 349
12.4.5 If系统和If Action Subsystem子系统 352