首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simulink执行

Simulink执行
EN

Stack Overflow用户
提问于 2016-05-08 05:16:33
回答 1查看 217关注 0票数 1

我已经创建了以下simulink模型与两个块,一个直接加法和另一个块的单位延迟。simulink配置参数为0.2级固定步长的固定步长求解器。现在我的疑问是,对于没有单位延迟的块,在第0次仿真时输出是可用的,这是2,但在单元延迟的情况下,输出在第0次仿真时为0。为什么?simulink模型很抱歉,但我无法找到这个型号。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-08 08:50:32

你可以把你的Simulink图想象成具有输入和输出的离散线性动力系统。使用传递函数方法,这样的系统可以通过

(1) Y(z)=G(z)X(z)

其中,Y(z)是系统的输出,X(z)是输入,G(z)是传递函数(注意:为了解释的简单性,我在现阶段省略了初始条件)。系统的每个单独块也可以作为表单(1)的系统来处理。

考虑一下您的第一个图表。以输入输出形式(1)表示的常量块是

(2) Y1(z) = G1(z)X(z)

含:G1(z) = 1,R.

(3) Y1(z) = X(z).

每个Simulink‘单元延迟’块可以被看作是一个具有表单(1)传递函数的表单Gu(z) = z^(-1)系统。将图中与“单位延迟”块关联的传递函数表示为G2(z),将图底部的传递函数表示为G3(z)。在这种情况下,我们有G3(z) = G2(z) = Gu(z) = z^(-1)。请注意,与G2关联的系统的输入是系统(3)的输出,而与G3关联的系统的输入是与G2关联的系统的输出。考虑到上述考虑,对应于与G1G2相关联的单元延迟块的系统分别由(4)和(5)给出。

(4) Y2(z) = G2(z)*Y1(z) = z^(-1)*Y1(z) = z^(-1)*G1(z)*X(z) = z^(-1)*X(z)

(5) Y3(z) = G3(z)Y2(z) = z^(-1)*z^(-1)*X(z) = z^(-2)*X(z)

假设与整个模型相关联的系统的输出表示为Y(z),并对应于求和块的输出,则整个系统的传递函数可以表示为

(6) Y(z) = Y1(z) + Y2(z) + Y3(z)

概括如下:

(7a) Y1(z) = X(z)

(7b) Y2(z) = z^(-1)*Y1(z)

(7c) Y3(z) = z^(-1)*Y2(z)

(7d) Y(z) = Y1(z) + Y2(z) + Y3(z)

上面的系统对应于一个形式的差分方程。

(8a) y1(k) = x(k)

(8b) y2(k) = y1(k-1)

(8c) y2(k) = y2(k-1)

(8d) y(k) = y1(k) + y2(k) + y3(k)

要了解这一点,可以将Z变换应用于上面的等式(8)。您可以假设在Simulink中,模拟总是从k=0开始(获取与您需要使用t(k) = k*T的输出相关联的“物理时间”,其中T是在求解器属性中设置的采样时间)。因此,您需要提供y1(k)y2(k)的值,以便k=-1能够解决所有k>=0的系统问题。

所有表示传递函数(无论是离散的还是连续的)的Simulink块都允许分配初始条件。对于离散系统,假设初始条件对所有k<=0有效(如果考虑物理时间,则为t<=0 )。表示传输函数的块的默认初始条件是0。因此,当您模拟系统(8)时,Simulink假设y1(-1)=0y2(-1)=0constant block为所有k>=0分配x(k) = 1

鉴于以上所述,让我们在时间步骤(8)中计算系统k=0,1,2的值。

k=0

y1(0) = x(0) = 1y2(0) = y1(-1) = 0y3(0) = y2(-1) = 0y(0) = 1

k=1

y2(1) = x(1) = 1y2(1) = y1(0) = 1y3(1) = y2(0) = 0y(0) = 2

k=2

y2(2) = x(2) = 1y2(2) = y1(1) = 1y3(2) = y2(1) = 1y(0) = 3

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37096475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档