最近思考關於傳遞函式的離散化問題時,產生了乙個誤區,在這裡記錄一下。
當時想到s域到z域的對映時的乙個關係式為
(1) z=
es
tz=e^ \tag 1
z=est(
1)於是就想將連續傳遞函式離散化時為什麼不直接反變換
(2) s=
ln(z
)t
s=\frac\tag 2
s=tln(
z)(
2)想了很久才弄出錯在哪了。s域和z域之間的對映關係是對同乙個離散訊號而言的,不能將連續訊號的s變換和離散的z變換聯絡到一起。例如有
(3) g(
s)=1
s+
1g_=\frac\tag 3
g(s)=
s+11
(3)
對應的離散系統(將單位衝擊響應進行取樣之後的離散訊號)z變換為
(4) g(
z)=1
1+e−
tz−1
g_=\fracz^}\tag 4
g(z)=
1+e−
tz−1
1(4
)將z=es
tz=e^
z=es
t代入式(4)
(4)(4
)得到(5) g(
z)=1
1+e−
te−s
tg_=\frace^}\tag 5
g(z)=
1+e−
te−s
t1(
5)式( 5)
(5)(5
)就是離散系統的拉式變換,將 s=l
n(z)
ts=\frac
s=tln(
z) 代回就可得到離散系統的z變換,而將其代入連續系統傳遞函式式(3)
(3)(3
)中沒有意義。
上面採用的離散變換是所謂的直接變換,實際上是利用單位衝擊響應不變的方法進行變換。是利用對時域的單位衝擊響應訊號取樣的原理得到的,需要注意的是只能保證單位衝擊響應不變,不能保證增益(單位階躍響應)不變。而在頻域的影響在下面根據自己的理解形象的梳理一下:
如果利用單位衝擊響應不變對乙個連續傳遞函式進行離散,在連續傳遞函式的s域中相當於將s域分為橫向的條帶(條帶寬度根據取樣週期而定),然後原s域的值按條帶依次移動混疊,最後得到離散系統的s域,即每個條帶的值重複。由於極點的值為無窮,所以混疊之後極點仍然存在;但零點的值為零,混疊之後不一定為零,因此不能保證零點仍然存在。而s域的虛軸即為頻率響應,同樣混疊。然後進行式(1)的變換,將離散系統的s域的每乙個條帶都對映到z域的整個平面(s左半平面->z單位圓內)。
除了利用保持時域訊號取樣不變的方法來對連續傳遞函式進行離散化,還可以直接在s域(頻域)上進行對映到z域。例如雙線性變換法的過程可以形象的理解成下面過程:首先有乙個連續傳遞函式的s域,然後將整個s域非線性壓縮到乙個橫向條帶中,然後這個條帶的值複製到每個條帶中,每個條帶值都相同,然後都對映到z域上。
總而言之,根據自己的理解。連續傳遞函式的離散化問題在s域上可以看做是如何將原來s域變成按橫向條帶重複的s域的問題,而z域只是對按橫向條帶重複的s域的乙個對映,作用僅僅是簡化離散後重複的s域。
附:
連續函式的離散化方法有許多,下面用matlab中c2d()函式的引數選項來介紹:
'impluse':單位衝擊響應不變法,即直接z變換
'zoh' :加零階保持器後進行z變換(預設選項)
'foh' :加一階保持器後進行z變換
'tustin' :雙線性變換法
'matched':保持直流增益不變,同時傳遞函式的零極點按式(2)的關係對映不變
其他方法還有後向差分,前向差分,高階差分,這些方法c2d()函式並沒有。
(以上內容均為自己思考所得,如有錯誤和疏漏,感謝大家指正) 乙個結構體傳遞方式的問題
結構體做函式引數有兩種傳遞方式 一是傳遞結構體變數,這是值傳遞 二是傳遞結構體指標,這是位址傳遞。struct key number struct key number keynum 前幾天犯了乙個失誤,在傳遞結構體變數時使用值傳遞,由於在函式中修改的是區域性變數,導致函式外的全域性變數沒被修改到。...
乙個指標函式的問題
看到乙個某公司的面試題目如下 char getstr1 void char getstr2 void 問如果呼叫這兩個函式進行賦值的話,輸出的值分別為什麼?如果不仔細想的話,回答是輸入的結果一樣 hello world 然而非也,實驗證明以上的答案是錯的 函式getstr1返回值為輸出的亂碼,函式g...
只在乙個點上連續的函式
參考 呵呵,其實很簡單,想法 於dirichlet函式,就是 當x為有理數時f x 1,當x為無理數時f x 0,顯然這函式處處不連續.那麼我們對其做一點修改,就可以滿足只在一點連續了,改法為 當x為有理數時f x x a,當x為無理數時f x 0,其中a為有理數.那麼f x 就只在a點連續了.具體...