MATLAB 程式設計/伯德圖
外觀
本文介紹了在 MATLAB 中建立伯德圖的主題。簡而言之,使用 bode 命令。但是,bode 命令有幾個選項,並且由 bode 命令生成的圖難以重新格式化。大多數 MATLAB 圖的預設格式對於分析來說很好,但對於插入 Word 和 PowerPoint 文件甚至本網站來說不太理想。因此,本文介紹了一種替代方法,它需要更多程式碼行,但提供通用 plot 命令的完全格式化靈活性。
基本的 bode 命令如下
>> bode(LTI_SYS)
其中
bode 命令將自動呼叫 gcf,它將把伯德圖放在當前的 figure 上。如果不存在 figure,則 gcf 會建立一個。
如果您想指定繪製 LTI_SYS 的頻率點,則使用 logspace 或 linspace 建立一個頻率向量,如下所示
>> freqVec = logspace(-1, 3, 5000); >> bode(LTI_SYS, freqVec * (2*pi))
其中
- freqVec 是一個包含 5000 個頻率的向量,以赫茲為單位,在對數刻度上從 10-1 到 103 均勻間隔
- pi 是一個 MATLAB 常量,等於 的值,在本例中,它用於將 freqVec 轉換為 rad/sec,因為它被傳遞給 bode 命令
為了獲得每個頻率點的幅度和相位,bode 命令必須使用輸出引數呼叫,例如
>> [mag, phase] = bode(LTI_SYS);
或者
>> [mag, phase] = bode(LTI_SYS, freqVec * (2*pi));
其中
- mag 是每個 freqVec 點的幅度(不是以 dB 為單位)
- phase 是每個 freqVec 點的相位(以度為單位)
mag 和 phase 變數必須作為 3D 陣列出現。假設 LTI_SYS 是 SISO,則以下命令將 mag 和 phase 轉換為您預期的向量
>> mag = mag(:); >> phase = phase(:); >> mag = db(mag); % to get the magnitude in 20log dB
bode 命令的主要問題是圖的重新格式化。bode 命令似乎使用了一個普通的 semilogx 圖,然後對 figure 應用補丁或類似的東西。這會導致在嘗試建立多行標題、重新格式化線寬或字型大小等時出現奇怪的行為。軸與 figure 的正常關係並不完全存在。