
本书系统地讲解MATLAB R2021a的基本环境和操作要旨;分章阐述MATLAB数值计算、MATLAB符号计算、数据与函数的可视化、数据拟合与插值、MATLAB程序设计;用实例讲解和剖析MATLAB App的设计和制作方法;通过大量的例子展现MATLAB精华工具Simulink的功能级和元器件级的仿真能力;简要介绍BP神经网络进行数据预测的步骤和方法;以实例拓展性地介绍MATLAB在自动驾驶中的应用,通过搭建联合仿真平台对自动驾驶轨迹预测进行仿真设计。全书包含多个多年凝练的计算范例和用于巩固知识、拓展思路的习题。所有算例程序可靠、完整,读者可以通过扫描书中对应的二维码获取源程序,完全准确地重现本书所提供的算例结果。本书内容充实、篇幅紧凑,是专为理工院校本科生系统学习MATLAB而编写的,也可供部分研究生使用;既可作为课堂教学教材及课程设计、毕业设计的参考用书,又可作为MATLAB编程爱好者的自学用书。
MATLAB作为一门科学计算语言,诞生之初仅用于线性代数计算,但目前在工程界得到了广泛应用。这门语言起初是作为研究生课程在国内外一些高校面向工科学生开设的,后来随着MATLAB在高校相关课程中的应用越来越广泛和普及,很多高校也开始对本科生开设MATLAB语言课程。 近年来,涌现出了大量有关MATLAB语言的图书,但作为本科低年级教材的图书还为数尚少,本书就是专门为本科低年级段的学生和MATLAB入门读者准备的,将带领读者走进MATLAB的殿堂,为后续深入学习打好入门基础。本书编写的宗旨就是引领读者从零基础入门,由浅入深地学习,熟悉MATLAB“草稿纸式”的编程语言和语法规则,让读者能够调用其内部函数做“傻瓜式”的计算,并慢慢了解MATLAB自带的工具箱,在此基础上可以根据自己的算法熟练地进行扩展编程。在这个过程中,读者会在不知不觉中了解MATLAB的精妙之处,并有助于本科学生在后续专业课程的学习中利用MATLAB解决专业课程的相关实践和计算问题。 本书分为11章:第1章,初识MATLAB;第2章,MATLAB基本计算和基础知识;第3章,MATLAB数值计算;第4章,MATLAB符号计算;第5章,数据与函数的可视化;第6章,数据拟合与插值;第7章,MATLAB程序设计;第8章,MATLAB App设计;第9章,Simulink工具箱;第10章,BP神经网络;第11章,MATLAB在自动驾驶中的应用。本书在章节顺序的安排上,本着从易到难、从基础到应用及提高的原则。为了能让读者尽快熟悉MATLAB,学会使用MATLAB编出自己的程序,本书把MATLAB数值计算、MATLAB符号计算、数据与函数的可视化、MATLAB程序设计等章节放在了前面,这一点不同于一般的MATLAB图书。根据我们的经验,从绘图入手是学习MATLAB最高效、快捷的方式,因为各种实用且炫目的MATLAB图形功能能够激发读者的学习兴趣,有了兴趣,学习起来就简单了。另外,本书内容力求与本科低年级段学生必修的高等数学、线性代数等主干课程相贴合,这样可以让读者做到理论结合实践,学习起来更为轻松。 本书由西北工业大学、西安交通大学城市学院、西安工业大学、西安理工大学的一线教师共同编写,由西北工业大学的李辉教授和西安交通大学城市学院的张安莉教授担任主编,李辉提出全书的整体编写思想和大纲并统筹定稿,张安莉负责审核内容。其中,第1章由李辉编写,第2、3章由张安莉编写,第4章由李楠和张安莉共同编写,第5章由曹小鸽编写,第6章由陈丹和程爽共同编写,第7章由谢檬和张安莉共同编写,第8章由王娟编写,第9、10章由徐微编写,第11章由宋晓华编写。 本书在编写过程中得到了西北工业大学电子信息学院刘静教授、西安交通大学赵录怀教授及领导和同事的大力支持与帮助,在此一并表示最诚挚的感谢。 由于编者水平有限,书中难免存在疏漏之处,恳请广大读者和同行批评指正。 编者 2022年8月21日
第1章 初识MATLAB 1 1.1 MATLAB简介 1 1.2 MATLAB的产生与发展 2 1.3 MATLAB用户界面 3 1.3.1 命令的执行 4 1.3.2 光标与命令行的操作 5 1.3.3 工作窗与命令行的操作 6 1.4 MATLAB帮助系统 6 本章小结 8 习题一 8 第2章 MATLAB基本计算和基础知识 9 2.1 基本计算入门实例 9 2.2 变量 10 2.2.1 用户自定义变量 10 2.2.2 系统预定义变量 10 2.3 数据类型 11 2.3.1 数值类型 11 2.3.2 逻辑类型 12 2.3.3 字符串类型 12 2.3.4 单元类型 13 2.3.5 结构类型 13 2.4 MATLAB的基本运算类型 14 2.4.1 算术运算 14 2.4.2 关系运算 15 2.4.3 逻辑运算 15 2.5 MATLAB的标点符号和特殊字符 15 2.6 常用数学函数 16 2.7 函数语句 17 本章小结 17 习题二 17 第3章 MATLAB数值计算 19 3.1 矩阵 19 3.1.1 利用直接输入法创建矩阵 19 3.1.2 利用函数创建矩阵 20 3.1.3 利用M文件创建矩阵 21 3.1.4 矩阵元素与矩阵元素变量 21 3.1.5 串联矩阵 23 3.1.6 扩展矩阵 24 3.1.7 矩阵运算 24 3.1.8 矩阵的运算函数 28 3.2 向量 32 3.3 数组 33 3.3.1 数组的创建与索引 33 3.3.2 数组的基本算术运算 36 3.4 多项式 40 3.4.1 多项式的构造 41 3.4.2 多项式加减运算 41 3.4.3 多项式乘法运算 41 3.4.4 多项式除法运算 42 3.4.5 常用的多项式函数 42 3.5 数据的导入与导出 45 3.5.1 数据的导出 45 3.5.2 数据的导入 47 3.6 输入与输出语句 50 本章小结 51 习题三 51 第4章 MATLAB符号计算 53 4.1 符号常量/变量和符号表达式 53 4.1.1 创建符号常量和符号变量 53 4.1.2 创建符号表达式 55 4.1.3 创建和定义符号函数 56 4.2 常见符号计算 56 4.2.1 极限 56 4.2.2 微分 57 4.2.3 积分 58 4.2.4 求解代数方程 59 4.2.5 求解常微分方程 60 4.2.6 级数求和 62 4.2.7 傅里叶变换 63 4.2.8 拉普拉斯变换 63 4.2.9 Z变换 64 本章小结 64 习题四 65 第5章 数据与函数的可视化 66 5.1 离散数据、离散函数和连续函数的可视化 66 5.1.1 离散数据和离散函数的可视化 66 5.1.2 连续函数的可视化 67 5.1.3 可视化的一般步骤 68 5.2 二维绘图 69 5.2.1 二维绘图基本命令 69 5.2.2 图形控制命令 73 5.2.3 图轴控制命令 74 5.2.4 图形标识和图形修饰 75 5.2.5 多次叠绘、双纵坐标和多子图 79 5.3 三维绘图 81 5.3.1 三维绘图基本命令 82 5.3.2 视点控制 85 5.3.3 函数colormap 86 5.3.4 透视、镂空和裁切 88 5.4 其他绘图 90 5.4.1 直方图命令bar 90 5.4.2 极坐标图polar 91 5.4.3 彩色份额图 92 5.4.4 三维多边形 94 5.4.5 等高线图 94 5.4.6 球面图 95 5.4.7 三维向量图 96 本章小结 97 习题五 97 第6章 数据拟合与插值 98 6.1 数据拟合 98 6.1.1 多项式拟合函数 98 6.1.2 非线性拟合函数 100 6.2 曲线拟合工具箱 102 6.2.1 打开曲线拟合工具箱 102 6.2.2 拟合类型 103 6.2.3 曲线拟合面板介绍 103 6.2.4 非参数拟合 105 6.3 数据插值 108 6.3.1 一维插值函数 108 6.3.2 二维插值函数 111 本章小结 115 习题六 115 第7章 MATLAB程序设计 118 7.1 M文件 118 7.1.1 M文本编辑器 119 7.1.2 脚本文件 119 7.1.3 函数文件 121 7.1.4 函数的分类 122 7.2 局部变量和全局变量 125 7.3 数学运算符 126 7.4 关系运算与逻辑运算 127 7.4.1 关系运算 127 7.4.2 逻辑运算 127 7.5 运算优先级 127 7.6 程序设计 128 7.6.1 表达式、语句及程序结构 129 7.6.2 if语句 129 7.6.3 switch语句 130 7.6.4 while语句 132 7.6.5 break语句和continue语句 132 7.6.6 for语句 133 7.7 MATLAB编程及调试 135 7.7.1 程序文件的创建和编辑 135 7.7.2 函数的调用 136 7.7.3 函数句柄 138 7.7.4 程序调试 143 本章小结 147 习题七 147 第8章 MATLAB App设计 148 8.1 App开发工具简介 148 8.2 App Designer 149 8.2.1 启动App Designer 149 8.2.2 App Designer开发环境 150 8.3 App Designer组件 152 8.3.1 组件的种类及作用 152 8.3.2 组件的属性 155 8.4 App Designer代码结构 156 8.4.1 类的定义 156 8.4.2 代码结构 158 8.5 回调函数 160 8.6 对象属性 162 8.7 App设计实例 163 8.7.1 App设计实例1 163 8.7.2 App设计实例2 168 本章小结 176 习题八 176 第9章 Simulink工具箱 178 9.1 MATLAB工具箱分类 178 9.2 Simulink工具箱的应用 179 9.2.1 Simulink的启动方法 179 9.2.2 Simulink界面与菜单 179 9.2.3 Simulink模块库简介 182 9.3 Simulink建模与仿真 188 9.3.1 启动模型编辑窗口进行仿真 188 9.3.2 标准模块的选取 189 9.3.3 模块的移动、复制、删除和转向 189 9.3.4 模块的命名 189 9.3.5 模块的连接 190 9.3.6 Simulink连线处理 190 9.3.7 模块属性的改变 191 9.3.8 仿真输入源模块库 192 9.3.9 仿真接收模块库 194 9.4 Simulink连续时间系统建模 196 9.4.1 线性连续时间系统 196 9.4.2 非线性连续时间系统 198 9.5 子系统及其封装 199 9.5.1 创建子系统 199 9.5.2 条件执行子系统 202 9.5.3 封装子系统 204 9.6 离散时间系统和混合系统 206 9.6.1 若干基本模块 206 9.6.2 多速率离散时间系统 211 9.6.3 离散-连续混合系统 212 9.6.4 菜单操作方式下仿真算法和参数的选择 213 9.6.5 使用MATLAB命令运行仿真 214 9.6.6 改善仿真性能和精度 215 9.7 模型的调试 216 9.7.1 Simulink调试器 216 9.7.2 显示仿真的相关信息 219 9.7.3 显示模型的信息 219 本章小结 220 习题九 220 第10章 BP神经网络 223 10.1 BP神经网络的构建与性能评价 223 10.1.1 BP神经网络相关函数的操作和使用 223 10.1.2 BP神经网络性能评价指标 226 10.1.3 实现BP神经网络预测的步骤 227 10.2 神经网络工具箱介绍 227 10.2.1 神经网络工具箱 227 10.2.2 神经网络工具箱应用实例 238 10.2.3 神经网络预测应用实例 243 本章小结 249 习题十 249 第11章 MATLAB在自动驾驶中的应用* 252 11.1 二次规划问题 252 11.1.1 二次规划及其基本思想 252 11.1.2 二次规划问题的数学模型 252 11.1.3 quadprog函数 253 11.2 微分方程问题 254 11.3 非线性规划问题 255 11.3.1 fmincon函数 256 11.3.2 fminbnd函数 257 11.3.3 fminsearch函数 258 11.3.4 工程实例之轨迹跟踪 259 11.4 线性时变模型预测控制算法 262 11.4.1 非线性系统线性化方法 262 11.4.2 工程实例 263 11.5 CarSim与Simulink联合仿真 265 11.5.1 CarSim软件主界面及功能模块 266 11.5.2 搭建CarSim与Simulink联合仿真平台 267 11.5.3 仿真实例 267 11.6 基于MPC的轨迹跟踪控制器的设计 279 本章小结 283 习题十一 283