由于毕业设计的需求,小白开始学习人体动力学和神经动力中学关于晕动的知识以及车辆自动驾驶开发,本文主要用于个人学习记录,并不全面,都是我觉得有用的东西,主要是技术方面的问题。但是本文也可以作为和大家交流的媒介,希望可以帮助到新接触这方面的同学。
simulink
特点以及基础
框图化的工具来进行建模仿真,数学模型能描述,就能建模
交互式建模、仿真;可拓展定制;有专业模块库(比如vehicle dynamic blockset)
要求基础:matlab语言;高数;线代;专业知识;英文阅读能力
数据类型和维度
input数据(https://blog.csdn.net/weixin_45687296/article/details/127652209?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171126828616800182768898%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171126828616800182768898&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-4-127652209-null-null.142v99pc_search_result_base2&utm_term=simulink%E4%B8%AD%E8%BE%93%E5%85%A5%E5%90%91%E9%87%8F&spm=1018.2226.3001.4187)
数据类型
https://blog.csdn.net/kzpx_1106/article/details/125043357?ops_request_misc=&request_id=&biz_id=102&utm_term=matlab%E4%B8%AD%E8%BE%93%E5%85%A5%E5%90%91%E9%87%8F&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-125043357.142v99pc_search_result_base2&spm=1018.2226.3001.4187
在matlab中需要明确,信号线中“流动的”信号维度,做到输入输出匹配
https://blog.csdn.net/qq_33419476/article/details/105546442
常量:在simulink中注意区分数据向量和矩阵,在simulink中将向量看成矩阵的话,横竖排列按照书写形式解释;看成一维数组的话,排列形式按照数项进行排列
首先得补充数学知识:什么是数组、矩阵matrix、向量vector
数组
二维数组:[1 2;3 4]也算
向量
n维向量可写成一行,也可写成一列,分别称为行向量和列向量,也就是行矩阵和列矩阵,并规定行向量和列向量都按矩阵的运算规则进行运算。
默认列向量是竖着的。
矩阵
矩阵的维度是指矩阵的行数
矩阵包含向量,向量组即可构成矩阵
如何输入向量?
https://blog.csdn.net/stardsd/article/details/51138658?ops_request_misc=&request_id=&biz_id=102&utm_term=matlab%E4%B8%AD%E8%BE%93%E5%85%A5%E5%90%91%E9%87%8F&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-51138658.142v99pc_search_result_base2&spm=1018.2226.3001.4187
行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5]
建模步骤
1、建立微分方程组
2、画出方框图
3、对应转换到Simulink中,先把需要的模块都放进去,再进行连接输出输入端
4、优化布局,提高可读性
Simulink学习——模型布局及可读性优化相关的便利功能(https://blog.csdn.net/weixin_44281768/article/details/108550343)
5、运行调试,模型配置参数:变步长 ode45算法
模块
右键模块调用帮助,能解决遇到的90%问题
《Simulink仿真教程4—模块库介绍》(https://blog.csdn.net/qlexcel/article/details/98320980)中有简略的图片介绍,先混个脸熟,能认识再说
Step阶跃项 Ramp斜坡信号 Gain增益、倍数 Add加法 Integrator积分 constant常数 Derivative微分 Divide除法
Add:圆形状态下,注意±顺序,是逆时针排列;使用过程中,各个量要维度匹配。维度不匹配的话,会将标量转化为矩阵形式。
Product:基本一样同add,输入数量3,就是3个乘法,可以输入*/来结合乘除法;注意!乘法运算原则中按照矩阵和元素的区别。
Gain:可以选择Element-wise,作为标量使用;可以选择Matrix,作为矩阵使用,分别为左乘增益,右乘增益以及矩阵是向量的左乘增益。
Step:Step time是阶跃时间,Initial value是初始值,Final value是最终值,Sample time指的是采样时间,是系统进行仿真所取得时间间隔,一般选默认设定,大多数情况下不需要特殊设定。
Ground:可以将不连接其他的模块输入接地,防止报错。
Terminator:终止模块,连接输出接地
Display的使用,链接某输出才行,数组显示器
传递函数Transfer Fcn
Matlab中传递函数的几种输入方式https://blog.csdn.net/wanrenqi/article/details/111550588
信号合并模块Mux
虚拟模块,虽然视觉上将多个信号合并为一个信号,但是实际上并没有改变其内部数据结构,只是视觉上看起来简洁并且可以同一管理,往往可以使用Mux模块将多个信号汇聚之后显示到同一个scope的同一个坐标系中,这样scope就不需要提供多个输入输出端口了
信号分解模块Demux
【2:第一路分配两个数;-1:表示第二三路随机分配】
总线创建与选择模块
Busc