作者: Mustahsin Zarif
信號和系統(tǒng)是電氣工程的核心概念。利用這兩個(gè)概念,我們能夠模擬信息是如何通過電氣元件并被修改的。而且,一旦了解了不同的電氣元件如何影響電壓等信號,我們就可以設(shè)計(jì)電路,以任何我們想要的方式控制信號。我們竟然能夠使用電阻器、電容器和運(yùn)算放大器 (op-amps) 等電子元器件組合來模擬積分和微分等數(shù)學(xué)工具,這著實(shí)令人驚嘆。
例如以下電路(圖1):
圖 1:簡單的積分電路。(圖片來源:Mustahsin Zarif)
進(jìn)入拉普拉斯 (Laplace) 域,我們可以用以下公式表示電路:
Vout = -(1/s) *(1/RC) *Vin
拉普拉斯域中的 1/s 實(shí)際上對應(yīng)于 積分 !因此,我們得到一個(gè)基于運(yùn)算放大器的積分電路模型。然而,當(dāng)我們轉(zhuǎn)向現(xiàn)實(shí)世界時(shí),系統(tǒng)會一直受到某種形式的隨機(jī)噪聲污染。
我們暫將積分電路放一放,來看一個(gè)更簡單的示例:電壓放大電路的輸入輸出波形可通過如圖 2 所示的示波器進(jìn)行測量。
圖 2:電壓放大器的輸入和輸出波形。(圖片來源:Mustahsin Zarif)
在可見正弦波上疊加的隨機(jī)噪聲有多種原因造成,例如因電路在面包上搭建而產(chǎn)生的電氣連接不良等問題。這種噪聲同樣會干擾積分器的波形,我們將在本信號處理系列后續(xù)的博客中對此進(jìn)行探討。然而,我們經(jīng)常考慮的是如何將隨機(jī)干擾最小化。
濾波技術(shù)
工程師喜歡采用濾波技術(shù)來克服這些難題。濾波技術(shù)可以分為 1) 有限脈沖響應(yīng) (FIR) 濾波器或 2) 無限脈沖響應(yīng) (IIR) 濾波器。
FIR 濾波器之所以如此命名,是因?yàn)槿魏螘r(shí)候的輸出僅取決于當(dāng)前和先前的輸入值值,而不取決于之前的輸出值。因此,這種濾波器具有非遞歸結(jié)構(gòu),沒有反饋,可按照公式 1 建模。
公式 1:FIR 濾波器示例公式。(圖片來源:Mustahsin Zarif)
積分器電路就如一個(gè) FIR 濾波器,因?yàn)槠漭敵鰞H取決于輸入。
另一方面,IIR 濾波器具有反饋,因?yàn)槿魏螘r(shí)候的輸出都取決于先前的輸出以及當(dāng)前輸入。這種情況下,可按照公式 2 建模。
公式 2:IIR 濾波器示例公式。(圖片來源:Mustahsin Zarif)
圖 3 是 可直觀表示 IIR 濾波器的框圖,顯示了輸入和輸出如何延遲 (z-i, z-j)、縮放 (ai, bj) 以及相加后獲得出當(dāng)前輸出。通過改變這些值,我們可以實(shí)現(xiàn)不同類型的濾波器。
圖 3:IIR 濾波器框圖。(圖片來源:Mustahsin Zarif)
如果我們想要一個(gè)無反饋的 FIR 濾波器框圖,y[n] 就只是第一次求和的結(jié)果(圖 4)。
圖 4:FIR 濾波器框圖。(圖片來源:Mustahsin Zarif)
現(xiàn)在,我們已經(jīng)掌握了 FIR 和 IIR 濾波器的基礎(chǔ)知識,接下來用一個(gè)例子來說明我們所學(xué)到的知識:移動平均濾波器。
移動平均線的工作方式是求出當(dāng)前輸入和一定數(shù)量先前輸入的平均值(公式 3)。
公式3:移動平均公式。(圖片來源:Mustahsin Zarif)
其中 N= 窗口大小/影響輸出結(jié)果的樣本數(shù)
由此看出,這是一個(gè) FIR 濾波器,因?yàn)榈仁接覀?cè)沒有 y 項(xiàng)。
不過,我們可以巧妙地重組方程,來構(gòu)造一個(gè) IIR 濾波器。請考慮以下情況:
令 N=5,則
y[5] = (x[5]+x[4]+x[3]+x[2]+x[1])/5,
且 y[6] = (x[6]+x[5]+x[4]+x[3]+x[2])/5
y[6]=(x[6]+y[5]-x[1])/5
因此,當(dāng)前輸出目前取決于之前的輸出(y[6] 取決于 y[5])!
更普遍地來說,
y[n] = (y[n ? 1] + x[n] ? x[n ? N - 1])/N
其中 N = 窗口大小
該濾波器在平滑時(shí)域信號方面效果奇佳,如圖 5 所示,我使用 python 對窗口大小 N = 11 進(jìn)行了模擬。
圖 5:使用 Python 模擬移動濾波器。(圖片來源:Mustahsin Zarif)
移動濾波器的 Python 模擬代碼:
Copyimport numpy as np
import matplotlib.pyplot as plt
# Parameters for the sinusoidal wave
frequency = 5 # in Hertz
sampling_rate = 100 # Sampling rate in samples per second
duration = 2 # in seconds
# Generate time axis
t = np.linspace(0, duration, int(sampling_rate * duration), endpoint=False)
# Generate a clean sinusoidal signal
clean_signal = np.sin(2 np.pi frequency * t)
# Add random, white (Gaussian) noise to the signal
noise_amplitude = 0.5
noisy_signal = clean_signal + noise_amplitude * np.random.normal(size=t.shape)
def moving_average(signal, window_size):
window = np.ones(window_size) / window_size
return np.convolve(signal, window, mode='same')
# Apply moving average to the noisy signal
window_size = 11
smoothed_signal_ma = moving_average(noisy_signal, window_size)
# Plot the noisy and smoothed signals
plt.figure(figsize=(12, 9))
plt.subplot(2, 1, 1)
plt.plot(t, noisy_signal, label='Noisy Signal', color='orange')
plt.title('Noisy Sinusoidal Signal')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.grid(True)
plt.legend()
plt.subplot(2, 1, 2)
plt.plot(t, smoothed_signal_ma, label='Smoothed Signal (MA)', color='green')
plt.title('Smoothed Signal using Moving Average')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()
結(jié)束語
本博客的開頭介紹了現(xiàn)實(shí)世界中噪音是如何破壞數(shù)據(jù)的。盡管無法獲得數(shù)學(xué)方程定義的理想響應(yīng),但我們可以通過過濾掉所采集數(shù)據(jù)中的不良特性,使其盡可能接近理想響應(yīng)。有多種方法可以實(shí)現(xiàn)這一點(diǎn),并且也有多種我們想要實(shí)現(xiàn)這一點(diǎn)的場景。雖然我們以移動平均濾波器的模擬響應(yīng)結(jié)束了本篇博客,但在下一篇博客中,我們將研究指數(shù)移動平均濾波器如何平滑嘈雜的慣性測量單元 (IMU) 數(shù)據(jù)!
-
濾波器
+關(guān)注
關(guān)注
162文章
8214瀏覽量
184198 -
信號處理
+關(guān)注
關(guān)注
49文章
1078瀏覽量
104696
發(fā)布評論請先 登錄
信號處理:指數(shù)移動平均 (EMA) 濾波器

帶通濾波器的設(shè)計(jì)步驟與優(yōu)化方法
帶通濾波器的種類與技術(shù)架構(gòu)
低通濾波器的工作原理 低通濾波器在音頻處理中的應(yīng)用
低通和高通濾波器的基礎(chǔ)知識

評論