www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > TsinghuaJoking
[導(dǎo)讀]簡介:根據(jù)學(xué)生提出的如何使用C語言來實現(xiàn)系統(tǒng)函數(shù)的問題,給出了利用MATLAB,Python對連續(xù)時間系統(tǒng)函數(shù)進行離散化的方法。繼而可以進行C語言實現(xiàn)。關(guān)鍵詞:系統(tǒng)函數(shù),離散化,MATLAB01如何實現(xiàn)傳遞函數(shù)???卓晴老師,請教一下,傳遞函數(shù)環(huán)節(jié)用C需要編寫,該怎么編寫?在ma...

簡 介: 根據(jù)學(xué)生提出的如何使用C語言來實現(xiàn)系統(tǒng)函數(shù)的問題,給出了利用MATLAB,Python對連續(xù)時間系統(tǒng)函數(shù)進行離散化的方法。繼而可以進行C語言實現(xiàn)。
關(guān)鍵詞 系統(tǒng)函數(shù),離散化MATLAB

01 何實現(xiàn)傳遞函數(shù)?

??晴老師,請教一下,傳遞函數(shù)環(huán)節(jié)用C需要編寫,該怎么編寫?在matlab中他能簡單的表述,但是在利用C語言,該咋辦呢?

??例如寫進單片機中。類似于寫一個傳遞函數(shù)通式,想實現(xiàn)各種環(huán)節(jié)。

??在matlab中他有很好的封裝,卻不好理解matlab怎么做到的,simulink中一個時域信號輸入傳遞模塊輸出還是時域信號,逐步仿真我認(rèn)為這個傳遞模塊中封裝著一個復(fù)雜表達式,想知道用C語言咋能實現(xiàn),這樣以后對信號處理想加個濾波環(huán)節(jié),一階延時,可以利用這種方法直接解決。

??好的,感謝卓大大,最好給出一個G/TS 1這種的一個C代碼的例子,然后我就可以仿照思路寫出更多高階的。

02 么是傳遞函數(shù)?

??回答前面同學(xué)提出的“如何使用C編程語言實現(xiàn)傳遞函數(shù)?”,則需要先了解什么是系統(tǒng)傳遞函數(shù)?為什么引入系統(tǒng)傳遞函數(shù)?

一、線性時不變系統(tǒng)

??下面兩個由線性R,C組成的電路網(wǎng)絡(luò),它們的共同之處都屬于 線性時不變系統(tǒng)[1] ,不同之處在于左邊的電路輸入輸出之間是一個比例關(guān)系,


??這類系統(tǒng)被稱為即時系統(tǒng)。

▲ 圖2.1.1 左:電阻分壓電路;右:阻容低通濾波電路
??右邊的低通濾波電路輸入輸出之間關(guān)系則需要通過微分方程才能夠描述:


??這種帶有儲能器件的電路,當(dāng)前的輸出不僅與當(dāng)前的輸入有關(guān)系,還和之前時間輸入有關(guān)系。這類系統(tǒng)被稱為動態(tài)系統(tǒng),顯然動態(tài)系統(tǒng)比即使系統(tǒng)復(fù)雜,但功能更強大。即使系統(tǒng)可以看成一類特殊的動態(tài)系統(tǒng)。

二、系統(tǒng)函數(shù)

??既然兩個電路都屬于線性時不變系統(tǒng),可否將它們的輸入輸出關(guān)系都簡化成比例關(guān)系,這樣分析與求解就比較方便了?

??答案是可以的,只不過需要把輸入輸出信號都進行某種變換,比如 傅里葉變換[2] , 拉普拉斯變換[3] ,這時變換后的系統(tǒng)輸入輸出之間就是一個比例關(guān)系了。這個比值就被稱為線性時不變分析對象的系統(tǒng)函數(shù)

??在拉普拉斯變換下,上面的電阻分壓電路對應(yīng)的系統(tǒng)函數(shù)為:


??阻容低通濾波電路對應(yīng)的系統(tǒng)函數(shù)為:

??如果拋開這些變換概念背后的數(shù)學(xué)基礎(chǔ),從工程應(yīng)用角度也可以將上述系統(tǒng)函數(shù)看成對描述線性時不變系統(tǒng)輸入輸出關(guān)系之間的微分方程的另外一種表示方式。

??借助于系統(tǒng)函數(shù)的概念,就把線性時不變系統(tǒng)的分析、設(shè)計都可以進行簡化。

▲ 圖2.2.1 在變換域內(nèi)定義的系統(tǒng)函數(shù)等于系統(tǒng)的零狀態(tài)響應(yīng)與輸入信號的比值

