從傳遞函式到差分方程的轉換
我以前提問過「如何把傳遞函式轉換成差分方程」的形式,後來不少人qq問我,我覺得有必要把這些寫出來,其實很簡單的。
1、傳遞函式的形式
假設傳遞函式為:g(s)=exp^(-0.004s)*400/(s^2+50s);
其中^後表示指數,如:2^3=8;4^2=16;
在matlab裡面建立這個傳遞函式的命令就是:sys=tf(400,[1,50,0],'inputdelay',0.004);
2、脈衝傳遞函式
把傳遞函式離散化就得到脈衝傳遞函式,這個我就不多說了。。。。
g(z) =z^(-4) *( 0.0001967 z + 0.0001935)/( z^2 - 1.951 z + 0.9512)
= z^(-4) *[0.0001967z ^(-1)+ 0.0001935z^(-2)]/[ 1 - 1.951 z^(-1) + 0.9512z^(-2)] =y(z)/u(z)……(2)式
在matlab裡面離散化命令是:dsys=c2d(sys,0.001,'z');其中0.001為取樣時間;
(2)式可寫成:
z^(-4) *[0.0001967 z ^(-1)+ 0.0001935z^(-2)] u(z) = [ 1 - 1.951 z^(-1) + 0.9512z^(-2)] y(z) (3)式
3、差分方程形式
由(3)式可得
0.0001967 z ^(-5)+ 0.0001935z^(-6)]u(z) = [ 1 - 1.951 z^(-1) + 0.9512z^(-2)] y(z) (4)式
把(4)式得z^(-n)中的(-n)寫成(k-n),如z^(-5)u(z)寫成u(k-5),可得:
0.0001967 u(k-5)+ 0.0001935u(k-6)= y(k) - 1.951 y(k-1) + 0.9512y(k-2) (5)式
由(5)式得
y(k) = 1.951 y(k-1) - 0.9512y(k-2)+0.0001967 u(k-5)+ 0.0001935u(k-6)
即差分方程形式
[num,den]=tfdata(dsys,'v')這個命令其實就是取式(2)的分子分母
傳遞函式如何轉化為差分方程
前言 我們在matlab simulink做實驗 的物件一般習慣使用傳遞函式,但是真正轉化到微控制器中時,又無法識別傳遞函式,因此需要轉化為差分方程來處理。最近遇到轉化差分方程的問題,寫乙個部落格記錄。一 傳遞函式形式 一階慣性環節形如以下形式 如何將上式改寫成差分方程,需要按照下述流程。s域傳遞函...
如何傳遞函式
摘自 非同步 庫提供了一些函式,這些函式使您可以在元件之間傳遞訊息。這些訊息傳遞函式與各種訊息塊型別一起使用。有關併發執行時所定義的訊息塊型別的更多資訊,請參見非同步訊息塊。各節內容 本主題描述以下訊息傳遞函式 send 和 asend concurrency send 函式一條訊息傳送到指定目標同...
c 傳遞函式引數
傳遞普通函式和類的成員函式方式不同,原因是傳遞函式引數實際傳的是函式的位址,但是普通函式和成員函式的位址獲取方式不太相同。普通函式只要傳遞乙個函式名稱即可,但是成員函式在類的內部中沒有位址,選擇乙個成員函式就意味著得知道該函式在類中的偏移量,因此需要知道該物件和對應的偏移量,才能得到真實的位址。當然...