Simulink 环境基础知识(三十)--系统中的采样时间和子系统中的采样时间_sine wave 没有采样时间-程序员宅基地

技术标签: matlab  Simulink  

目录

系统中的采样时间

纯离散系统

混合系统

子系统中的采样时间


系统中的采样时间

纯离散系统

        纯离散系统完全由离散模块组成,可以使用固定步长或可变步长求解器进行建模。要对离散系统进行仿真,需要仿真器在每个采样时间点执行一个仿真步。

        对于多速率离散系统 - Simulink 以不同速率对其模块进行采样的系统 - 时间步的发生时间必须是每个系统采样时间的整数倍。否则,仿真器可能会漏掉关键的系统状态转移。Simulink 软件选择的步长大小取决用来仿真多速率系统的求解器类型和基础采样时间。

        多速率离散系统的基础采样时间是系统实际采样时间的最大双精度整数除数。例如,假设系统的采样时间为 0.25 和 0.50 秒。这种情况下,基础采样时间为 0.25 秒。再假设采样时间为 0.50 和 0.75 秒。基础采样时间还是 0.25 秒。

        基础采样时间的重要性直接关系到您指示 Simulink 软件使用固定步长还是可变步长离散求解器来解算多速率离散系统。固定步长求解器将仿真步长大小设置为等于离散系统的基础采样时间。相反,可变步长求解器会调整步长大小,使其等于实际采样时间点之间的距离。

        下图说明了固定步长和可变步长求解器之间的差异。

         在上图中,箭头表示仿真步,圆圈表示采样时间点。如图所示,执行系统仿真时,如果基础采样时间小于系统的任何实际采样时间,可变步长求解器将需要较少的仿真步。而另一方面,如果系统中有一个采样时间等于基础采样时间,则固定步长求解器需要的实现内存更少,速度更快。这在需要从 Simulink 模型中生成代码(使用 Simulink Coder)的应用中,可能算是一个优势。在任一情况下,Simulink 提供的离散求解器均针对离散系统进行了优化;但是,可以使用任何一种求解器对纯离散系统进行仿真,并获得相同的结果。

        假设有下面这样一个简单的多速率系统。在这个示例中,DTF1 Discrete Transfer Fcn 模块的 Sample time 设置为[1  0.1],偏移量为0.1。DTF2 Discrete Transfer Fcn 模块的 Sample time 设置为 0.7,无偏移量。求解器设置为可变步长离散求解器。

         运行仿真并使用stairs函数绘制输出

set_param(bdroot,'SolverType','Variable-Step','SolverName','VariableStepDiscrete','SaveFormat','Array');
simOut = sim(bdroot,'Stoptime','3');
stairs(simOut.tout,simOut.yout,'-*','LineWidth',1.2);
xlabel('Time (t)');
ylabel('Outputs (out1,out2)');
legend('t_s = [1, 0.1]','t_s = 0.7','location','best')

        生成的绘图如下所示。

        如图所示,因为 DTF1 模块的偏移量为 0.1,所以直到 t = 0.1 时 DTF1 模块才会开始输出。同样,传递函数的初始条件为零;因此,DTF1 的输出 y(1) 在此时间之前为零。

混合系统

        混合系统同时包含离散模块和连续模块,因此同时具有离散状态和连续状态。但是,Simulink 求解器将同时具有连续和离散采样时间的任何系统都视为混合系统。如图所示采样时间的设置:

        在模块图中,“混合”一词同时适用于混合系统(混合的连续离散系统)和具有多个采样时间的系统(多速率系统)。当您执行 Update Diagram 并将 Sample Time Display 的 Colors 设置为 'on' 时,此类系统的颜色将变为黄色。例如,假设以下模型中包含一个原子子系统“Discrete Cruise Controller”和一个虚拟子系统“Car Dynamics”。