三、離散時間系統(tǒng)函數(shù)

??計算機的普及使得離散時間系統(tǒng)應(yīng)用增加,系統(tǒng)可以通過軟件編程來實現(xiàn)。如果實現(xiàn)對于輸入信號進行低通濾波,也可以在對信號進行采樣之后利用下面離散時間系統(tǒng)來進行處理。

▲ 圖2.3.1.1 一階低通離散時間系統(tǒng)
??下圖中顯示的隨機噪聲的原始信號,經(jīng)過上面迭代方程濾波之后,就會形成平滑后的數(shù)據(jù)。其中的濾波器系數(shù)。

▲ 圖2.3.3 增加有噪聲信號以及一階低通濾波后的信號
from?headm?import?*

t?=?linspace(0,?10,?1000)
sint?=?sin(t)

data?=?sint? ?random.rand(len(t))

def?filter_1(data,?a):
????yn?=?data[0]
????newd?=?[yn]

????for?d?in?data[1:]:
????????yn?=?d*(1-a)? ?a?*?yn
????????newd.append(yn)

????return?newd

data_filter?=?filter_1(data,?0.99)

plt.plot(t,?data,?label='origin')
plt.plot(t,?data_filter,?label='filter?data')
plt.xlabel("t")
plt.ylabel("data")
plt.grid(True)
plt.legend(loc='upper?right')
plt.tight_layout()
plt.show()
??線性時不變動態(tài)離散時間系統(tǒng)可以使用差分方程來刻畫,經(jīng)過簡單的一項便可成寫出的迭代方程形式,即由輸入信號以及以前的輸出信號計算出當(dāng)前系統(tǒng)輸出值,這是利用軟件編程實現(xiàn)的基礎(chǔ)。

??同樣,在對于系統(tǒng)的輸入輸出信號進行 Z-變換[4] ,那么系統(tǒng)的零狀態(tài)輸出信號比上輸入信號也是一個常量,定義為離散時間系統(tǒng)的系統(tǒng)函數(shù)。上述一階低通離散時間系統(tǒng)對應(yīng)的系統(tǒng)函數(shù)為:


??同樣,如果拋開z變換背后的數(shù)學(xué)原理,僅僅把看成對于信號的延遲操作,那么上面的系統(tǒng)函數(shù)也可以看成差分方程另外一種描述方法。可以看到系統(tǒng)函數(shù)所對應(yīng)的有理分式的分子多項式系數(shù)對應(yīng)著差分方程輸入信號前的系數(shù);分母多項式的系數(shù)對應(yīng)差分方程輸出信號前的系數(shù)。

▲ 圖2.3.2 離散時間系統(tǒng)的系統(tǒng)方程
??因此,如果已知知道了離散時間系統(tǒng)函數(shù),則按照上面的系統(tǒng)函數(shù)與差分方程對應(yīng)關(guān)系可以寫出對應(yīng)的差分方程,進而整理成對應(yīng)的迭代方程。這樣就可以使用編程語言(C,Python)來實現(xiàn)算法了。

03 何將H(s)轉(zhuǎn)換成H(z)?

??文一開始同學(xué)詢問,如果知道了一個連續(xù)時間系統(tǒng)的傳遞函數(shù),怎么使用C語言編程實現(xiàn)系統(tǒng)功能?這個問題就轉(zhuǎn)換成如何將連續(xù)時間系統(tǒng)函數(shù)轉(zhuǎn)換成對應(yīng)的離散時間系統(tǒng)函數(shù)的問題了。這個過程也稱為連續(xù)時間系統(tǒng)的離散化。

一、連續(xù)系統(tǒng)函數(shù)離散化

1、離散化方法

??將連續(xù)時間系統(tǒng)轉(zhuǎn)換成對應(yīng)的離散時間系統(tǒng)的過程常常用在模擬設(shè)計-離散實現(xiàn)的設(shè)計過程中。通常使用的方法包括:

  • 沖激響應(yīng)不變法:這種方法可以保持離散時間系統(tǒng)的單位沖激響應(yīng)是對應(yīng)連續(xù)時間系統(tǒng)的采樣;
  • 變量替換法:包括前向差分(Euler方法)、后向差分、雙線性法,也稱梯形方法;
??除此之外,在 Continuous[5] 中給出了在控制系統(tǒng)中常用到的六種方法及其轉(zhuǎn)換原理。

2、舉例

??比如使用雙線性方法,它是基于把代表位移算子的所對應(yīng)的連續(xù)系統(tǒng)函數(shù)近似展開成有理分式:

