关于Simulink的sample time的问题
在对simulink建模的过程中,有时候会遇到sample time出现错误的问题,比如下图是我在使用simulink自带的Recursive least square Estimator最小二乘估计器去估计质量和坡度的模型截图。

但是在仿真的时候就会报错,报错内容如下:‘Error in port sample time. The "TestAlgorithmModel/Vehicle /Recursive Least Squares Estimator" block must operate at a discrete sample time. Either connect discrete-time signals to the "Regressors" and "Output" input ports of the block or explicitly provide a discrete time in the "Sample Time" setting in the block dialog.’
大致意思就是端口的采样时间出错了,必须得使用离散的采样时间点。但其实我模型的solver(求解器)都已经设置为discrete了,而且我已经把用到了continuous中的各个模组全部替换成 discrete中的模组了(比如积分模块,用的就是discrete中的 discrete-time integrator)。还是这样报错的情况下,只能另想他法了。
最后找到的解决办法是,在估计器(Estimator)的输入处加上Zero-Order hold模块,如下图所示,并且把Zero-Order hold的仿真时间设置的和离散采样步长一样就可以了,然后问题就真的解决了!

下面就来探讨一下Zero-Order hold这个模块的作用如何,网上有结论是说这玩意儿是把输入信号每过一段时间跟新一次,并且保持到下一次采样之前,相当于就是把信号离散化处理(也可以是重新修改信号的采样时间),原话地址:https://zhidao.baidu.com/question/368276493483526644.html。
但是我们要追根溯源,https://ww2.mathworks.cn/help/simulink/slref/zeroorderhold.html,官方文件里说他是将具有连续采样时间的输入信号转换为具有离散采样时间的输出信号。和它同样功能的还有Unit delay 和memory,但是官方解释感觉不太明白,于是参考:http://www.ece.northwestern.edu/CSEL/local-apps/matlabhelp/toolbox/simulink/slref/zeroorderhold.html,这篇里面解释的就比较清楚了,Zero-Order Hold blocks between the fast-to-slow transitions.the sample rate of the Zero-Order Hold must be set to that of the slower block. For slow-to-fast transitions, use the Unit Delay block. 也就是说快转慢用zero-order hold,慢转快用Unit Delay。
关于Simulink的sample time的问题的更多相关文章
- 图像对比度调整的simulink仿真总结
图像对比度调整可以由一个模块contrast adjustment 完成,参数有输入范围和输出范围,计算过程由以下公式决定 解释一下,当input<=low_in的时候输出的值是low_out+ ...
- Simulink仿真入门到精通(十) S函数
10.1 S函数概述 S函数也称为Simulink中的系统函数,是用来描述模块的Simulink宏函数,支持M.C等多种语言.当Simulink默认的模块不能满足用户的需求时,用户可以通过S函数自己打 ...
- Simulink仿真入门到精通(四) Simulink子系统
4.1 Simulink子系统详解 4.1.1 子系统概述 Simulink根据仿真特性将模块的属性分为两种:虚拟模块和非虚拟模块. 非虚拟模块在仿真过程中起到实际的作用,对其进行编辑或者增加删除操作 ...
- Simulink仿真入门到精通(二) Simulink模块
2.1 Simulink模块的组成要素 用户构建系统模型时无需直接面对成千上万行的代码,而是通过模块化图形界面以模块化的方式构建,能够使理解变得容易,让大脑减负.通过层次化模块分布将系统功能模块化,而 ...
- 一文教你快速学会在matlab的simulink中调用C语言进行仿真
本文介绍如何在matlab的simulink中嵌入C语言进行多输入多输出的仿真:matlab版本位2015b: 创作不易,如果本文帮到了您: 如果本文帮到了您,请帮忙点个赞
- matlab 调用C程序进行simulink仿真
文章目录 simulink仿真 创建C程序 编译C程序 运行结果 simulink仿真 simulink仿真中需要使用S-Function模块,可以实现调用C程序进行仿真,下面先建立一个简单的仿真: ...
- matlab 提示 Continuous sample time is not supported by discrete derivative 错误的解决办法
Simulink仿真的时候,出行错误提示:Continuous sample time is not supported by discrete derivative 中文意思是:连续采样时间不支持离 ...
- simulink仿真过程
Simulink求解器 Simulink仿真过程 Simulink 模型的执行分几个阶段进行.首先进行的是初始化阶段,在此阶段,Simulink 将库块合并到模型中来,确定传送宽度.数据类型和采样时间 ...
- 【Matlab】简单的滑模控制程序及Simulink仿真
文章: [控制理论]滑模控制最强解析 滑模控制程序及Simulink仿真 这篇文章仿真和输出U的推到有些问题,博主根据此篇文章进行修改进行对sin(t)曲线的追踪(使用滑模控制) 使用滑模控制对sin ...
随机推荐
- 2.2.FastDFS-单机拆分版-存储器安装配置
Centos610系列配置 我们在Centos610FastDFS单机模式-FastDFS安装 中已经完成了FastDFS的安装,接下来我们进行FastDFS存储器的安装. 1.找到FastDFS配置 ...
- Java日志介绍(1)-java.util.logging.Logger
java.util.logging.Logger是JDK自带的日志工具,其简单实现了日志的功能,不是很完善,所以在实际应用中使用的比较少.本文直接用代码演示其使用方法,文中所使用到的软件版本:Java ...
- Django框架之模板路径及静态文件路径配置
内容: (1)模板文件路径的配置 (2)静态文件路径的配置 一.模板文件路径的配置 模板文件主要通过jinja2模板进行渲染html页面,实现动态页面. 步骤一:创建一个template的文件夹,用于 ...
- 模仿.NET框架ArrayList写一个自己的动态数组类MyArrayList,揭示foreach实现原理
通过.NET反编译工具可以查看到ArrayList内部的代码,发现ArrayList并非由链表实现,而是由一个不断扩容的数组对象组成. 下面模仿ArrayList写一个自己的MyArrayList. ...
- Install fail! Error: EBUSY: resource busy or locked, symlink
前些日子从github上下载了一个项目 然后放在桌面上 ,但是运行的时候 报了Install fail! Error: EBUSY: resource busy or locked, symlink ...
- 吴裕雄 python 神经网络——TensorFlow 数据集基本使用方法
import tempfile import tensorflow as tf input_data = [1, 2, 3, 5, 8] dataset = tf.data.Dataset.from_ ...
- Cisco AP-ROMMON升级AP镜像
Rommon is Cisco bootloader for their Router devices >>>ROMMON是思科设备的引导加载程序while U-boot is a ...
- 小程序云函数调用http或https请求外部数据
参考网址 https://blog.csdn.net/qiushi_1990/article/details/101220920 小程序云函数调用http或https请求外部数据 原创编程小石头 发布 ...
- Fiddler过滤VsHub请求
Fiddler过滤掉VS2015 VsHub请求 打开VS2015, Tools --> Options --> Debugging --> General --> unche ...
- leetcode 0216
目录 ✅ 893. 特殊等价字符串组 描述 解答 cpp py ✅ 811. 子域名访问计数 描述 解答 cpp py ✅ 509. 斐波那契数 描述 解答 cpp py ✅ 521. 最长特殊序列 ...