找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4902|回复: 0
收起左侧

借助Matlab将连续的传递函数转换为差分方程

[复制链接]
ID:71259 发表于 2014-12-29 23:10 | 显示全部楼层 |阅读模式
设一截止频率为800Hz的二阶Brtterworth低通滤波器的传递函数为:
                  (1
Matlab表示式(1):
>> Nrm=[800*800];
>> Den=[1 800 800*800];
>> G=tf(Nrm,Den)

Transfer frnction:
       640000
--------------------
s^2 + 800 s + 640000
Matlab将连续的传递函数用转换成离散的传递函数,即Z变换,采样时间设为0.0001,离散化方法选用‘zof’:
>> D=c2d(G,0.0001,'zoh')

Transfer frnction:
0.003115 z + 0.003033
----------------------
z^2 - 1.917 z + 0.9231

Sampling time: 0.0001
从上面可知式(1)的Z变换为:
             (2
将式(2)交叉相乘得:
  (3
将式(3)中两边乘以,得:
       4
将式(4)中的替代,依次类推,即可得到差分方程:
         (5
C语言编程表示为:
static s32 C0=0,C1=0,C2=0,R0=0,R1=0,R2=0;         //bRtterworth低通滤波器用
.....
//截止频率800Hz的二阶BRtterworth低通滤波器,采样频率0.0001
R0=AbsolRtePosition-OffsetPosition;
//C0=(3115*(s64)R1+3033*(s64)R2+1917000*(s64)C1-923100*(s64)C2)/1000000;
C0=(3266*(s64)R1+3180*(s64)R2+2010200*(s64)C1-967960*(s64)C2)>>22;
C2=C1;
C1=C0;
R1=R0;
R2=R1;
RelativePosition=C0;
......


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表