编辑推荐
《Simulink仿真及代码生成技术入门到精通》由MATLAB中文论坛的版主hyowinner(孙忠潇)写成。与其说这是一本关于Simulink/MATLAB的书,不如说这是一本作者的成长手册——从入门,到进阶,先夯实了基础,再来攻克代码生成的难题,作者前进的脚步一直踏踏实实稳稳当当的。作者凭借这些能成功,你学完这些也不会差!
全书所有知识点的讲解通俗易懂,数以千计的小例子助读者全面学习并应用Simulink/MATLAB知识。作者本人的Simulink功力深厚,跟着本书,相信读者很快就能感受到Simulink的博大精深和无穷魅力。
海报:
内容简介
《Simulink仿真及代码生成技术入门到精通》围绕Simulink软件的仿真和代码生成技术,从原理上展开阐述,把握整体,注重细节,让读者深刻认识Simulink的运行原理。结构化的章节安排和丰富多彩的案例展示了Simulink在模型建立、工业流程仿真及嵌入式控制等方面的应用技巧和方法。本书不拘泥于界面操作,而结合MATLAB脚本语言展示其自动控制模型仿真、代码生成过程的强大功能,带领读者把握宏观架构,攻克细节问题。
全书共19章,分为入门篇、进阶篇和高级篇3个篇章。入门篇介绍Simulink软件及其基本操作和构成要素;进阶篇讲解Simulink的运行机制和原理、自定义模块及模块封装、自定义模块库的建立和Simulink环境的编辑等功能,并讲解如何使用M语言为模块发布help文档,以及通过工业实例展示综合应用GUI控制Simulink进行仿真的方法及代码生成的应用方法;高级篇重点介绍“基于模型设计”的开发流程、嵌入式C代码生成技术原理及TLC语言编写方法,并展示如何在嵌入式应用中使用TSP。
本书可作为高等院校计算机、电子、自动化类专业计算机仿真及嵌入式课程的教学用书,也可供嵌入式系统研发工程师、软件公司研发工程师及其他有关专业科研人员参考。
作者简介
孙忠潇(hyowinner),南京富士通南大软件技术有限公司(FNST)主任工程师,主要负责ARM芯片的Hardware Support Package开发团队以及电源控制软件开发团队的管理工作,有5年的MATLAB/Simulink应用经验。
孙忠潇已获得MathWorks MATLAB Associate资格认证,并任MATLAB中文论坛Simulink基础”“Simulink代码生成”版块的版主。在MATLAB中文论坛的佳答案超过1000个,长期稳居论坛会员排行榜的第2名。
内页插图
目录
入门篇
第1章Simulink界面介绍
1.1Simulink是什么
1.2Simulink启动及Simulink Library Browser介绍
1.3模型的建立
1.4打开既存模型
1.5向模型中添加模块
第2章Simulink模块
2.1Simulink模块的组成要素
2.1.1模块概述
2.1.2Simulink模块的构成
2.1.3Simulink模块的朝向
2.1.4Simulink模块的属性及参数
2.1.5Simulink模块的注解
2.1.6Simulink模块的虚拟性
2.2Simulink常用模块库
2.2.1输入/输出模块
2.2.2常数模块
2.2.3波形显示模块
2.2.4四则运算模块
2.2.5延时模块
2.2.6关系操作模块
2.2.7逻辑运算模块
2.2.8Switch模块
2.2.9积分模块
2.2.10限幅模块
2.2.11接地模块
2.2.12终止模块
2.2.13信号合并与分解模块
2.2.14总线创建与总线选择模块
2.2.15向量连接模块
2.2.16数据类型转换模块
2.2.17子系统模块
2.3Commonly Used Blocks以外的常用模块
2.3.1信号源模块
2.3.2信号接收模块
2.3.3查表模块
2.3.4其他常用模块
2.3.5用户自定义模块
第3章Simulink信号
3.1Simulink信号概述
3.2Simulink信号的操作
3.3Simulink信号的分类
3.3.1Scalar信号
3.3.2Vector信号
3.3.3Matrix信号
3.3.4Bus信号
3.3.5Function�瞔all信号
3.3.6尺寸可变信号
3.3.7未连接信号
3.4Simulink信号的属性
第4章Simulink子系统
4.1Simulink子系统详解
4.1.1子系统概述
4.1.2Simulink模型的运行顺序
4.1.3各种子系统的特点与功能
4.2Simulink子系统实例
4.2.1虚拟和非虚拟(原子)子系统
4.2.2触发使能子系统
4.2.3函数调用子系统(条件子系统)
4.2.4While子系统(动作子系统)
4.2.5可变子系统(选择子系统)
4.2.6可配置子系统(选择子系统)
第5章Simulink模型的仿真
5.1模型的配置仿真
5.1.1解算器
5.1.2参数的配置
5.2模型仿真数据记录
5.3仿真过程的调试
5.3.1Debugger的启动
5.3.2Debugger的单步方法
5.3.3Debugger的断点设置方法
5.4仿真的加速
第6章Simulink模型保存为图片
6.1截图保存方式
6.2拷贝视图方式
6.3使用saveas函数保存
6.4使用print函数保存
进阶篇
第7章Simulink的回调函数
7.1什么是回调函数
7.2回调跟踪
7.3模型回调函数
7.4模块回调函数
7.5端口回调函数
7.6参数回调函数的使用
7.7回调函数使用例程
7.7.1打开模型时自动加载变量
7.7.2双击模块执行MATLAB脚本
7.7.3开始仿真前执行命令
7.7.4提示模块端口的连线情况
7.7.5统计模型中所有模块信息
第8章M语言对Simulink模型的自动化操作及配置
8.1M语言控制模型的仿真
8.1.1sim控制模型仿真及参数配置
8.1.2set_param控制模型仿真过程
8.2M语言修改模块属性
8.3M语言自动建立模型
8.3.1模型的建立及打开
8.3.2模块的添加、删除及替换
8.3.3信号线的添加及删除
8.3.4M语言自动创建模型
第9章Simulink的流控制
9.1Simulink 流控制分类
9.2While 流控制
9.3For 循环控制
9.4If else控制
9.5Switch Case控制
第10章S函数
10.1S函数概述
10.2S函数的类型
10.3S函数的要素
10.4S函数的组成及执行顺序
10.5使用不同语言编写S函数
10.5.1Level 1 M S函数
10.5.2Level 2 M S函数
10.5.3C Mex S函数
第11章模块的封装
11.1Mask Editor封装模块
11.1.1封装模块构成的子系统
11.1.2封装S函数编写的模块
11.2编程自动封装模块
11.2.1模块的属性
11.2.2使用set_param和get_param封装模块
11.2.3使用Simulink.Mask类封装模块
11.3使用GUIDE封装模块
第12章Publish发布M文件
12.1M文件的注释
12.2Cell模式
12.3注释的Publish
12.3.1正文
12.3.2字体控制
12.3.3小标题
12.3.4插入超链接
12.3.5插入可执行代码
12.4注释发布功能的应用场景
第13章Simulink创建自定义库
第14章Simulink自定义环境
14.1Simulink 环境自定义功能
14.2Simulink 工具栏菜单自定义
14.3Simulink Library Browser菜单栏自定义
14.4Simulink目标硬件自定义
14.5Simulink参数对话框控制
第15章Simulink在流程工业中的仿真应用
15.1工业乙醇生产与计算机仿真
15.2工业乙醇发酵流程
15.3乙醇发酵动力学方程
15.4发酵动力学方程组的MATLAB求解
15.5发酵动力学方程组的Simulink求解
15.6乙醇连续发酵流程的Simulink仿真
15.7乙醇连续发酵的仿真软件设计
15.7.1GUIDE介绍
15.7.2乙醇连续发酵程序仿真软件界面
15.7.3Simulink动态仿真控制器制作
15.7.4基于代码生成的模型仿真加速
15.8总结
高级篇
第16章Simulink基于模型设计的工业应用概述
16.1Simulink用途概述
16.2Simulink的工业应用
16.2.1Airbus使用基于模型的设计为 A380 开发出燃油管理系统
16.2.2马自达加快开发下一代应用创驰蓝天技术(SKYACTIV TECHNOLOGY)的
发动机
16.2.3特斯拉电动跑车Roadster
16.2.4罗斯胡尔曼理工学院使用Simulink和SimDriveline设计混合动力汽车动力
总成系统
16.2.5三星(英国)利用Simulink开发出4G无线系统
16.3总结
第17章Simulink代码生成技术详解
17.1基于模型的设计
17.1.1需求文档
17.1.2根据需求进行设计
17.1.3需求与设计的挂接
17.1.4模型的仿真
17.1.5模型的性能分析及修正
17.1.6模型效率分析与优化
17.1.7模型的代码生成
17.1.8模型生成代码的优化
17.1.9代码的有效性验证
17.1.10其他验证方法
17.2Simulink代码生成流程及技巧
17.2.1代码生成时的模型配置方法
17.2.2代码生成的流程
17.2.3代码生成方法与技巧
第18章TLC语言
18.1TLC的作用
18.2TLC的语法
18.2.1基本语法
18.2.2常用指令
18.2.3变量类型
18.2.4操作符和表达式
18.2.5TLC内建函数
18.2.6TLC命令行
18.2.7TLC调试方法
18.2.8TLC文件的覆盖度
18.2.9TLC Profiler
18.3为S函数编写TLC文件
18.3.1支持代码生成的S函数
18.3.2模块TLC文件的构成
18.3.3模块TLC函数实例
第19章基于TSP的直流电机控制设计
19.1TSP是什么
19.1.1PSL的构成与使用
19.1.2工具链自动化流程
19.2直流电机控制原理
19.3系统的构成
19.4模型的建立
19.4.1PWM波形的产生
19.4.2电机转速计算模块
19.4.3电机调速模块
19.5总结
参考文献
前言/序言
在2015年人大和政协会议的政府工作报告中,李克强总理针对产业发展提到了一个新概念:要实施“中国制造2025”,坚持创新驱动、智能转型、强化基础、绿色发展,加快从制造大国转向制造强国。
工信部部长苗圩在两会期间接受记者采访时指出,“中国制造2025的切入点就是智能制造”。
我认为,智能制造首先是实现智能工厂。通过推行自律系统的开发及智能监控系统,让工厂内外的事物都通过物联网(The Internet of Things,IoT)连接到互联网,以激发管理模式和商业模式的创新,同时也赋予产品新的价值。
产生这样的连锁效应的前提是工厂生产的所有关联信息要互联互通,统一管理。通过信息物理系统(Cyber Physical Systems,CPS),将CRM(Customer Relationship Management,客户关系管理)、PDM(Product Data Management,产品数据管理)、PLM (Product Lifecycle Management,产品生命周期管理)、CAD(Computer Aided Design,计算机辅助设计)等各种信息进行集成,统一管理。
这里面的关键技术就是信息通信技术(Information Communication Technology,ICT)。具体说就是通过互联网相互连接的信息设备之间自律的协调工作M2M(Machine to Machine),通过分析从互联网得到的各个终端的大数据得到信息,再与开发/销售/ERP(Enterprise Resource Management)/PLM/SCM(Supply Chain Management)等业务系统进行连携等类似的应用。
在这个大系统中,工程师们会更加关注与产品开发环节相关的PLM系统。几乎所有的工业制造会用到MATLAB/Simulink,来让开发内容可视化,通过数学模型及控制模型的计算仿真,可以快速地验证创新设计的效果,并以此提高开发品质,降低开发成本,缩短开发周期。MATLAB/Simulink在汽车和工业控制领域取得的成功案例已经不胜枚举。此外,通信领域、金融领域、半导体及电力电子领域也都在使用MATLAB/Simulink加速数据分析、设计和仿真。
不积跬步无以至千里。要实现“中国制造2025”的战略目标,必须在各个环节引入先进的方法和工具,培养相关的人才。
此书旨在让更多的研发工程师和在校大学生认识和了解MATLAB/Simulink,为迎接智能制造的挑战做好知识储备。
陈锦程2015年4月20日
《精通Matlab高级应用与实战》 前言 在当今技术飞速发展的时代,工程计算、数据分析和算法开发已成为各行各业不可或缺的核心能力。Matlab作为一款强大的工程计算与科学研究平台,凭借其在数值计算、数据可视化、算法实现以及原型开发等方面的卓越性能,赢得了全球无数工程师、科学家和研究人员的青睐。然而,许多用户在掌握了Matlab的基础操作后,往往会面临进阶的瓶颈,难以充分挖掘其潜力,也无法高效地解决复杂的工程问题。 本书《精通Matlab高级应用与实战》正是为了满足这一需求而生。它不仅仅是一本关于Matlab语法的参考手册,更是一本引导读者深入理解Matlab精髓、掌握高级技巧、解决实际工程挑战的实战指南。我们旨在带领读者走出“知其然”的层面,迈向“知其所以然”,最终达到“融会贯通,了然于胸”的境界。 本书的内容涵盖了Matlab的方方面面,从深入的数值计算方法到高效的程序设计艺术,从强大的数据处理能力到精美的图形可视化技术,再到与C/C++等外部语言的交互集成,以及在特定领域的应用拓展。我们力求在每一个章节都提供详实的概念讲解、精妙的技巧演示、富有启发性的代码示例以及贴近实际的工程案例。 本书的写作理念是“理论与实践并行,深度与广度兼顾”。我们不会止步于介绍某个函数或工具箱的功能,而是会深入剖析其背后的数学原理、算法逻辑以及适用场景。同时,我们也关注Matlab在不同工程领域的实际应用,通过大量的实战案例,帮助读者将所学知识融会贯通,解决真实世界的复杂问题。 本书的目标读者是已经具备Matlab基础知识,希望进一步提升技能,掌握Matlab高级特性的工程师、科研人员、高等院校学生以及对Matlab有深入学习需求的自学者。无论您是从事信号处理、控制系统设计、图像处理、机器学习、金融建模,还是其他任何需要大量数值计算和算法实现的领域,本书都将为您提供宝贵的指导和丰富的实践经验。 本书的结构设计力求逻辑清晰,循序渐进。我们从Matlab的核心数值计算能力入手,逐步深入到函数式编程、面向对象编程、性能优化等更抽象但更强大的编程范式。数据可视化部分将介绍如何创建各种复杂且富有表现力的图形,以清晰地传达信息。文件I/O和数据管理将帮助您高效地处理海量数据。最后,本书还将触及Matlab与其他编程语言的集成,以及在嵌入式系统开发中的一些高级概念,为您的技能扩展打下基础。 我们相信,通过认真研读本书,您不仅能够熟练掌握Matlab的高级特性,更能够培养出解决复杂工程问题的独立思考能力和创新实践能力。Matlab的强大之处在于其灵活的编程环境和丰富的工具箱,而本书正是解锁这些强大功能的钥匙。 目录 第一部分:Matlab数值计算的深度探索 第一章:高级数值算法与优化 1.1 线性代数精要:稀疏矩阵、特征值分析的深入应用 1.2 非线性方程组求解:Newton-Raphson方法及其Matlab实现 1.3 最优化理论与算法:无约束和约束优化方法详解 1.4 数值积分与微分:自适应方法和高精度求解器 1.5 特征值问题的高级处理:广义特征值问题,迭代法 1.6 奇异值分解(SVD)在数据降维和去噪中的应用 1.7 稀疏矩阵在大型系统求解中的效率优势与应用场景 1.8 迭代求解器(GMRES, BiCGSTAB等)的原理及参数调优 第二章:傅里叶分析与信号处理高级技术 2.1 离散傅里叶变换(DFT)的原理及快速傅里叶变换(FFT)的优化 2.2 周期信号与非周期信号的FFT处理技巧 2.3 功率谱密度(PSD)估计:Welch方法、Bartlett方法 2.4 短时傅里叶变换(STFT)与时频分析 2.5 滤波器设计:IIR和FIR滤波器的理论与Butterworth, Chebyshev, Elliptic等类型 2.6 滤波器组设计与应用:多速率信号处理 2.7 窗函数技术的深入理解与应用:Rectangular, Hamming, Hanning, Blackman等 2.8 信号重构与插值算法:Savitzky-Golay滤波器,样条插值 第二部分:Matlab程序设计的高级艺术 第三章:函数式编程与匿名函数 3.1 函数句柄的创建与传递 3.2 匿名函数的简洁与高效 3.3 `arrayfun`, `cellfun`, `structfun`等函数式编程工具的使用 3.4 函数向量化与性能提升 3.5 递归函数的设计与优化 第四章:面向对象编程(OOP)在Matlab中的实践 4.1 类和对象的概念:属性、方法、构造函数 4.2 继承与多态:构建灵活的类体系 4.3 访问控制与属性设置器 4.4 事件和监听器:实现动态交互 4.5 泛型编程(Generic Programming)在Matlab OOP中的体现 4.6 类的元编程(Metaprogramming)与高级技巧 4.7 OOP在仿真模型构建中的优势 第五章:Matlab性能优化与并行计算 5.1 Matlab性能分析工具:`tic`, `toc`, `profile` 5.2 向量化编程的原则与实践 5.3 循环展开与分支预测的优化 5.4 预分配内存与数据类型选择 5.5 JIT(Just-In-Time)编译器的工作原理 5.6 并行计算工具箱:多核处理器的利用 5.7 `parfor`与`spmd`语句详解 5.8 GPU加速计算:`gpuArray`的使用 第三部分:Matlab数据可视化与交互式应用 第六章:高级图形绘制与定制 6.1 3D图形绘制:曲面、等值线、散点图的高级定制 6.2 交互式图形:图轴的动态调整、数据点的选取与标注 6.3 子图与图组的灵活布局 6.4 图形对象模型:Axes, Figure, Plot等对象的深入操作 6.5 自定义颜色图、线型和标记 6.6 动画制作:连续帧的生成与播放 6.7 图形导出与发布:高质量图片格式的生成 第七章:数据处理与管理 7.1 表格(Table)和时间表(Timetable)的高级应用 7.2 结构体(Struct)和单元格数组(Cell Array)的灵活操作 7.3 数据导入与导出:Excel, CSV, HDF5, NetCDF等格式 7.4 缺失值处理与异常值检测 7.5 数据分组与聚合 7.6 文本数据的高效处理 第八章:用户界面(UI)设计与交互 8.1 App Designer:现代化的GUI开发环境 8.2 组件布局与响应式设计 8.3 事件处理与回调函数 8.4 数据绑定与动态更新 8.5 部署Matlab App:打包与分享 8.6 基于Web的Matlab应用开发简介 第四部分:Matlab在特定领域的应用拓展 第九章:算法开发与模型验证 9.1 算法的模块化设计与重用 9.2 单元测试与集成测试 9.3 仿真结果的可视化与分析 9.4 模型参数辨识与灵敏度分析 9.5 模糊逻辑和神经网络在建模中的应用 第十章:Matlab与C/C++及其他语言的交互 10.1 MEX文件:加速Matlab代码 10.2 C/C++代码的编写与编译 10.3 数据类型转换与内存管理 10.4 外部函数接口(Foreign Function Interface, FFI) 10.5 与Python的交互:`py.module.function` 10.6 COM对象的使用 第十一章:工程应用案例分析 11.1 控制系统设计与仿真 11.2 数字信号处理实例:语音识别基础 11.3 图像处理与计算机视觉应用 11.4 金融建模与量化分析 11.5 机器学习模型开发与部署 附录 A. Matlab常用函数速查表 B. Matlab开发环境配置与技巧 C. 参考文献与进一步学习资源 结语 本书的编写历时数月,倾注了作者在Matlab领域多年的学习、实践与思考。我们深知,精通一项技术并非一日之功,而在于持续的钻研与不懈的实践。希望本书能够成为您在Matlab学习道路上的一盏明灯,助您突破瓶颈,攀登高峰。 在阅读过程中,如果您遇到任何问题或有任何建议,都欢迎通过[联系方式/邮箱]与我们交流。您的反馈将是我们不断进步的动力。 愿本书能够助您在Matlab的世界里,发现无限可能,实现技术精进!