這是一篇網路上可以參考的文章。
First Order Digital Filters - An Audio Cookbook
這一個數位濾波器的數學式是以下的樣子 (直流增益值為 1)
\[ y_n = ay_{n-1} + (1-a)u_n \]
其中 $y_n$、$y_{n-1}$ 與 $u_n$ 分別代表濾波器現在的輸出值、濾波器過去一個取樣時間的輸出值,和現在的原始信號。
$a$ 這一個係數定義成
\[ a = e^{-\pi f/F_n} \]
其中 $F_n$ 是取樣頻率 $F_s$ 的一半,$f$ 代表設定的頻寬。
畫出對應的頻率響應圖,的確一如預期。
Matlab 的程式碼
% constants
Fs=20000; % sampling rate
t=1/Fs; % sampling interval
Fn=Fs/2; % Nyquist frequency
numPts=2^13; % number of points of analysis
%
n = [0.002 0.01 0.05 0.1 0.2];
a = exp(-pi*n*Fn/Fn);
%
% First order IIR filter
% y(n) = a*y(n-1) + (1-a)*u(n)
% find frequency response
%
h1 = figure(1);
set(h1,'color','white');
for i = 1:5
[h,w] = freqz([1-a(i) 0],[1 -a(i)], numPts);
% calculate dB values, for power quantities
y(:,i) = 20*log10(abs(h));
end;
semilogx(w*10000/pi, y,'-.','LineWidth',2);
ax3 = gca;
set(ax3,'fontsize',14,'linewidth',1.0);
grid;
xlabel('frequency in Hz','fontsize',16);
ylabel('Gain in dB, 20log_{10}(Gain)','fontsize',16);
title('Frequency Responses, y_n = ay_{n-1} + (1-a)u_n, a=exp(-\pif/F_n), F_n=10000Hz','fontsize',16);
axis([2 10^4 -45 5])
l1=legend('f = 20Hz','f = 100','f = 500','f = 1000','f = 2000','Location','SouthWest')
set(l1,'fontsize',16);
但為何如此呢?
我知道了!其實上述的想法,並非是一個公式,而是近似如此(工程師觀點)!
為了證明這樣的觀點,我自己針對特定的頻率值 $\pi f/F_n$ 把頻率響應在認為是3dB頻寬與實際值做了一下比較
\[ \frac{Y(z)}{U(z)} = \frac{1-e^{-\pi f/F_n}}{z-e^{-\pi f/F_n}} \]
其中 $z = e^{-j\Omega}$ ,而且 $\Omega = e^{-j\pi f/F_n}$。
結果如下:
MATLAB 程式
h2 = figure(2);
set(h2,'color','white');
aa = (0.02:0.02:0.4)*pi;
bb= 1-exp(-aa);
cc=exp(j*aa)-exp(-aa);
dd = abs(bb)./abs(cc);
plot(aa,dd,'--o','LineWidth',2);grid;
ax2 = gca;
set(ax2,'fontsize',14,'linewidth',1.0);
axis([0.02*pi 0.4*pi 0.4 0.8]);
xlabel('Values of \pif/F_n','fontsize',16);
title('Ratio of abs(1-exp(\pif/F_n))/abs(exp(-j\pif/F_n))-exp(-\pif/F_n))','fontsize',16);
當 $f/F_n$ 在 0.4 以下,也就是 $\pi f/F_n$ 在 1.26 以下時,這一個數位低通濾波器關於增益的頻率響應,在 $\pi f/F_n$ 的位置上的確是在 3dB (0.707) 左右的位置。
由上圖可以看出,這樣的想法,在 $\pi f/F_n$ 越來越大時,會越不準!只是因為是低通濾波器的關係,以工程師的觀點來看,應該還是可以接受的!
但究竟是如何看出這樣的關係呢?
想的出來的話,鐵定功力大增!
很吃力的一篇技術文章!