车辆模型

         当 Sample Time 选项设置为 All 时,执行 Update Diagram 会将虚拟子系统变为黄色,表明它是一个混合子系统。这种情况下,该子系统是一个真正的混合系统,因为它同时具有连续和离散采样时间。如下所示,离散输入信号 D1 与连续速度信号 v 结合,为积分器生成连续输入信号。

更新图之后的车辆模型

 更新图之后的车辆动力学子系统

         现在,假设有一个多速率子系统包含三个 Sine Wave 源模块,每个模块具有唯一的采样时间,分别为 0.2、0.3 和 0.4。

更新图之后的多速率子系统

         Update Diagram 操作将子系统变为黄色,因为子系统包含多个采样时间。如模块图中所示,Sine Wave 模块具有离散采样时间 D1、D2 和 D3,输出信号将采用固定子步。

        在评估系统的多个采样时间时,Simulink 不会考虑常量 [inf, 0] 或异步 [–1, –n] 采样时间。因此,如果子系统中有一个模块输出常量值,另一个模块具有离散采样时间,则该子系统不被视为混合系统。

        混合注释和颜色设置对于评估您模型中的子系统是否继承了正确的或预期的采样时间非常有用。

子系统中的采样时间

        子系统分为两种:触发和非触发。对于触发子系统,一般情况下,子系统从触发信号获取采样时间。当使用Trigger模块创建触发子系统时,将发生一种例外情况。如果将模块的 Trigger type 设置为 function-call,并将 Sample time type 设置为 periodic,将激活 SampleTime 参数。这种情况下,指定 Trigger 模块的采样时间,然后由该模块确定子系统的采样时间。

有四种非触发子系统:

  • 虚拟

  • 使能

  • 原子

  • 执行

        对于虚拟和使能子系统,Simulink 基于各自内容的采样时间计算它们的采样时间。

        原子子系统是一种特殊情况,其特殊之处在于子系统模块有 SystemSampleTime 参数。而且,如果采样时间不是默认值 –1,原子子系统内的模块的 Inf 值只能是 –1 或者与子系统的 SampleTime 参数值完全相同(离散)。如果保留原子子系统为继承,Simulink 将按照与虚拟和使能子系统相同的方式计算模块的采样时间。但是,子系统SampleTime参数的主要用途是允许在一个原子子系统内同时指定大量模块,它们都设置为继承采样时间。要获取在原子子系统中设置的采样时间,请在命令提示符下使用以下命令:

get_param(AtomicSubsystemBlock,‘SystemSampleTime’);

        最后,操作子系统的采样时间由if 模块或switch Case模块设置。对于模块具有不同采样率的非触发子系统,Simulink 以子系统中存在的所有采样率的元胞数组形式返回子系统的 Compiled Sample Time。

get_param(subsystemBlock,'CompiledSampleTime')

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jk_101/article/details/112706267

智能推荐

解决win10/win8/8.1 64位操作系统MT65xx preloader线刷驱动无法安装_mt65驱动-程序员宅基地

文章浏览阅读1.3w次。转载自 http://www.miui.com/thread-2003672-1-1.html 当手机在刷错包或者误修改删除系统文件后会出现无法开机或者是移动定制(联通合约机)版想刷标准版,这时就会用到线刷,首先就是安装线刷驱动。 在XP和win7上线刷是比较方便的,用那个驱动自动安装版,直接就可以安装好,完成线刷。不过现在也有好多机友换成了win8/8.1系统,再使用这个_mt65驱动

SonarQube简介及客户端集成_sonar的客户端区别-程序员宅基地

文章浏览阅读1k次。SonarQube是一个代码质量管理平台,可以扫描监测代码并给出质量评价及修改建议,通过插件机制支持25+中开发语言,可以很容易与gradle\maven\jenkins等工具进行集成,是非常流行的代码质量管控平台。通CheckStyle、findbugs等工具定位不同,SonarQube定位于平台,有完善的管理机制及强大的管理页面,并通过插件支持checkstyle及findbugs等既有的流..._sonar的客户端区别