??以一個一階低通濾波器為例:


??使用雙線性方法轉(zhuǎn)換成離散系統(tǒng)函數(shù):

二、使用MATLAB離散化系統(tǒng)函數(shù)

??利用MATLAB內(nèi)部函數(shù) ?c2d[6] ,可以很方便將連續(xù)時間系統(tǒng)函數(shù)轉(zhuǎn)換成對應(yīng)的離散時間系統(tǒng)函數(shù)。

1、命令語法

??MATLAB 中給出了一下四種常用到離散系統(tǒng)函數(shù)命令形式:

sysd?=?c2d(sysc,Ts)
sysd?=?c2d(sysc,Ts,method)
sysd?=?c2d(sysc,Ts,opts)
[sysd,G]?=?c2d(___)
??第一種方法利用了零階保持方法完成系統(tǒng)函數(shù)離散化,如果希望指明離散化具體方法,可以使用2,3兩種命令形式。

1、轉(zhuǎn)換舉例

(1)連續(xù)時間系統(tǒng)函數(shù)

??將如下帶有延時環(huán)節(jié)的二階連續(xù)時間系統(tǒng)進行離散化:

$$H\left( s \right) = e{ - 0.25s} {{10} \over {s2 ? 3s 10}} $$

(2)轉(zhuǎn)換命令

h?=?tf(10,[1?3?10],'IODelay',0.25);?
hd?=?c2d(h,0.1)
hd?=
?
???????????0.01187?z^2? ?0.06408?z? ?0.009721
??z^(-3)?*?----------------------------------
?????????????????z^2?-?1.655?z? ?0.7408
?
Sample?time:?0.1?seconds
Discrete-time?transfer?function.

(3)系統(tǒng)仿真

??通過以下指令,可以對比連續(xù)時間系統(tǒng)與離散時間系統(tǒng)單位沖激響應(yīng)波形。

step(h,'--',hd','-')

▲ 圖3.2.2.1 系統(tǒng)的單位沖激響應(yīng)信號對比

題總結(jié) ※

??使用嵌入式系統(tǒng)實現(xiàn)信號處理算法、控制算法,比起利用連續(xù)時間系統(tǒng)(或者模擬電路)實現(xiàn)具有很大的優(yōu)點。在一些模擬設(shè)計(仿真)-數(shù)字化實現(xiàn)的場景中,將連續(xù)時間系統(tǒng)函數(shù)轉(zhuǎn)換成對應(yīng)的離散時間系統(tǒng)函數(shù)是編程實現(xiàn)控制算法的第一步。

??離散化系統(tǒng)函數(shù)的方法有很多種,在MATLAB中可以利用相關(guān)的命令完成這些轉(zhuǎn)換,并進行系統(tǒng)仿真測試。

??在 control.TransferFunction[7] 中給出了利用 Python 中的 control 開發(fā)包進行連續(xù)時間系統(tǒng)離散化相關(guān)指令。

??下面示例給出了給出了將系統(tǒng)函數(shù):轉(zhuǎn)換成對應(yīng)的離散時間系統(tǒng)函數(shù):


import?control
sys?=?control.TransferFunction(1,[1,1])
sysd?=?sys.sample(0.5,?method='bilinear')

參考資料

[1]線性時不變系統(tǒng): https://baike.baidu.com/item/線性時不變系統(tǒng)/2474061

[2]傅里葉變換: https://mathworld.wolfram.com/FourierTransform.html#::text=The smoother a function (i.e., the larger the,Fourier transform is also symmetric since implies .

[3]拉普拉斯變換: https://byjus.com/maths/laplace-transform/#::text=The Laplace transform is a well established mathematical,to calculate the solution to the given problem.

[4]Z-變換: https://faculty.ksu.edu.sa/sites/default/files/dsp_cen352_ch5_z.pdf#:~:text=Definition of z-transform: The z-transform is a very,filter design and frequency analysis of digital signals.

[5]Continuous: https://ww2.mathworks.cn/help/control/ug/continuous-discrete-conversion-methods.html

[6]c2d: https://ww2.mathworks.cn/help/control/ref/lti.c2d.html#mw_53fc4689-2099-41d0-93b3-de1e51a174c1

[7]control.TransferFunction: https://python-control.readthedocs.io/en/0.8.3/generated/control.TransferFunction.html




新一屆培訓(xùn)開始啦


新一屆的培訓(xùn)開始啦,希望卓大大規(guī)則也可以今早出臺奧。



為祖國獻禮,祝我們的祖國生日快樂,繁榮富強!


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