跳轉到內容

訊號與系統/濾波器設計

來自華夏公益教科書,開放書籍,開放世界

拉普拉斯變換允許根據電容和電感元件的微分方程分析電路的頻率響應。濾波器設計首先要找到合適的傳遞函式,以便根據頻率對訊號的某些部分進行放大,而對其他部分進行衰減。

選擇合適的濾波器結構並推匯出係數值是華夏公益教科書訊號處理中進一步討論的主題,該教科書涉及訊號與系統應用。

磚牆濾波器

[編輯 | 編輯原始碼]

根據頻率內容分離相同傳輸通道中的訊號和噪聲或不同訊號,最好使用磚牆濾波器,該濾波器在通帶中顯示完全傳輸,在附近的阻帶中顯示完全衰減,並且具有急劇的過渡。

這可以透過傅立葉變換來完成,傅立葉變換提供了給定訊號的頻率內容的完整資訊。計算出傅立葉變換後,可以將不需要的頻率內容歸零,並計算逆傅立葉變換,以提供使用磚牆規範濾波的訊號。

傅立葉變換由下式給出

可以發現,傅立葉變換積分由於其無限邊界,必須從我們宇宙誕生的那一天一直計算到宇宙衰敗的那一天,才能完全計算出來。只有在那時,才能提供理想的磚牆濾波訊號。

更專業地說,理想磚牆濾波器存在無限延遲。

模擬濾波器

[編輯 | 編輯原始碼]

類比電路的分析表明,它們的輸出與其輸入透過一組微分方程相關聯。拉普拉斯變換將這些微分方程改寫為復變數的一組線性方程。

因此,可實現模擬濾波器的傳遞函式可以寫成的兩個多項式函式的比值

因此,模擬濾波器設計的問題是找到一對多項式函式,它們合在一起最接近理想但不可實現的磚牆傳遞函式。

在早期電子訊號處理的年代,科學家們想出了濾波器函式,這些函式在今天仍然被廣泛使用。他們設計出的函式都是低通型別的。頻率變換技術允許為其他濾波器型別找到多項式,例如高通和帶通。

複平面

[編輯 | 編輯原始碼]

模擬濾波器的傳遞函式是 兩個多項式函式的比率。

的複平面

變數 是一個複數,可以寫成 。複平面是一個平面,其中虛軸垂直,水平軸是實部。

傳遞函式分子多項式的根稱為傳遞函式零點。傳遞函式分母多項式的根稱為傳遞函式極點

傳遞函式可以寫成其零點 ,其極點 和一個額外的增益因子 的形式

可以在複平面上繪製傳遞函式的極點和零點。它們的位置提供了有關係統頻率響應的資訊。事實上,頻率響應等於傳遞函式取為 ,它位於虛軸上。

極點的影響

[編輯 | 編輯原始碼]

一個穩定的LTI 系統的所有極點都位於 的左側半平面。

如果一個極點位於虛軸上,在 ,那麼傳遞函式的因子 在點 處將是無限的,全域性頻率響應 也是如此。這種情況的一個特例是積分器:它在 處有一個極點,並且對於一個恆定、非零的輸入,確實具有一個長期無限的輸出。

對於靠近虛軸的極點,頻率響應在接近它們的頻率處具有較大的幅度。換句話說,靠近虛軸的極點表示通帶。

零點的影響

[edit | edit source]

如果一個零點位於虛軸上,在 ,則傳遞函式的因子 在點 為零,因此全域性頻率響應 也是如此。

位於虛軸上或靠近虛軸的零點表示阻帶。

設計濾波器

[edit | edit source]

為給定的濾波器功能設計合適的傳遞函式需要經過以下步驟:

最後,使用分子和分母系數來計算所選 濾波器電路 的元件值。

示例:低通濾波器

[edit | edit source]
CCITT G712 輸入低通濾波器規格

CCITT G712 輸入濾波器規格的簡化版本,僅給出低通部分,如側邊圖所示。

通帶向上延伸到 ,並允許最大紋波為 。阻帶要求在 處衰減 ,在 以上衰減

濾波器函式

[edit | edit source]

第一步,我們需要選擇一個 濾波器函式

諸如 Octave 或 Matlab 之類的程式提供了可以確定滿足給定規範所需的最小濾波器階數的函式。在選擇可能的函式時,這是一個很好的幫助。

但是,我們這裡任意選擇一個 巴特沃斯傳遞函式

標準化濾波器函式

[edit | edit source]

以下 Octave 指令碼允許繪製從 8 階到 16 階的標準化巴特沃斯傳遞函式的幅度。

#-------------------------------------------------------------------------------
# Specifications
#
fs = 40E3;
fPass = 3000;
rPass = 0.125;
fStop1 = 4000;
rStop1 = 14;
fStop2 = 4600;
rStop2 = 32;

pointNb = 1000;
AdbMin = 40;

makeGraphics = 1;
figureIndex = 0;

#===============================================================================
# Normalized filter function
#
wLog = 2*pi*logspace(-1, 1, pointNb);
fc = 0.87;
Adb = [];
for order = 8:16
  [num, den] = butter(order, 2*pi, 's');
  while ( length(num) < length(den) )
    num = [0, num];
  endwhile;
  Adb = [Adb; 20*log10(abs(freqs(num, den, wLog)))];
endfor
Adb(Adb < -AdbMin) = -AdbMin;

figureIndex = figureIndex+1;
figure(figureIndex);

semilogx(wLog/(2*pi), Adb);
hold on;
semilogx([wLog(1)/(2*pi), fc, fc], -[rPass, rPass, AdbMin], 'r');
semilogx([fStop1*fc/fPass, fStop1*fc/fPass, fStop2*fc/fPass, fStop2*fc/fPass, wLog(length(wLog))/(2*pi)], ...
        -[0     , rStop1, rStop1, rStop2, rStop2            ], 'r');
hold off;
axis([wLog(1)/(2*pi), wLog(length(wLog))/(2*pi), -AdbMin, 0]);
grid;
xlabel('frequency [Hz]');
ylabel('amplitude [dB]');

if (makeGraphics != 0)
  print -dsvg g712_butterworth_normalized.svg
endif

下圖顯示了結果:至少需要 13 階巴特沃斯濾波器才能滿足規格。

G712 butterworth normalized

在圖形上,可以注意到所有幅度響應都在 -3 dB 處透過同一個點。

規格頻率已被縮放到適合 1 Hz 的標準化截止頻率。在指令碼中,可能注意到一個額外的縮放因子 fc = 0.87:這是由於拐角截止幅度為 -0.125 dB 而不是 -3 dB。該值在本例中已透過手動調整。同樣,Octave 或 Matlab 指令碼可以自動執行此任務。

非標準化濾波器函式

[edit | edit source]

標準化傳遞函式的 頻率縮放 是透過替換完成的

以下 Octave 指令碼透過將分子和分母系數乘以適當的 冪來實現這一點。

#-------------------------------------------------------------------------------
# Denormalized filter function
#
order = 13;
wLog = 2*pi*logspace(2, 5, pointNb);
fc = 0.87;

[num, den] = butter(order, 2*pi, 's');
while ( length(num) < length(den) )
  num = [0, num];
endwhile;
for index = 1:order+1
  num(index) = num(index) * (fPass/fc)^(index-1);
  den(index) = den(index) * (fPass/fc)^(index-1);
endfor
Adb = 20*log10(abs(freqs(num, den, wLog)));
Adb(Adb < -AdbMin) = -AdbMin;

figureIndex = figureIndex+1;
figure(figureIndex);

semilogx(wLog/(2*pi), Adb);
hold on;
semilogx([wLog(1)/(2*pi), fPass, fPass], -[rPass, rPass, AdbMin], 'r');
semilogx([fStop1, fStop1, fStop2, fStop2, wLog(length(wLog))/(2*pi)], ...
        -[0     , rStop1, rStop1, rStop2, rStop2            ], 'r');
hold off;
axis([wLog(1)/(2*pi), wLog(length(wLog))/(2*pi), -AdbMin, 0]);
grid;
xlabel('frequency [Hz]');
ylabel('amplitude [dB]');

if (makeGraphics != 0)
  print -dsvg g712_butterworth.svg
endif

G712 butterworth

現在,分子和分母系數已準備好用於計算所選 濾波器電路 的元件值。

華夏公益教科書