如何通過時域的輸入輸出波形,求出系統的傳遞函數?
02-15
假如知道時域里的一個輸入是階躍信號,輸出也是時域信號,如何通過這兩種時域信號求出系統的傳遞函數呢?
變換到頻域一除不就完事了
看了下題主的背景,微電轉電力電子。
理論上的思路大概是 @周蕾 和 @巴斯光年 所給的。
1.傻瓜式在MATLAB中,直接用工具箱(新版本應該叫app更確切)。下圖中前兩個都可以解決你的問題,即PID Tunner和 System Identification這倆APP。Texas Instruments做的一個用戶產品,官網有用戶手冊和程序代碼。鏈接你自己找吧,我只給出名字。
(1)."Online Frequency Response Analysis: A Powerful Plug-in Tool for Compensation Design Health Assessment of Digitally Controlled Power Converters" 這篇是相應的論文。
(2)."C2000? Software Frequency Response Analyzer (SFRA) Library and Compensation Designer Users Guide" ( Literature Number: SPRUHZ5A) 這個是用戶手冊,非常詳細,比知乎的答案靠譜多了。這不是標準的系統辨識問題么,講白了就是參數估計問題,隨手Google一下就有一大堆論文。簡單來說就是:你得假設系統的結構是什麼樣子,比如是線性還是非線性,非線性的話有哪些基本的element,線性的話模型是不是strictly proper,還有多少階,甚至要考慮是LTV還是LTI。以上的信息可以猜測,可以從你對此物理系統的了解得到,也可以從 @周蕾同學說的方法得到(大致可以看出模型的Gain是多少,是正是負,以及零極點大略分布)。之後就可以構造regressor,最後用各種estimation theory求解系統參數======================================@鵪鶉我同學不知道你科研方向和背景是什麼,但是你的回答略顯年輕和幼稚啊,我不茲瓷!system identification toolbox是系統辨識領域大牛Ljung教授親自領導開發的工具,小白入門,工程師現場簡單調參的不二之選,比你那啥FFT再除一下高得不知道哪裡去了。直接把輸入輸出load進去,調幾個參數,一個大致的系統就能被辨識,你還可以比較各個結構的好壞,得出最好的結果。這麼好的工具放那兒不用,真是殺牛用雞刀
如果是實際數據的話,幾個關鍵:結構的確定包括有無時延等環節和階數的確定等,雜訊的處理,誤差準則的確定,等等吧~
最簡單的辦法是先轉換成衝擊響應:impulse(t) = step(t) - step(t+1) 然後做傅里葉逆變換。雜訊可能有點大。
也可以用correlation。求 和然後用Wiener Hopf eq.
還可以用power spectrum。算出後輸出除輸入一下就好了不過這樣沒有相位信息。
建議用第二個。請搜索 系統辨識 System Identification
推薦閱讀: