MATLAB filtic函数使用详解
MATLAB filtic函数使用详解
文章目录
- 一、filtic函数输入输出说明
- 二、数值计算例子
- 三、MATLAB验证
提示:以下是本篇文章正文内容,转载请附上链接!
一、filtic函数输入输出说明
\;\;\;\;\;
filtic函数的调用格式为z = filtic(b,a,y,x)。其中
向量b是差分方程分子的系数;
向量a是差分方程分母的系数;
向量y是输出在0时刻之前的初始条件,即
y
=
[
y
(
−
1
)
,
y
(
−
2
)
,
y
(
−
3
)
,
.
.
.
,
y
(
−
m
)
]
y = [ y(-1),\ y(-2),\ y(-3),\ ...\ ,\ y(-m)]
y=[y(−1), y(−2), y(−3), ... , y(−m)]
向量x是输出在0时刻之前的初始条件,即
x
=
[
x
(
−
1
)
,
x
(
−
2
)
,
x
(
−
3
)
,
.
.
.
,
x
(
−
n
)
]
x = [ x(-1),\ x(-2),\ x(-3),\ ...\ ,\ x(-n)]
x=[x(−1), x(−2), x(−3), ... , x(−n)]
向量z是系统的初始状态,长度是向量x和向量y中长度的最大值。
\;\;\;\;\;
如果系统是因果系统,则向量x显然为0,此时可省略x,直接用z = filtic(b,a,y)。
二、数值计算例子
\;\;\;\;\;
假设现在有一个差分方程:
u
(
n
)
=
−
u
(
n
−
1
)
−
2
u
(
n
−
2
)
+
v
(
n
)
+
v
(
n
−
1
)
u(n) = -u(n-1)-2u(n-2)+v(n)+v(n-1)
u(n)=−u(n−1)−2u(n−2)+v(n)+v(n−1)
初始条件为:
u
(
−
1
)
=
u
(
−
2
)
=
v
(
−
1
)
=
1
u(-1)=u(-2)=v(-1)=1
u(−1)=u(−2)=v(−1)=1
假设激励全为1,现在求全响应,则我们可以写出下面这些式子:
{
u
(
0
)
=
−
u
(
−
1
)
−
2
u
(
−
2
)
+
v
(
0
)
+
v
(
−
1
)
=
−
1
u
(
1
)
=
−
u
(
0
)
−
2
u
(
−
1
)
+
v
(
1
)
+
v
(
0
)
=
1
u
(
2
)
=
−
u
(
1
)
−
2
u
(
0
)
+
v
(
2
)
+
v
(
1
)
=
3
.
.
.
\left\{ \begin{aligned} &u(0) = -u(-1)-2u(-2)+v(0)+v(-1) = -1&& \\ &u(1) = -u(0)-2u(-1)+v(1)+v(0) = 1 &&\\ &u(2) = -u(1)-2u(0)+v(2)+v(1) = 3 &&\\ &... &&\\ \end{aligned} \right.
⎩
⎨
⎧u(0)=−u(−1)−2u(−2)+v(0)+v(−1)=−1u(1)=−u(0)−2u(−1)+v(1)+v(0)=1u(2)=−u(1)−2u(0)+v(2)+v(1)=3...
假设激励全为1,现在求零状态响应(
u
(
−
1
)
=
u
(
−
2
)
=
v
(
−
1
)
=
0
u(-1)=u(-2)=v(-1)=0
u(−1)=u(−2)=v(−1)=0 ),则我们可以写出下面这些式子:
{
u
(
0
)
=
−
u
(
−
1
)
−
2
u
(
−
2
)
+
v
(
0
)
+
v
(
−
1
)
=
1
u
(
1
)
=
−
u
(
0
)
−
2
u
(
−
1
)
+
v
(
1
)
+
v
(
0
)
=
1
u
(
2
)
=
−
u
(
1
)
−
2
u
(
0
)
+
v
(
2
)
+
v
(
1
)
=
−
1
.
.
.
\left\{ \begin{aligned} &u(0) = -u(-1)-2u(-2)+v(0)+v(-1) = 1&& \\ &u(1) = -u(0)-2u(-1)+v(1)+v(0) = 1 &&\\ &u(2) = -u(1)-2u(0)+v(2)+v(1) = -1 &&\\ &... &&\\ \end{aligned} \right.
⎩
⎨
⎧u(0)=−u(−1)−2u(−2)+v(0)+v(−1)=1u(1)=−u(0)−2u(−1)+v(1)+v(0)=1u(2)=−u(1)−2u(0)+v(2)+v(1)=−1...
filtic函数求得的初始状态为:
{
i
n
i
t
i
a
l
(
1
)
=
−
u
(
−
1
)
−
2
u
(
−
2
)
+
v
(
−
1
)
=
−
2
i
n
i
t
i
a
l
(
2
)
=
−
2
u
(
−
1
)
=
−
2
\left\{ \begin{aligned} &initial(1) = -u(-1)-2u(-2)+v(-1) = -2&& \\ &initial(2) = -2u(-1) = -2 &&\\ \end{aligned} \right.
{initial(1)=−u(−1)−2u(−2)+v(−1)=−2initial(2)=−2u(−1)=−2
在
u
(
−
1
)
=
u
(
−
2
)
=
v
(
−
1
)
=
0
u(-1)=u(-2)=v(-1)=0
u(−1)=u(−2)=v(−1)=0 的条件下,我们现在来求零输入响应(激励全为0,由起始状态带来的响应),则为:
{
u
(
0
)
=
−
u
(
−
1
)
−
2
u
(
−
2
)
+
v
(
0
)
+
v
(
−
1
)
=
i
n
i
t
i
a
l
(
1
)
+
v
(
0
)
=
−
2
u
(
1
)
=
−
u
(
0
)
−
2
u
(
−
1
)
+
v
(
1
)
+
v
(
0
)
=
i
n
i
t
i
a
l
(
2
)
−
u
(
0
)
+
v
(
1
)
+
v
(
0
)
=
−
2
−
(
−
2
)
+
0
+
0
=
0
u
(
2
)
=
−
u
(
1
)
−
2
u
(
0
)
+
v
(
2
)
+
v
(
1
)
=
−
0
−
2
∗
(
−
2
)
+
0
+
0
=
4
.
.
.
\left\{ \begin{aligned} &u(0) = -u(-1)-2u(-2)+v(0)+v(-1) = initial(1)+v(0) = -2&& \\ &u(1) = -u(0)-2u(-1)+v(1)+v(0) = initial(2)-u(0)+v(1)+v(0)=-2-(-2)+0+0 = 0 &&\\ &u(2) = -u(1)-2u(0)+v(2)+v(1) = -0-2*(-2)+0+0 = 4 &&\\ &... &&\\ \end{aligned} \right.
⎩
⎨
⎧u(0)=−u(−1)−2u(−2)+v(0)+v(−1)=initial(1)+v(0)=−2u(1)=−u(0)−2u(−1)+v(1)+v(0)=initial(2)−u(0)+v(1)+v(0)=−2−(−2)+0+0=0u(2)=−u(1)−2u(0)+v(2)+v(1)=−0−2∗(−2)+0+0=4...
以上就是数值计算例子,另外显然有全响应 = 零输入响应+零状态响应,上面的计算就能看出来。
三、MATLAB验证
以上面数值计算例子的差分方程为例,假设激励为全1,则有:
显然有:全响应 = 零输入响应+零状态响应。