Matlab/Simulink的一些功能用法笔记(二)
学习笔记,多写多记,遇到的问题要三思
01--代数环
在离散系统建模仿真时,如果遇到代数环错误,可以在反馈闭环回路中增加一个Unit Delay模块来消除代数环错误,若是连续系统则使用Memory模块
代数环:就是由于模型的输出反馈到模块或子系统的某个输入端,如果这个输入是直接馈入的,那么二者在同一个采样点内需得到求解,但是又相互依赖,不能正常的完成求解过程,导致错误产生。
02--Delay延时模块的用法
Delay length:表示延时多少次采集时间输出输入
Initial condition:表示输出的初值
假设,求解器为定步长,且步长时间为0.5s,Delay length为3,Initial condition为0,那么下例在0~1.5s过程中,输出为0,在1.5s时刻时,输出为6
另外在Source的下拉选项框中选择Input port的话,则由外部模块输入延迟次数和初始值。
例如,外部次数为3,初始值为1
运行10s仿真示波器曲线:
External reset:可选择上升沿或其他方式使Delay模块的值复位到初始值。
举例:增加一个Step模块,如下设置:(即在第2s时从0上升沿到1)
可以看到在第2s时,值进行了复位。
实例:下图通过Delay模块实现了一个累加计数器,计数到5后自动复位,重新计时。
03--Step模块
大部分人只用其基本功能,即在哪个时刻进行跃迁。
可以使用多维信号,按如下设置:
不勾选下列对话框
以向量的形式显示
04--Repeating Sequence模块
Time values:输入时间序列的采样点,Simulink以此输入作为单元进行周期性延伸赋值
Output values:输入对应Time values 时间采样序列的值序列。
上述值一一对应,
05--仿真时,使用Excel数据作为输入信号
①第一种:通过模块From Workspace
Excel中第一列为时间(横坐标),第二列为变量(纵坐标);
假设来自外部的数据如下:
把该表格放进模型所在的路径,调出From Workspace并命名为E
在MATLAB命令窗口输入如下指令:
E = xlsread('data.xlsx') //data为Excel表格的名字
点击运行
示波器读到的数据:
②第二种:通过Signal Builder模块
按上面导入之后,如下图:
数据会自己线性查值,可按如下方式进行数据设置:
06--Stop Simulation模块
有时候在仿真过程中,由于求解器精度很高,仿真时间设置比较长,想要看看某个特定条件达到时的仿真数据,可以使用停止仿真模块。
脉冲模块按如下设置:
即振幅为1,周期为2,脉冲为周期(2)的5%,延迟0.2s
该模型对上升沿进行计数,当计数了25次上升沿后即停止仿真
运行模型后:(仿真时间50s在50s之前就停止了仿真,因为计数达到了25次)
07--圈复杂度的监测
作用: 防止模型过于复杂,一旦出现复杂度过大的情形,要考虑进一步模块化,按照“高内聚、低
耦合”的原则分解为两个或者多个子系统进行设计
举例:
架构设计的考虑
降低复杂度,简化设计
– 便于并行开发和重用
– 便于版本控制
– 便于接口管理
降低复杂度的方法
– 模块化开发
模块化开发的原则
– 高内聚、低耦合
首先找到Model Advisor
检查项目分成了2大类:
By Product
: sumilink 按照产品模块划分的检查项By Task
: 按照测试任务模块划分的检查项目
找到By Task
图中,子系统深度,圈复杂度
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)