元学习系列(六):神经图灵机详细分析_神经图灵机方法改进-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏27次。神经图灵机是LSTM、GRU的改进版本,本质上依然包含一个外部记忆结构、可对记忆进行读写操作,主要针对读写操作进行了改进,或者说提出了一种新的读写操作思路。神经图灵机之所以叫这个名字是因为它通过深度学习模型模拟了图灵机,但是我觉得如果先去介绍图灵机的概念,就会搞得很混乱,所以这里主要从神经图灵机改进了LSTM的哪些方面入手进行讲解,同时,由于模型的结构比较复杂,为了让思路更清晰,这次也会分开几..._神经图灵机方法改进

【机器学习】机器学习模型迭代方法(Python)-程序员宅基地

文章浏览阅读2.8k次。一、模型迭代方法机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种:1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难;2、模型融合的方法,将旧模..._模型迭代

base64图片打成Zip包上传,以及服务端解压的简单实现_base64可以装换zip吗-程序员宅基地

文章浏览阅读2.3k次。1、前言上传图片一般采用异步上传的方式,但是异步上传带来不好的地方,就如果图片有改变或者删除,图片服务器端就会造成浪费。所以有时候就会和参数同步提交。笔者喜欢base64图片一起上传,但是图片过多时就会出现数据丢失等异常。因为tomcat的post请求默认是2M的长度限制。2、解决办法有两种:① 修改tomcat的servel.xml的配置文件,设置 maxPostSize=..._base64可以装换zip吗

Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字-程序员宅基地

文章浏览阅读1k次,点赞17次,收藏22次。Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字

随便推点

ESXi 快速复制虚拟机脚本_exsi6.7快速克隆centos-程序员宅基地

文章浏览阅读1.3k次。拷贝虚拟机文件时间比较长,因为虚拟机 flat 文件很大,所以要等。脚本完成后,以复制虚拟机文件夹。将以下脚本内容写入文件。_exsi6.7快速克隆centos

好友推荐—基于关系的java和spark代码实现_本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。-程序员宅基地

文章浏览阅读2k次。本文主要实现基于二度好友的推荐。数学公式参考于:http://blog.csdn.net/qq_14950717/article/details/52197565测试数据为自己随手画的关系图把图片整理成文本信息如下:a b c d e f yb c a f gc a b dd c a e h q re f h d af e a b gg h f bh e g i di j m n ..._本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。

南京大学-高级程序设计复习总结_南京大学高级程序设计-程序员宅基地

文章浏览阅读367次。南京大学高级程序设计期末复习总结,c++面向对象编程_南京大学高级程序设计

4.朴素贝叶斯分类器实现-matlab_朴素贝叶斯 matlab训练和测试输出-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。实现朴素贝叶斯分类器,并且根据李航《统计机器学习》第四章提供的数据训练与测试,结果与书中一致分别实现了朴素贝叶斯以及带有laplace平滑的朴素贝叶斯%书中例题实现朴素贝叶斯%特征1的取值集合A1=[1;2;3];%特征2的取值集合A2=[4;5;6];%S M LAValues={A1;A2};%Y的取值集合YValue=[-1;1];%数据集和T=[ 1,4,-1;..._朴素贝叶斯 matlab训练和测试输出

Markdown 文本换行_markdowntext 换行-程序员宅基地

文章浏览阅读1.6k次。Markdown 文本换行_markdowntext 换行

错误:0xC0000022 在运行 Microsoft Windows 非核心版本的计算机上,运行”slui.exe 0x2a 0xC0000022″以显示错误文本_错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行-程序员宅基地

文章浏览阅读6.7w次,点赞2次,收藏37次。win10 2016长期服务版激活错误解决方法:打开“注册表编辑器”;(Windows + R然后输入Regedit)修改SkipRearm的值为1:(在HKEY_LOCAL_MACHINE–》SOFTWARE–》Microsoft–》Windows NT–》CurrentVersion–》SoftwareProtectionPlatform里面,将SkipRearm的值修改为1)重..._错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行“slui.ex