matlab对信号积分,对信号求积分 - Simulink - MathWorks 中国
说明
Integrator 模块输出其输入信号相对于时间的积分值。
Simulink® 将 Integrator 模块作为具有一种状态的动态系统进行处理。模块动态由以下方程指定:
{x˙(t)=u(t)y(t)=x(t)x(t0)=x0
,其中:
u 是模块输入。
y 是模块输出。
x 是模块状态。
x0 是 x 的初始条件。
虽然这些方程定义了连续时间下的准确关系,但 Simulink 使用数值逼近方法以有限精度来进行计算。Simulink 可以使用若干不同的数值积分方法来计算模块的输出,每种方法都在特定的应用中各具优势。使用 Configuration Parameters 对话框的 Solver 窗格(请参阅Solver 窗格)可以选择最适合您的应用的方法。
所选求解器会使用当前输入值和前一个时间步的状态值计算 Integrator 模块在当前时间步的输出。为支持此计算模型,Integrator 模块会保存在当前时间步的输出,以供求解器计算其在下一个时间步的输出。该模块还为求解器提供了初始条件,用于计算该模块在仿真开始时的初始状态。初始条件的默认值为 0。使用模块参数对话框可以为初始条件指定其他值,或在模块上创建初始值输入端口。
使用参数对话框可以:
定义积分的上限和下限
创建可将模块的输出(状态)重置为初始值的输入,具体取决于输入的变化方式。
创建可选的状态输出,以便模块的输出值可以触发模块重置
使用 Discrete-Time Integrator 模块可以创建纯离散系统。
定义初始条件
可以在模块对话框上将初始条件定义为参数,或者从外部信号输入初始条件:
要将初始条件定义为模块参数,请将 Initial condition source 参数指定为 “internal” 并在 Initial condition 字段中输入值。
要从外部源提供初始条件,请将 Initial condition source 参数指定为 “external”。模块输入下会显示一个额外输入端口。
注意
如果积分器限制其输出(请参阅限制积分),则初始条件必须在积分器的饱和界限范围内。如果初始条件在模块饱和界限范围之外,该模块会显示错误消息。
限制积分
要防止输出超出可指定的级别,请选中 Limit output 复选框,并在相应的参数字段中输入限制。此操作会使该模块起到限量积分器的作用。当输出达到界限时,积分操作将关闭以防止积分饱和。在仿真期间,您可以更改限制,但不能更改是否限制输出。模块按如下方式确定输出:
当积分小于或等于 Lower saturation limit 时,输出保持在 Lower saturation limit。
当积分在 Lower saturation limit 和 Upper saturation limit 之间时,输出为积分。
当积分大于或等于 Upper saturation limit 时,输出保持在 Upper saturation limit。
要生成指示状态正受到限制的信号,请选中 Show saturation port 复选框。模块输出端口下方会显示一个饱和端口。
信号具有以下三个值之一:
1 表示正在应用上限。
0 表示积分不受限制。
-1 表示正在应用下限。
如果选中此复选框,模块将包含三个过零点:一个用于检测何时进入饱和上界,一个用于检测何时进入饱和下界,一个用于检测何时不再饱和。
注意
对于 Integrator Limited 模块,默认情况下 Limit output 处于选中状态,Upper saturation limit 设置为 1,Lower saturation limit 设置为 0。
绕回循环状态
自然界中有多种物理现象表现为循环、周期或旋转。例如,表现出旋转运动的物体或机械以及振荡器会就属于这种现象。
在 Simulink 中对这些现象进行建模时,需要对定期或循环信号的变化率进行积分以获取运动状态。
但是,这种方法的缺点是,经过长时间仿真后,表示定期或循环信号的状态会积分为很大的值。而且,由于角度减小,计算这些信号的正弦或余弦所占用的时间会越来越长。大信号值还会对求解器的性能和准确性产生负面影响。
克服这一缺点的一种方法是在角状态达到 2π 时将其重置为 0(或者在其达到 π 时重置为 –π,以确保数值对称)。此方法可改进正弦和余弦计算的准确性,并缩短角度减小时间。但该方法还需要过零检测,并引入了求解器重置,这会减慢可变步长求解器的仿真,尤其是在大型模型中。
为消除绕回点处的求解器重置,Integrator 模块支持绕回状态,您可以通过在模块参数对话框上选中 Wrap state 来启用这些状态。当启用 Wrap state 时,模块图标将更改为指示该模块具有绕回状态。
Simulink 允许以绕回状态上限和下限值参数为边界的绕回状态。下面的方程给出了确定绕回状态的算法:
y={xx∈[xl,xu)x−(xu−xl)⌊x−xlxu−xl⌋otherwise
其中:
xl 是绕回状态的下限值。
xu 是绕回状态的上限值。
y 是输出。
支持绕回状态具有以下优势。
消除当模型接近大角度和大状态值时的仿真不稳定性。
减少仿真期间的求解器重置次数并消除对过零检测的需求,从而改善仿真时间。
消除大角度值,从而加速针对角状态的三角函数计算。
提高求解器的准确性和性能,并支持无限制仿真时间。
重置状态
模块可以根据外部信号将其状态重置为指定的初始条件。要使模块重置其状态,请选中其中一个 External reset 选项。模块输入端口下方将显示一个触发端口,并指示触发类型。
选择 “rising” 可在重置信号从负值或零上升到正值时重置状态。
选择 “falling” 可在重置信号从正值下降到零或负值时重置状态。
选择 “either” 可在重置信号从零变为非零值、从非零值变为零或改变符号时重置状态。
选择 “level” 可于重置信号在当前时间步为非零值时或者从上一个时间步的非零值更改为当前时间步的零值时重置状态。
选择 “level hold” 可于重置信号在当前时间步为非零值时重置状态。
重置端口具有直接馈通。如果模块输出直接或通过一系列带直接馈通的模块反馈到此端口中,则会产生代数环(请参阅代数环概念)。使用 Integrator 模块的状态端口可以反馈该模块的输出,而不会创建代数环。
注意
为了符合汽车工业软件可靠性协会 (MISRA®) 软件标准,您的模型必须使用布尔信号来驱动 Integrator 模块的外部重置端口。
关于状态端口
在 Integrator 模块的参数对话框上选中 Show state port 复选框会导致 Integrator 模块的顶部显示一个附加输出端口,即状态端口。
状态端口的输出与模块的标准输出端口的输出相同,但以下情况除外。如果在当前时间步重置模块,则状态端口的输出为模块尚未重置时在模块的标准输出中显示的值。状态端口的输出在时间步中的显示会早于 Integrator 模块输出端口的输出的显示。使用状态端口可以避免以下建模方案中出现代数环:
自重置积分器(请参阅创建自重置积分器)
将状态从一个使能子系统切换到另一个(请参阅在使能子系统之间切换状态)
注意
当更新模型时,Simulink 会检查状态端口是否适用于这两个方案中的一个。如果不适用,会显示错误消息。此外,不能将此端口的输出记录在于 Accelerator 模式下执行的引用模型中。如果为该端口启用记录,Simulink 将在执行引用模型期间生成“signal not found”警告。
创建自重置积分器
在创建根据其输出值重置自身的积分器时,Integrator 模块的状态端口有助于避免代数环。例如,考虑以下模型。
此模型尝试通过将积分器的输出减 1 后反馈到积分器的重置端口来创建自重置积分器。但是,该模型会创建代数环。要计算 Integrator 模块的输出,Simulink 软件需要知道模块的重置信号的值,反之亦然。由于这两个值相互依存,Simulink 软件无法单独确定一个值。因此,如果您尝试仿真或更新此模型,系统会显示错误消息。
以下模型使用积分器的状态端口来避免代数环。
在此版本中,重置信号的值取决于状态端口的值。状态端口的值会早于 Integrator 模块输出端口的值在当前时间步中显示。因此,Simulink 可以确定该模块是否需要在计算模块输出之前进行重置,从而避免代数环。
在使能子系统之间切换状态
状态端口可帮助您在两个使能子系统之间传递状态时避免代数环。例如,考虑以下模型。
使能子系统 A 和 B 包含以下模块:
子系统 A子系统 B
在此模型中,一个恒定的输入信号驱动两个对信号求积分的使能子系统。一个脉冲发生器生成启用信号,从而使执行在两个子系统之间切换。每个子系统的使能端口均设为重置,这使得子系统可在变为活动状态时重置其积分器。重置积分器会使积分器读取其初始条件端口的值。每个子系统中积分器的初始条件端口均连接到另一个子系统中积分器的输出端口。
此连接的用途是,当执行在两个子系统之间切换时,启用对输入信号的连续积分。但是,此连接会创建代数环。要计算 A 的输出,Simulink 需要知道 B 的输出,反之亦然。由于两个输出相互依存,Simulink 无法计算输出值。因此,如果您尝试仿真或更新此模型,系统会显示错误消息。
同一模型的以下版本使用积分器状态端口来避免在切换状态时创建代数环。
使能子系统 A 和 B 包含以下模块:
子系统 A子系统 B
在此模型中,A 子系统中积分器的初始条件取决于 B 子系统中积分器的状态端口值,反之亦然。状态端口的值会早于积分器输出端口的值在仿真时间步中更新。因此,Simulink 可以计算任一积分器的初始条件,而无需知道另一个积分器的最终输出值。有关使用状态端口在条件执行子系统之间切换状态的另一个示例,请参阅 sldemo_clutch 模型。
指定模块输出的绝对容差
默认情况下,Simulink 软件会使用在 Configuration Parameters 对话框中指定的绝对容差值(请参阅Error Tolerances for Variable-Step Solvers)来计算 Integrator 模块的输出。如果此值未提供足够的误差控制,则请在 Integrator 模块对话框的 Absolute tolerance 字段中指定更合适的值。您指定的值将用于计算所有模块输出。
选择所有选项
如果选择所有选项,模块图标将如下所示。
matlab对信号积分,对信号求积分 - Simulink - MathWorks 中国相关推荐
- 如何建立分类模型matlab,创建简单模型
- MATLAB Simulink
- MathWorks 中国
创建简单模型 您可以使用 Simulink® 来对系统建模,然后仿真该系统的动态行为.本教程中创建简单模型所使用的基本方法也适用于创建更复杂的模型.此示例对简化的汽车运动进行仿真.当踩下油门踏板时,汽 ...
- matlab中s查找数据,在数据中查找信号
- MATLAB Simulink
- MathWorks 中国
查找精确匹配 当您要找到信号在数值上完全一致的匹配项时,您可以使用 strfind 来执行匹配. 例如,如果我们有如下数据向量: data = [1 4 3 2 55 2 3 1 5 2 55 2 3 ...
- matlab memory 代数环,代数环概念
- MATLAB Simulink
- MathWorks 中国
代数环求解器的工作原理 当模型中包含代数环时,Simulink 在每个时间步使用非线性求解器解算代数环.求解器执行迭代以确定代数约束的解(如果存在).因此,有代数环的模型的运行速度可能比没有代数环的模 ...
- matlab离散傅立叶变换的应用,离散傅里叶变换
- MATLAB Simulink
- MathWorks 中国
离散傅里叶变换 离散傅里叶变换(即 DFT)是数字信号处理的首要工具.该产品的基础是快速傅里叶变换 (FFT),这是一种可减少执行时间的 DFT 计算方法.许多工具箱函数(包括 Z 域频率响应.频谱和 ...
- matlab加热模型,房屋的热模型
- MATLAB Simulink
- MathWorks 中国
打开模型 初始化模型 此模型可用于计算普通房屋的供暖成本.打开模型会从 sldemo_househeat_data.m 文件加载关于房屋的信息.该文件执行以下操作: 定义房屋几何信息(大小.窗户数量) ...
- matlab 传输速率,处理速率转换
- MATLAB Simulink
- MathWorks 中国
示例模型 打开示例模型 rtwdemo_ratetrans.这种多速率.多任务模型包含几个在不同模式下运行的 Rate Transition 模块. open_system('rtwdemo_rate ...
- matlab怎么没有编辑器,实时编辑器介绍
- MATLAB Simulink
- MathWorks 中国
添加人口统计数据 将实时脚本划分为多个节.每一节均可以包含文本.代码和输出.MATLAB 代码显示为灰色背景,输出显示为白色背景.要创建新的节,请转至实时编辑器选项卡,然后点击分节符按钮. 添加 19 ...
- 如何用MATLAB绘制真值表,编写真值表
- MATLAB Simulink
- MathWorks 中国
编写真值表 在创建新真值表后,您就可以对它进行编写以根据您的设定执行.要编写真值表,您需要添加条件.决策和动作.有关创建真值表的详细信息,请参阅使用真值表对组合逻辑建模. 真值表仅在 Simulink ...
- matlab三相功率测量不对,测量信号的功率
- MATLAB Simulink
- MathWorks 中国
测量信号的功率 信号的功率是其时域样本的绝对值平方和除以信号长度,或者等效地表示为其 RMS 水平的平方.使用函数 bandpower 只需一步即可估算信号功率. 考虑嵌入在高斯白噪声中的单位线性调频 ...
最新文章
- Hibernate的延迟检索和立即检索
- go kegg_KEGG分析及可视化
- csdn如何插入多列表格?
- (王道408考研数据结构)第七章查找-第二节3:分块查找
- 国网英语计算机职称考试技巧,计算机职称考试通关的三大技巧
- CentOS 6 安装最新的 Redis 2.8 ,安装 TCMalloc
- 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)
- C/C++如何读取整行字符串
- R语言大作业(全国2000-2019年人口各项数据分析)
- php的web表单系统源码毕设_用PHP+MySQL实现在线租房管理系统_毕业设计.doc
- Android 长截屏原理
- 分布式数据库如何实现主键全局自增?
- flume1.9学习笔记
- syscall(SyS_gettid)是什么
- Java分割字符串(spilt())
- 函数重载的条件、作用、注意事项
- Universal-Image-Loader系列1-配置使用
- 根据字符出现的频次排序
- Mysql数据库SaaS多租户实现方案
- 最牛会计对账,不会这个Excel公式要崩溃