本书以MATLAB 2020版本的功能叙述为主,由浅入深地全面讲解MATLAB软件的知识。本书自始至终采用实例描述,内容完整且各章相对独立,是一本简明的MATLAB参考书。
本书涉及面广,涵盖一般用户需要使用的各种功能,并详细介绍MATLAB常用工具箱的使用。全书共15章,前12章主要介绍MATLAB的基础知识、数组及其操作、数值计算、数据分析、符号运算、关系运算与逻辑运算、函数、程序设计、数据图形可视化、句柄图形对象、Simulink仿真等内容,后3章重点介绍MATLAB在图像处理、信号处理、小波分析中的应用。
本书以实用为目标,讲解细致,既适合作为高等院校理工科研究生、本科生教学用书,也可作为广大科研人员和工程技术人员的参考用书。
前言
第1章 初识MATLAB1
1.1 MATLAB简介1
1.2 MATLAB R2020a的工作环境3
1.2.1 操作界面简介3
1.2.2 命令行窗口3
1.2.3 命令历史记录窗口7
1.2.4 变量命名规则8
1.2.5 当前文件夹窗口和路径管理9
1.2.6 搜索路径10
1.2.7 工作区窗口和数组编辑器12
1.2.8 变量的编辑命令13
1.2.9 存取数据文件14
1.3 MATLAB R2020a的帮助系统15
1.3.1 纯文本帮助15
1.3.2 帮助导航16
1.3.3 示例帮助16
1.4 小结17
第2章 MATLAB语言基础18
2.1 基本概念18
2.1.1 MATLAB数据类型概述18
2.1.2 整数类型19
2.1.3 浮点数类型21
2.1.4 复数23
2.1.5 无穷量和非数值量24
2.1.6 数值类型的显示格式24
2.1.7 确定数值类型的函数25
2.1.8 常量与变量26
2.1.9 标量、向量、矩阵与数组26
2.1.10 字符串27
2.1.11 运算符28
2.1.12 命令、函数、表达式和语句30
2.2 向量运算31
2.2.1 向量的生成31
2.2.2 向量的加、减、乘、除运算33
2.2.3 向量的点积、叉积运算34
2.3 矩阵运算35
2.3.1 矩阵元素的存储次序36
2.3.2 矩阵元素的表示及相关操作36
2.3.3 矩阵的创建39
2.3.4 矩阵的代数运算46
2.4 字符串运算53
2.4.1 字符串变量与一维字符数组53
2.4.2 对字符串的操作54
2.4.3 二维字符数组56
2.5 小结57
第3章 数组及其操作58
3.1 MATLAB中的数组58
3.2 数组的创建59
3.2.1 创建空数组59
3.2.2 创建一维数组59
3.2.3 创建二维数组60
3.2.4 创建三维数组61
3.2.5 创建低维标准数组65
3.2.6 创建高维标准数组66
3.3 数组的属性67
3.3.1 数组的结构68
3.3.2 数组的大小68
3.3.3 数组的维度69
3.3.4 数组的数据类型70
3.3.5 数组的内存占用71
3.4 创建特殊数组71
3.4.1 0-1数组72
3.4.2 对角数数组72
3.4.3 随机数组73
3.4.4 魔方数组74
3.5 数组操作74
3.5.1 数组的保存和装载74
3.5.2 数组索引和寻址75
3.5.3 数组的扩展和裁剪78
3.5.4 数组形状的改变84
3.5.5 数组运算87
3.5.6 数组的查找90
3.5.7 数组的排序91
3.5.8 高维数组的降维92
3.6 多维数组及其操作93
3.6.1 多维数组的属性93
3.6.2 多维数组的操作94
3.7 小结97
第4章 数值计算98
4.1 矩阵分析98
4.1.1 使用norm函数进行范数分析98
4.1.2 使用normest函数进行范数分析100
4.1.3 条件数分析101
4.1.4 数值矩阵的行列式103
4.1.5 符号矩阵的行列式104
4.1.6 化零矩阵104
4.2 线性方程组求解105
4.2.1 直接法106
4.2.2 迭代法107
4.3 矩阵分解111
4.3.1 Cholesky分解111
4.3.2 使用Cholesky分解求解方程组112
4.3.3 不完全Cholesky分解113
4.3.4 LU分解114
4.3.5 不完全LU分解115
4.3.6 QR分解116
4.3.7 处理QR分解结果118
4.3.8 奇异值分解118
4.4 特征值分析119
4.4.1 特征值和特征向量120
4.4.2 求稀疏矩阵的特征值和特征向量121
4.4.3 特征值问题的条件数122
4.4.4 特征值的复数问题123
4.5 函数的零点125
4.5.1 一元函数的零点125
4.5.2 多元函数的零点126
4.6 数值积分128
4.6.1 一元函数的数值积分128
4.6.2 矩形区域的多重数值积分130
4.6.3 变量区域的多重数值积分130
4.7 概率论与数理统计134
4.7.1 双变量的概率分布134
4.7.2 不同概率分布135
4.7.3 数据分布分析137
4.8 小结138
第5章 数据分析139
5.1 插值139
5.1.1 一维插值命令及实例139
5.1.2 二维插值命令及实例142
5.1.3 样条插值144
5.2 曲线拟合145
5.2.1 多项式拟合146
5.2.2 加权最小方差拟合原理及实例147
5.3 曲线拟合图形界面149
5.3.1 曲线拟合窗口149
5.3.2 绘制拟合残差图形151
5.3.3 进行数据预测151
5.4 傅里叶分析152
5.4.1 离散傅里叶变换152
5.4.2 FFT和DFT155
5.5 微分方程157
5.5.1 常微分方程的数值解157
5.5.2 偏微分方程的数值解160
5.6 小结165
第6章 符号运算166
6.1 符号运算的基本概念166
6.1.1 符号对象166
6.1.2 创建符号对象的函数sym( )、syms( )与class( )167
6.1.3 符号常量168
6.1.4 符号变量169
6.1.5 符号表达式、符号函数与符号方程170
6.1.6 函数symvar( )171
6.1.7 数组、矩阵与符号矩阵172
6.2 符号运算的基本内容174
6.2.1 符号变量代换及其函数subs( )174
6.2.2 将符号对象转换为数值对象的函数175
6.2.3 符号表达式的化简177
6.2.4 其他符号运算函数181
6.2.5 两种特定的符号运算函数182
6.3 符号微积分运算及应用184
6.3.1 符号极限运算185
6.3.2 符号微分运算187
6.3.3 符号积分运算188
6.4 符号矩阵及其运算189
6.4.1 符号矩阵的建立与访问189
6.4.2 符号矩阵的基本运算194
6.4.3 符号矩阵的微分与积分199
6.4.4 符号矩阵的Laplace变换200
6.5 符号方程求解201
6.5.1 符号代数方程求解201
6.5.2 符号微分方程求解202
6.6 符号函数图形计算器FUNTOOL205
6.6.1 符号函数图形计算器的界面205
6.6.2 符号函数图形计算器的输入框操作206
6.6.3 符号函数图形计算器的按钮操作206
6.7 小结207
第7章 关系运算与逻辑运算208
7.1 逻辑类型的数据208
7.2 关系运算209
7.3 逻辑运算210
7.3.1 逐个元素的逻辑运算210
7.3.2 捷径逻辑运算211
7.3.3 逐位逻辑运算212
7.4 逻辑函数与测试函数213
7.5 运算优先级214
7.6 小结215
第8章 函数216
8.1 M文件216
8.1.1 M文件概述216
8.1.2 局部变量与全局变量217
8.1.3 M文件的编辑与运行218
8.1.4 M文件的结构219
8.1.5 脚本文件219
8.1.6 函数文件220
8.1.7 函数调用221
8.1.8 M文件调试工具224
8.1.9 M文件分析工具226
8.2 MATLAB的变量229
8.2.1 M文件的变量类型229
8.2.2 M文件的关键字230
8.3 函数类型230
8.3.1 匿名函数230
8.3.2 M文件主函数232
8.3.3 嵌套函数232
8.3.4 子函数233
8.3.5 私有函数233
8.3.6 重载函数233
8.4 参数传递234
8.4.1 参数传递概述234
8.4.2 输入和输出参数的数目234
8.4.3 可变数目的参数传递235
8.4.4 返回被修改的输入参数236
8.4.5 全局变量237
8.5 小结238
第9章 程序设计239
9.1 MATLAB的程序结构239
9.1.1 if分支结构239
9.1.2 switch分支结构241
9.1.3 while循环结构242
9.1.4 for循环结构243
9.2 MATLAB的控制245
9.2.1 continue命令245
9.2.2 break命令246
9.2.3 return命令247
9.2.4 input命令247
9.2.5 keyboard命令248
9.2.6 error和warning命令248
9.3 数据的输入与输出249
9.3.1 键盘输入命令input250
9.3.2 屏幕输出命令disp250
9.3.3 M数据文件的存储/加载命令save/load250
9.3.4 格式化文本文件的存储/读取命令fprintf/fscanf250
9.3.5 二进制数据文件的存储/读取命令fwrite/fread251
9.3.6 数据文件行的存储/读取命令fgetl/fgets251
9.4 MATLAB文件操作251
9.5 面向对象程序设计253
9.5.1 面向对象程序设计的基本方法253
9.5.2 面向对象程序设计实例255
9.6 MATLAB程序优化258
9.6.1 效率优化(时间优化)258
9.6.2 内存优化(空间优化)259
9.6.3 编程注意事项264
9.6.4 几个常用数学方法的算法程序265
9.7 程序调试274
9.7.1 程序调试命令274
9.7.2 程序剖析275
9.8 小结279
第10章 数据图形可视化280
10.1 MATLAB图形窗口280
10.1.1 创建图形窗口280
10.1.2 关闭与清除图形框281
10.2 二维图形的绘制281
10.2.1 绘制二维曲线282
10.2.2 绘制离散序列图283
10.2.3 其他类型的二维图284
10.2.4 二维图形的修饰286
10.2.5 子图288
10.3 三维图形的绘制290
10.3.1 三维折线及曲线的基本绘图命令290
10.3.2 绘制三维曲面292
10.3.3 三维图形的视角变换295
10.3.4 其他图形函数296
10.4 图像299
10.4.1 图像的类别和显示299
10.4.2 图像的读写301
10.5 函数绘制302
10.5.1 一元函数绘图302
10.5.2 二元函数绘图303
10.6 图形对象及其属性设置305
10.6.1 MATLAB的图形对象305
10.6.2 句柄——图形对象的标识307
10.6.3 图形对象属性的获取与设定307
10.6.4 图形对象常用属性309
10.6.5 图形可视编辑工具310
10.7 小结311
第11章 句柄图形对象312
11.1 句柄图形对象概述312
11.2 get和set函数314
11.2.1 get函数314
11.2.2 set函数315
11.3 查找对象318
11.4 图形窗口对象320
11.5 核心图形对象321
11.6 默认属性322
11.7 非文件式属性324
11.8 小结325
第12章 Simulink仿真系统326
12.1 Simulink基础知识326
12.1.1 Simulink概述326
12.1.2 Simulink的特点327
12.1.3 Simulink工作环境328
12.1.4 Simulink仿真的基本步骤329
12.2 模型的创建330
12.2.1 模型概念及文件操作330
12.2.2 模块操作332
12.2.3 信号线操作334
12.2.4 对模型的注释336
12.2.5 Source库中常用的模块336
12.2.6 Sink库中常用的模块342
12.2.7 仿真的配置347
12.2.8 启动仿真351
12.3 Simulink系统仿真原理352
12.3.1 Simulink求解器概念353
12.3.2 系统过零的概念与解决方案354
12.3.3 系统代数环的概念与解决方案358
12.4 高级积分器360
12.5 小结363
第13章 MATLAB与图像处理364
13.1 图像类型364
13.1.1 真彩色图像364
13.1.2 索引色图像365
13.1.3 灰度图像365
13.1.4 二值图像366
13.1.5 多帧图像366
13.1.6 读写图像数据367
13.1.7 查看图像文件信息368
13.2 显示图像369
13.2.1 默认显示方式369
13.2.2 添加颜色条370
13.2.3 显示多帧图像370
13.2.4 显示动画371
13.2.5 三维材质图像371
13.3 图像的灰度变换372
13.3.1 图像的直方图372
13.3.2 灰度变换373
13.3.3 均衡直方图375
13.4 小结376
第14章 MATLAB与信号处理377
14.1 产生信号377
14.1.1 锯齿波、三角波和矩形波发生器378
14.1.2 周期sinc波379
14.1.3 高斯调幅正弦波380
14.1.4 调频信号381
14.1.5 高斯分布随机序列382
14.2 随机信号处理383
14.2.1 随机信号的互相关函数383
14.2.2 随机信号的互协方差函数385
14.2.3 谱分析——pwelch函数386
14.3 模拟滤波器设计388
14.3.1 巴特沃斯滤波器388
14.3.2 切比雪夫I型滤波器389
14.3.3 切比雪夫Ⅱ型滤波器390
14.4 IIR数字滤波器设计391
14.4.1 巴特沃斯数字滤波器设计392
14.4.2 切比雪夫I 型数字滤波器设计393
14.4.3 切比雪夫II 型数字滤波器设计394
14.5 小结395
第15章 MATLAB与小波分析396
15.1 傅里叶变换到小波分析396
15.1.1 傅里叶变换397
15.1.2 小波分析399
15.1.3 常用的小波函数400
15.2 Mallat算法401
15.2.1 Mallat算法原理401
15.2.2 Mallat算法示例404
15.3 小波分析工具箱408
15.4 小波分析用例409
15.4.1 信号压缩409
15.4.2 信号去噪410
15.5 小结414
附录 MATLAB基本命令415