连续系统如何离散化

最常见的两种方法就是欧拉法和塔斯汀法(Tustin's method,也叫bilinear transformation)。
欧拉法即为:
s=\frac{z-1}{T}
将传递函数中的s用这个替换即可。
这是因为s在拉普拉斯变换里面是微分,而
\dot{x} \approx (x(k+1)-x(k))/T
而z变换里面的z运算符即为:
zx(k)=x(k+1)
微分关系即变为:
\dot{x} \approx (zx(k)-x(k))/T=x(k)(z-1)/T

但是欧拉法用的是积分的矩形法则,效果有时并不好。所以又提出了根据梯形法则的塔斯汀法:
s=\frac{2}{T}\frac{z-1}{z+1}
将C(s)里面的s都替换掉,变成z和C(z)就行了。

可以再matlab里面用c2d函数进行运算:
[numZ denZ]=c2d(num,den,'tustin')%bilinear method
欧拉法在matlab里面貌似已经是不支持了。

再说下z域里怎么写成差分方程。如果我们有控制器:
C(z)=\frac{Y(z)}{U(z)}=\frac{a_{m}z^{m}+a_{m-1}z^{m-1}....+a_{1}z^{1}+b_{0}}{b_{n}z^{n}+b_{n-1}z^{n-1}....+b_{1}z^{1}+b_{0}}
且n≥m,
将分式转换:
Y(z)(a_{n}z^{n}+a_{n-1}z^{n-1}....+a_{1}z^{1}+a_{0})=U(z)(b_{m}z^{m}+b_{m-1}z^{m-1}....+b_{1}z^{1}+b_{0})
两边同除以z^n
Y(z)(a_{n}+a_{-1}z^{-1}....+a_{1}z^{1-n}+a_{0}z^{-n})=U(z)(b_{m}z^{m-n}+b_{m-1-n}z^{m-1-n}....+b_{1}z^{1-n}+b_{0}z^{-n})
注意
z^{-n}x(k)=x(k-n)
让Y(z)=Y(k),U(z)=U(k)
a_{n}Y(k)+a_{-1}Y(k-1)....+a_{1}Y(k+1-n)+a_{0}Y(k-n)\\=b_{m}U(k+m-n)+b_{m-1-n}U(k+m-n-1)....+b_{1}U(k+1-n)+b_{0}U(k-n)
那么就能得到k时刻Y的值了。
\begin{split}
&Y(k)=\frac{1}{a_{n}}
((-a_{-1}Y(k-1)....-a_{1}Y(k+1-n)-a_{0}Y(k-n)\\
&+b_{m}U(k+m-n)+b_{m-1-n}U(k+m-n-1)....+b_{1}U(k+1-n)+b_{0}U(k-n))\\
\end{split}

举个例子:
C(z)=\frac{Y(z)}{u(z)}=\frac{2z-1}{z^2+z+1}
分式上下均除以z的平方:
C(z)=\frac{Y(z)}{U(z)}=\frac{2z^{-1}-z^{-2}}{1+z^{-1}+z^{-2}}
进一步整理:
Y(k)(1+z^{-1}+z^{-2})=U(k)(2z^{-1}-z^{-2})
再把左边的部分项挪过来:
Y(k)=2U(k-1)-U(k-2)-Y(k-1)-Y(k-2)
这样就知道k时刻控制器的输出是多少了,能在程序里面进行实现了。

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值