Sine Wave Function
使用外部信号作为时间源来生成正弦波
库:
Simulink /
Math Operations
描述
Sine Wave Function 模块输出正弦曲线波形。此模块可在基于时间或基于采样的模式下运行。
注意
此模块相当于 Math Operations 模块库中的 Sine Wave 模块。如果您在模块对话框中为时间参数选择了使用仿真时间,您将获得 Sine Wave Function 模块。
基于时间的模式
该模块可计算输出波形。
在基于时间的模式下,采样时间参数的值确定模块是在连续模式还是离散模式下运行。
0
(默认值)将使得模块在连续模式下运行。>0
将使得模块在离散模式下运行。
有关详细信息,请参阅指定采样时间。
在连续模式下运行时,由于随着时间变得非常大,导致精度损失,因此 Sine Wave 模块可能会变得不准确。
如果采样时间参数的值大于零,将会导致模块好像在驱动一个采样时间设置为该值的 Zero-Order Hold 模块。
通过这种方式,您可以构建具有纯离散正弦波源的模型,而不是混合了连续/离散系统的模型。混合系统本质上更复杂,因此需要更长的仿真时间。
在离散模式下,此模块使用微分增量算法,而不是基于绝对时间的算法。因此,此模块对于要在无限长时间内运行的模块(如振动或疲劳测试)非常有用。
微分增量算法根据在上一采样时间计算出的值来计算正弦值。此方法使用下列三角恒等式:
采用矩阵形式,这些恒等式表示为:
由于 Δt 是常量,所以下列表达式是常量:
因此,问题就变为一种矩阵乘法,用 的值乘以一个常量矩阵以得出 。
离散模式只能减少但不能消除舍入误差的累积,例如 (4*eps)
。发生累积是因为模块在每个时间步的输出的计算都取决于上一个时间步的输出值。
要处理 Sine Wave block 模块在基于时间的离散模式下运行时产生的舍入误差,请使用下列方法之一。
方法 | 原理说明 |
---|---|
在 Sine Wave 模块的直接下游插入一个 Saturation 模块。 | 通过为 Sine Wave 模块输出设置饱和界限,可以避免由于舍入误差累积而出现的过冲。 |
将 Sine Wave 模块设置为使用
|
|
基于采样的模式
基于采样的模式使用以下公式计算 Sine Wave 模块的输出。
A 是正弦波的振幅。
p 是每个正弦波周期内的时间采样数。
k 为重复的整数值,范围从 0 到 p–1。
o 是信号的偏移量(相位偏移)。
b 是信号偏差。
在此模式下,Simulink® 将第一个时间步的 k 设置为等于 0
,并使用该公式计算模块输出。在下一个时间步,Simulink 递增 k,然后重新计算模块输出。当 k 达到 p 时,Simulink 在计算模块输出之前将 k 重置为 0
。此过程会一直继续,直到仿真结束。
在计算给定时间步的模块输出时,基于采样的方法不依赖于上一个时间步的输出。因此,这种模式可以避免舍入误差的累积。基于采样的模式还支持在提供语义的子系统中重置语义。例如,如果 Sine Wave 模块在一个可重置子系统中,子系统收到一个重置触发事件,重复的整数 k
将重置,模块输出将重置为其初始条件。
示例
端口
输入
输出
参数
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
版本历史记录
在 R2006a 之前推出