找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5664|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

借助Matlab將連續(xù)的傳遞函數(shù)轉(zhuǎn)換為差分方程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-29 23:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
設(shè)一截止頻率為800Hz的二階Brtterworth低通濾波器的傳遞函數(shù)為:
                  (1
Matlab表示式(1):
>> Nrm=[800*800];
>> Den=[1 800 800*800];
>> G=tf(Nrm,Den)

Transfer frnction:
       640000
--------------------
s^2 + 800 s + 640000
Matlab將連續(xù)的傳遞函數(shù)用轉(zhuǎn)換成離散的傳遞函數(shù),即Z變換,采樣時間設(shè)為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;
......


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表