0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IIR濾波器種類(lèi)和設(shè)計(jì)

冬至子 ? 來(lái)源:菜J數(shù)據(jù)分析 ? 作者:菜J數(shù)據(jù)分析 ? 2023-06-20 11:31 ? 次閱讀

IIR濾波器(Infinite Impulse Response Filter)是一種數(shù)字濾波器,具有無(wú)限沖激響應(yīng)特性。相對(duì)于FIR(有限沖激響應(yīng))濾波器,IIR濾波器具有更高的靈活性和更小的計(jì)算復(fù)雜度。本文將介紹IIR濾波器的原理、特點(diǎn)以及常見(jiàn)的設(shè)計(jì)方法。

一、IIR濾波器原理

IIR濾波器的原理基于差分方程,其中當(dāng)前輸出值取決于當(dāng)前輸入值和過(guò)去輸出值的線性組合。這種遞歸結(jié)構(gòu)導(dǎo)致IIR濾波器具有無(wú)限的沖激響應(yīng),因此可以對(duì)輸入信號(hào)進(jìn)行更復(fù)雜的頻率響應(yīng)調(diào)整。

IIR濾波器的差分方程一般形式如下:

y[n] = b0 * x[n] + b1 * x[n-1] + ... + bm * x[n-m] - a1 * y[n-1] - ... - an * y[n-n]

其中, x[n] 是當(dāng)前輸入信號(hào)值, y[n] 是當(dāng)前輸出信號(hào)值,b0, b1, ..., bm是輸入系數(shù),a1, ..., an是輸出系數(shù),mn分別表示濾波器的輸入和輸出階數(shù)。

IIR濾波器可以分為兩類(lèi):無(wú)零點(diǎn)IIR濾波器和有零點(diǎn)IIR濾波器。無(wú)零點(diǎn)IIR濾波器的輸出僅由過(guò)去的輸出值和當(dāng)前輸入值決定,而有零點(diǎn)IIR濾波器的輸出還受到過(guò)去的輸入值的影響。

二、IIR濾波器特點(diǎn)

IIR濾波器具有以下特點(diǎn):

遞歸結(jié)構(gòu) :IIR濾波器通過(guò)反饋將輸出連接到輸入,形成遞歸結(jié)構(gòu)。這種結(jié)構(gòu)可以實(shí)現(xiàn)更高階的濾波器,使得在相同濾波器階數(shù)的情況下,與FIR濾波器相比,IIR濾波器具有更小的延遲和更高的頻率選擇能力。

寬帶特性 :相對(duì)于FIR濾波器,IIR濾波器可以實(shí)現(xiàn)更寬的帶通和帶阻特性,可以更好地適應(yīng)頻率選擇要求。

計(jì)算效率 :IIR濾波器通常比FIR濾波器具有更高的計(jì)算效率,因?yàn)樗鼈儾恍枰鎯?chǔ)大量的前期樣本,而是通過(guò)遞歸運(yùn)算實(shí)現(xiàn)濾波過(guò)程。

頻率選擇 :IIR濾波器可以實(shí)現(xiàn)更復(fù)雜的頻率選擇,例如橢圓濾波器和Chebyshev濾波器等,這些濾波器在某些應(yīng)用中具有更好的頻率響應(yīng)特性。

時(shí)域響應(yīng) :IIR濾波器的時(shí)域響應(yīng)通常具有較長(zhǎng)的尾部,這意味著它們對(duì)輸入信號(hào)的變化有較慢的響應(yīng)。這可以在一些應(yīng)用中產(chǎn)生特殊的效果,如音頻音效處理和混響效果。

穩(wěn)定性 :IIR濾波器的穩(wěn)定性與極點(diǎn)的位置有關(guān)。為了確保濾波器的穩(wěn)定性,極點(diǎn)必須位于單位圓內(nèi)的穩(wěn)定區(qū)域。因此,在IIR濾波器設(shè)計(jì)中,需要采取措施來(lái)控制極點(diǎn)的位置,以確保濾波器的穩(wěn)定性。

三、IIR濾波器種類(lèi)和設(shè)計(jì)

經(jīng)典的IIR濾波器類(lèi)型,包括Butterworth濾波器、Chebyshev I類(lèi)和II類(lèi)濾波器、橢圓濾波器和Bessel濾波器,都是為了逼近理想的矩形濾波器而設(shè)計(jì)的。

理想的矩形濾波器是在頻率域中具有矩形形狀的濾波器,它可以完全通過(guò)在通帶內(nèi)傳遞所需的頻率分量,同時(shí)在阻帶內(nèi)完全抑制不需要的頻率分量。然而,實(shí)際上很難實(shí)現(xiàn)理想的矩形濾波器,因?yàn)樗笤陬l率域中產(chǎn)生無(wú)限寬的截止帶和無(wú)限陡的過(guò)渡帶。

經(jīng)典的IIR濾波器類(lèi)型采用不同的設(shè)計(jì)策略來(lái)逼近理想的矩形濾波器:

(1)Butterworth濾波器:通過(guò)在通帶和阻帶之間均勻分布的幅度衰減來(lái)逼近理想矩形濾波器的幅頻響應(yīng)特性。它在通帶內(nèi)具有平坦的幅度響應(yīng),但在阻帶中的衰減率相對(duì)較低。

(2)Chebyshev I類(lèi)和II類(lèi)濾波器:通過(guò)引入波紋來(lái)實(shí)現(xiàn)更陡峭的過(guò)渡帶和更高的阻帶衰減,從而更接近理想的矩形濾波器。Chebyshev I類(lèi)濾波器在通帶內(nèi)具有最小的波紋,而Chebyshev II類(lèi)濾波器在阻帶內(nèi)具有最小的波紋。

(3)橢圓濾波器:使用Cauer函數(shù)來(lái)設(shè)計(jì),通過(guò)在通帶和阻帶內(nèi)都具有波紋來(lái)實(shí)現(xiàn)更 steepend 的過(guò)渡帶和更高的阻帶衰減。橢圓濾波器在通帶和阻帶內(nèi)都能夠?qū)崿F(xiàn)較小的幅度波紋。

(4)Bessel濾波器:通過(guò)在頻率域中具有線性相位特性來(lái)逼近理想的矩形濾波器的相位響應(yīng)。它對(duì)信號(hào)的相位不會(huì)引入額外的失真,但在幅度響應(yīng)方面具有相對(duì)平滑的特性。

每種IIR濾波器類(lèi)型都有其特定的設(shè)計(jì)方法和特點(diǎn),適用于不同的應(yīng)用場(chǎng)景和設(shè)計(jì)要求。選擇適當(dāng)?shù)腎IR濾波器類(lèi)型取決于所需的頻率響應(yīng)特性、相位特性和設(shè)計(jì)復(fù)雜度。

3.1 Butterworth濾波器

原理:Butterworth濾波器是一種最常見(jiàn)的IIR濾波器,其設(shè)計(jì)目標(biāo)是在通帶內(nèi)具有盡可能平坦的幅度響應(yīng),同時(shí)保持最小的相位失真。它的特點(diǎn)是具有光滑的頻率響應(yīng)曲線,沒(méi)有幅度波紋。

設(shè)計(jì):Butterworth濾波器的設(shè)計(jì)通過(guò)控制濾波器的階數(shù)和截止頻率來(lái)實(shí)現(xiàn)。階數(shù)越高,濾波器的頻率選擇能力越強(qiáng)。

import numpy as np
from scipy.signal import butter, filtfilt
import matplotlib.pyplot as plt


# 生成示例數(shù)據(jù)
fs = 1000  # 采樣頻率
t = np.arange(0, 1, 1/fs)  # 時(shí)間序列
x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 50 * t) + np.random.randn(len(t)) * 0.2  # 混合信號(hào)


# 定義Butterworth濾波器函數(shù)
def butterworth_filter(data, cutoff_freq, filter_type, order, fs):
    nyquist_freq = 0.5 * fs
    cutoff = cutoff_freq / nyquist_freq


    # 設(shè)計(jì)Butterworth濾波器系數(shù)
    b, a = butter(order, cutoff, btype=filter_type, analog=False, output='ba')


    # 將濾波器應(yīng)用于數(shù)據(jù)
    filtered_data = filtfilt(b, a, data)


    return filtered_data


# 設(shè)計(jì)并應(yīng)用低通濾波器
cutoff_freq = 30  # 截止頻率
order = 4  # 階數(shù)
filter_type = 'lowpass'  # 濾波器類(lèi)型


lowpass_data = butterworth_filter(x, cutoff_freq, filter_type, order, fs)


# 設(shè)計(jì)并應(yīng)用帶通濾波器
cutoff_freqs = [20, 80]  # 截止頻率范圍
order = 4  # 階數(shù)
filter_type = 'bandpass'  # 濾波器類(lèi)型


bandpass_data = butterworth_filter(x, cutoff_freqs, filter_type, order, fs)


# 設(shè)計(jì)并應(yīng)用高通濾波器
cutoff_freq = 50  # 截止頻率
order = 4  # 階數(shù)
filter_type = 'highpass'  # 濾波器類(lèi)型


highpass_data = butterworth_filter(x, cutoff_freq, filter_type, order, fs)


# 設(shè)計(jì)并應(yīng)用帶阻濾波器
cutoff_freqs = [40, 60]  # 截止頻率范圍
order = 4  # 階數(shù)
filter_type = 'bandstop'  # 濾波器類(lèi)型


bandstop_data = butterworth_filter(x, cutoff_freqs, filter_type, order, fs)


# 繪制原始信號(hào)和濾波后的信號(hào)
plt.figure(figsize=(10, 6))
plt.subplot(5, 1, 1)
plt.plot(t, x)
plt.title('Original Signal')


plt.subplot(5, 1, 2)
plt.plot(t, lowpass_data)
plt.title('Lowpass Filtered Signal')


plt.subplot(5, 1, 3)
plt.plot(t, bandpass_data)
plt.title('Bandpass Filtered Signal')


plt.subplot(5, 1, 4)
plt.plot(t, highpass_data)
plt.title('Highpass Filtered Signal')


plt.subplot(5, 1, 5)
plt.plot(t, bandstop_data)
plt.title('Bandstop Filtered Signal')
plt.tight_layout()
plt.show()

上述代碼中,我們首先生成了一個(gè)示例數(shù)據(jù) x,然后定義了一個(gè)名為 butterworth_filter 的函數(shù),用于設(shè)計(jì)和應(yīng)用 Butterworth 濾波器。接下來(lái),我們分別使用不同的截止頻率和濾波器類(lèi)型調(diào)用該函數(shù)來(lái)實(shí)現(xiàn)低通、帶通、高通和帶阻濾波。最后,我們使用 Matplotlib 庫(kù)繪制了原始信號(hào)和濾波后的信號(hào)。 請(qǐng)注意,以上示例僅用于演示如何使用 Butterworth 濾波器進(jìn)行低通、帶通、高通和帶阻濾波,實(shí)際應(yīng)用中需要根據(jù)具體需求調(diào)整截止頻率、階數(shù)和濾波器類(lèi)型等參數(shù)。

3.2 Chebyshev濾波器

原理:Chebyshev濾波器是一種具有優(yōu)良頻率選擇特性的IIR濾波器。它可以分為兩種類(lèi)型:Chebyshev Type I和Chebyshev Type II。Chebyshev Type I濾波器在通帶內(nèi)具有最小的幅度波紋,而Chebyshev Type II濾波器在阻帶內(nèi)具有最小的幅度波紋。

設(shè)計(jì):Chebyshev濾波器的設(shè)計(jì)需要指定濾波器的階數(shù)、截止頻率和幅度波紋。幅度波紋越小,阻帶衰減越大,濾波器的設(shè)計(jì)復(fù)雜度也相應(yīng)增加。

import numpy as np
from scipy.signal import cheby1, cheby2, filtfilt
import matplotlib.pyplot as plt


# 生成示例數(shù)據(jù)
fs = 1000  # 采樣頻率
t = np.arange(0, 1, 1/fs)  # 時(shí)間序列
x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 50 * t) + np.random.randn(len(t)) * 0.2  # 混合信號(hào)


# 定義Chebyshev濾波器函數(shù)
def chebyshev_filter(data, cutoff_freq, filter_type, order, rs, fs):
    nyquist_freq = 0.5 * fs
    cutoff = cutoff_freq / nyquist_freq


    if filter_type == 'lowpass':
        b, a = cheby1(order, rs, cutoff, btype='low', analog=False, output='ba')
    elif filter_type == 'highpass':
        b, a = cheby1(order, rs, cutoff, btype='high', analog=False, output='ba')
    elif filter_type == 'bandpass':
        b, a = cheby2(order, rs, cutoff, btype='bandpass', analog=False, output='ba')
    elif filter_type == 'bandstop':
        b, a = cheby2(order, rs, cutoff, btype='bandstop', analog=False, output='ba')
    else:
        raise ValueError('Invalid filter type')


    filtered_data = filtfilt(b, a, data)


    return filtered_data


# 設(shè)計(jì)并應(yīng)用低通濾波器
cutoff_freq = 30  # 截止頻率
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)


lowpass_data = chebyshev_filter(x, cutoff_freq, 'lowpass', order, rs, fs)


# 設(shè)計(jì)并應(yīng)用帶通濾波器
cutoff_freqs = [20, 80]  # 截止頻率范圍
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)


bandpass_data = chebyshev_filter(x, cutoff_freqs, 'bandpass', order, rs, fs)


# 設(shè)計(jì)并應(yīng)用高通濾波器
cutoff_freq = 50  # 截止頻率
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)


highpass_data = chebyshev_filter(x, cutoff_freq, 'highpass', order, rs, fs)


# 設(shè)計(jì)并應(yīng)用帶阻濾波器
cutoff_freqs = [40, 60]  # 截止頻率范圍
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)


bandstop_data = chebyshev_filter(x, cutoff_freqs, 'bandstop', order, rs, fs)


# 繪制原始信號(hào)和濾波后的信號(hào)
plt.figure(figsize=(10, 6))
plt.subplot(5, 1, 1)
plt.plot(t, x)
plt.title('Original Signal')


plt.subplot(5, 1, 2)
plt.plot(t, lowpass_data)
plt.title('Lowpass Filtered Signal')


plt.subplot(5, 1, 3)
plt.plot(t, bandpass_data)
plt.title('Bandpass Filtered Signal')


plt.subplot(5, 1, 4)
plt.plot(t, highpass_data)
plt.title('Highpass Filtered Signal')


plt.subplot(5, 1, 5)
plt.plot(t, bandstop_data)
plt.title('Bandstop Filtered Signal')


plt.tight_layout()
plt.show()

在上述代碼中,我們首先生成了一個(gè)示例數(shù)據(jù) x,然后定義了一個(gè)名為 chebyshev_filter 的函數(shù),用于設(shè)計(jì)和應(yīng)用Chebyshev濾波器。根據(jù)濾波器類(lèi)型,我們使用 cheby1 或 cheby2 函數(shù)來(lái)設(shè)計(jì)Chebyshev I類(lèi)或II類(lèi)濾波器系數(shù)。接下來(lái),我們分別使用不同的截止頻率、階數(shù)和阻帶衰減調(diào)用該函數(shù)來(lái)實(shí)現(xiàn)低通、帶通、高通和帶阻濾波。最后,我們使用Matplotlib庫(kù)繪制了原始信號(hào)和濾波后的信號(hào)。

3.3 橢圓濾波器

原理:橢圓濾波器是一種具有最 steepend 的衰減率和最小幅度波紋的IIR濾波器。它在通帶和阻帶內(nèi)都具有較小的幅度波紋,但在過(guò)渡帶中會(huì)有較寬的波紋。

設(shè)計(jì):橢圓濾波器的設(shè)計(jì)需要指定濾波器的階數(shù)、截止頻率、幅度波紋和過(guò)渡帶寬度。橢圓濾波器的設(shè)計(jì)較復(fù)雜,需要進(jìn)行頻域優(yōu)化,以實(shí)現(xiàn)所需的頻率響應(yīng)。

import numpy as np
from scipy.signal import ellip, filtfilt
import matplotlib.pyplot as plt


# 生成示例數(shù)據(jù)
fs = 1000  # 采樣頻率
t = np.arange(0, 1, 1/fs)  # 時(shí)間序列
x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 50 * t) + np.random.randn(len(t)) * 0.2  # 混合信號(hào)


# 定義橢圓濾波器函數(shù)
def ellip_filter(data, cutoff_freq, filter_type, order, rs, rp, fs):
    nyquist_freq = 0.5 * fs
    cutoff = cutoff_freq / nyquist_freq


    if filter_type == 'lowpass':
        b, a = ellip(order, rp, rs, cutoff, btype='low', analog=False, output='ba')
    elif filter_type == 'highpass':
        b, a = ellip(order, rp, rs, cutoff, btype='high', analog=False, output='ba')
    elif filter_type == 'bandpass':
        lower_cutoff = cutoff[0]
        upper_cutoff = cutoff[1]
        b, a = ellip(order, rp, rs, [lower_cutoff, upper_cutoff], btype='bandpass', analog=False, output='ba')
    elif filter_type == 'bandstop':
        lower_cutoff = cutoff[0]
        upper_cutoff = cutoff[1]
        b, a = ellip(order, rp, rs, [lower_cutoff, upper_cutoff], btype='bandstop', analog=False, output='ba')
    else:
        raise ValueError('Invalid filter type')


    filtered_data = filtfilt(b, a, data)


    return filtered_data


# 設(shè)計(jì)并應(yīng)用低通濾波器
cutoff_freq = 30  # 截止頻率
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)
rp = 1  # 通帶最大衰減(單位:dB)


lowpass_data = ellip_filter(x, cutoff_freq, 'lowpass', order, rs, rp, fs)


# 設(shè)計(jì)并應(yīng)用帶通濾波器
cutoff_freqs = [20, 80]  # 截止頻率范圍
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)
rp = 1  # 通帶最大衰減(單位:dB)


bandpass_data = ellip_filter(x, cutoff_freqs, 'bandpass', order, rs, rp, fs)


# 設(shè)計(jì)并應(yīng)用高通濾波器
cutoff_freq = 50  # 截止頻率
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)
rp = 1  # 通帶最大衰減(單位:dB)


highpass_data = ellip_filter(x, cutoff_freq, 'highpass', order, rs, rp, fs)


# 設(shè)計(jì)并應(yīng)用
# 設(shè)計(jì)并應(yīng)用帶阻濾波器
cutoff_freqs = [40, 60]  # 截止頻率范圍
order = 4  # 階數(shù)
rs = 60  # 阻帶衰減(單位:dB)
rp = 1  # 通帶最大衰減(單位:dB)


bandstop_data = ellip_filter(x, cutoff_freqs, 'bandstop', order, rs, rp, fs)


# 繪制原始信號(hào)和濾波后的信號(hào)
plt.figure(figsize=(10, 6))
plt.subplot(5, 1, 1)
plt.plot(t, x)
plt.title('Original Signal')


plt.subplot(5, 1, 2)
plt.plot(t, lowpass_data)
plt.title('Lowpass Filtered Signal')


plt.subplot(5, 1, 3)
plt.plot(t, bandpass_data)
plt.title('Bandpass Filtered Signal')


plt.subplot(5, 1, 4)
plt.plot(t, highpass_data)
plt.title('Highpass Filtered Signal')


plt.subplot(5, 1, 5)
plt.plot(t, bandstop_data)
plt.title('Bandstop Filtered Signal')


plt.tight_layout()
plt.show()

在上述代碼中,我們首先生成了一個(gè)示例數(shù)據(jù) x,然后定義了一個(gè)名為 ellip_filter 的函數(shù),用于設(shè)計(jì)和應(yīng)用橢圓濾波器。根據(jù)濾波器類(lèi)型,我們使用 ellip 函數(shù)來(lái)設(shè)計(jì)橢圓濾波器系數(shù)。接下來(lái),我們分別使用不同的截止頻率、階數(shù)、阻帶衰減和通帶最大衰減調(diào)用該函數(shù)來(lái)實(shí)現(xiàn)低通、帶通、高通和帶阻濾波。最后,我們使用Matplotlib庫(kù)繪制了原始信號(hào)和濾波后的信號(hào)。

3.4 Bessel濾波器

原理:Bessel濾波器是一種具有線性相位特性的IIR濾波器。它具有平滑的幅度響應(yīng)和最小的相位失真,能夠保持信號(hào)的波形形狀。Bessel濾波器對(duì)于保持信號(hào)的相位一致是非常有效的選擇。

設(shè)計(jì):Bessel濾波器的設(shè)計(jì)相對(duì)簡(jiǎn)單,主要需要指定濾波器的階數(shù)和截止頻率。

import numpy as np
from scipy.signal import bessel, filtfilt
import matplotlib.pyplot as plt


# 生成示例數(shù)據(jù)
fs = 1000  # 采樣頻率
t = np.arange(0, 1, 1/fs)  # 時(shí)間序列
x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 50 * t) + np.random.randn(len(t)) * 0.2  # 混合信號(hào)


# 定義Bessel濾波器函數(shù)
def bessel_filter(data, cutoff_freq, filter_type, order, fs):
    nyquist_freq = 0.5 * fs
    cutoff = cutoff_freq / nyquist_freq


    if filter_type == 'lowpass':
        b, a = bessel(order, cutoff, btype='low', analog=False, output='ba')
    elif filter_type == 'highpass':
        b, a = bessel(order, cutoff, btype='high', analog=False, output='ba')
    elif filter_type == 'bandpass':
        lower_cutoff = cutoff[0]
        upper_cutoff = cutoff[1]
        b, a = bessel(order, [lower_cutoff, upper_cutoff], btype='bandpass', analog=False, output='ba')
    elif filter_type == 'bandstop':
        lower_cutoff = cutoff[0]
        upper_cutoff = cutoff[1]
        b, a = bessel(order, [lower_cutoff, upper_cutoff], btype='bandstop', analog=False, output='ba')
    else:
        raise ValueError('Invalid filter type')


    filtered_data = filtfilt(b, a, data)


    return filtered_data


# 設(shè)計(jì)并應(yīng)用低通濾波器
cutoff_freq = 30  # 截止頻率
order = 4  # 階數(shù)


lowpass_data = bessel_filter(x, cutoff_freq, 'lowpass', order, fs)


# 設(shè)計(jì)并應(yīng)用帶通濾波器
cutoff_freqs = [20, 80]  # 截止頻率范圍
order = 4  # 階數(shù)


bandpass_data = bessel_filter(x, cutoff_freqs, 'bandpass', order, fs)


# 設(shè)計(jì)并應(yīng)用高通濾波器
cutoff_freq = 50  # 截止頻率
order = 4  # 階數(shù)


highpass_data = bessel_filter(x, cutoff_freq, 'highpass', order, fs)


# 設(shè)計(jì)并應(yīng)用帶阻濾波器
cutoff_freqs = [40, 60]  # 截止頻率范圍
order = 4  # 階數(shù)


bandstop_data = bessel_filter(x, cutoff_freqs, 'bandstop', order, fs)


# 繪制原始信號(hào)和濾波后的信號(hào)
plt.figure(figsize=(10, 6))
plt.subplot(5, 1, 1)
plt.plot(t, x)
plt.title('Original Signal')


plt.subplot(5, 1, 2)
plt.plot(t, lowpass_data)
plt.title('Lowpass Filtered Signal')


plt.subplot(5, 1, 3)
plt.plot(t, bandpass_data)
plt.title('Bandpass Filtered Signal')


plt.subplot(5, 1, 4)
plt.plot(t, highpass_data)
plt.title('Highpass Filtered Signal')


plt.subplot(5, 1, 5)
plt.plot(t, bandstop_data)
plt.title('Bandstop Filtered Signal')


plt.tight_layout()
plt.show()

在上述代碼中,我們首先生成了一個(gè)示例數(shù)據(jù) x,然后定義了一個(gè)名為 bessel_filter 的函數(shù),用于設(shè)計(jì)和應(yīng)用Bessel濾波器。根據(jù)濾波器類(lèi)型,我們使用 bessel 函數(shù)來(lái)設(shè)計(jì)Bessel濾波器系數(shù)。接下來(lái),我們分別使用不同的截止頻率、階數(shù)調(diào)用該函數(shù)來(lái)實(shí)現(xiàn)低通、帶通、高通和帶阻濾波。最后,我們使用Matplotlib庫(kù)繪制了原始信號(hào)和濾波后的信號(hào)。

選擇適當(dāng)?shù)腎IR濾波器類(lèi)型取決于應(yīng)用需求。例如,如果需要平滑的頻率響應(yīng)和線性相位特性,則Bessel濾波器是一個(gè)不錯(cuò)的選擇。如果需要在通帶或阻帶內(nèi)具有更小的幅度波紋,則可以考慮Chebyshev濾波器。而如果需要最大的衰減率和最小的幅度波紋,則橢圓濾波器可能是更合適的選擇。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16028

    瀏覽量

    176647
  • 數(shù)字濾波器
    +關(guān)注

    關(guān)注

    4

    文章

    266

    瀏覽量

    46950
  • 衰減器
    +關(guān)注

    關(guān)注

    4

    文章

    632

    瀏覽量

    34250
  • IIR濾波器
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    11486
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    全文詳解IIR濾波器原理與設(shè)計(jì)方法

    IIR濾波器具有很高的濾波效率,在相同幅頻響應(yīng)條件下,所需的濾波器階數(shù)明顯比FIR濾波器低。其次,IIR
    發(fā)表于 01-22 09:25 ?8512次閱讀
    全文詳解<b class='flag-5'>IIR</b><b class='flag-5'>濾波器</b>原理與設(shè)計(jì)方法

    FIR濾波器IIR濾波器的區(qū)別與特點(diǎn)

    本帖最后由 xie0517 于 2016-8-8 08:52 編輯 FIR是有限沖擊響應(yīng);IIR是無(wú)限沖擊響應(yīng)。 FIR和IIR濾波器的一個(gè)主要區(qū)別:FIR是線性相位,IIR為非
    發(fā)表于 08-08 08:49

    FIR濾波器IIR濾波器的區(qū)別與特點(diǎn)

    FIR和IIR濾波器的一個(gè)主要區(qū)別:FIR是線性相位,IIR為非線性相位(雙線性變換法),對(duì)于非線性相位會(huì)造成的影響,可以這樣考慮:對(duì)于輸入的不同頻率分量,造成的相位差與頻率不成正比,則輸出
    發(fā)表于 03-12 13:21

    iir濾波器學(xué)習(xí)

    基本的公式:系統(tǒng)函數(shù):差分方程:再來(lái)說(shuō)一下該濾波器的結(jié)構(gòu):a.直接I型b.直接II型(典范型)c.級(jí)聯(lián)型d.并聯(lián)型bcd三種類(lèi)型都是從直接I型轉(zhuǎn)化而來(lái)的,這是第二個(gè)最基本的認(rèn)識(shí)。iir濾波器
    發(fā)表于 08-17 07:08

    基于MATLAB與CCS的IIR濾波器設(shè)計(jì)

    基于MATLAB與CCS的IIR濾波器設(shè)計(jì)
    發(fā)表于 11-02 11:23 ?81次下載

    基于DSP的IIR濾波器的設(shè)計(jì)

    基于DSP的IIR濾波器的設(shè)計(jì),下來(lái)看看
    發(fā)表于 06-03 15:37 ?48次下載

    IIR濾波器

    matlab設(shè)計(jì)iir濾波器,iir實(shí)現(xiàn)和濾波后結(jié)果以及matlab和fpga聯(lián)調(diào),fpga的verilog源代碼,testbeach實(shí)現(xiàn)。
    發(fā)表于 12-12 20:39 ?56次下載

    詳解FIR濾波器IIR濾波器的區(qū)別

    數(shù)字濾波器廣泛應(yīng)用于硬件電路設(shè)計(jì),一般分為FIR濾波器IIR濾波器。那么FIR濾波器IIR
    發(fā)表于 05-03 11:36 ?20次下載

    詳解FIR濾波器IIR濾波器區(qū)別

    數(shù)字濾波器廣泛應(yīng)用于硬件電路設(shè)計(jì),在離散系統(tǒng)中尤為常見(jiàn),一般可以分為FIR濾波器IIR濾波器,那么他們有什么區(qū)別和聯(lián)系呢。
    發(fā)表于 05-04 15:52 ?6089次閱讀
    詳解FIR<b class='flag-5'>濾波器</b>和<b class='flag-5'>IIR</b><b class='flag-5'>濾波器</b>區(qū)別

    IIR與FIR濾波器的比較和區(qū)別

    兩種濾波器都是數(shù)字濾波器。根據(jù)沖激響應(yīng)的不同,將數(shù)字濾波器分為有限沖激響應(yīng)(FIR)濾波器和無(wú)限沖激響應(yīng)(IIR
    發(fā)表于 11-12 10:02 ?4.8w次閱讀

    IIR濾波器和FIR濾波器詳細(xì)對(duì)比

    1.兩種濾波器都是數(shù)字濾波器。根據(jù)沖激響應(yīng)的不同,將數(shù)字濾波器分為有限沖激響應(yīng)(FIR)濾波器和無(wú)限沖激響應(yīng)(IIR
    發(fā)表于 10-30 10:40 ?5次下載
    <b class='flag-5'>IIR</b><b class='flag-5'>濾波器</b>和FIR<b class='flag-5'>濾波器</b>詳細(xì)對(duì)比

    FIR濾波器IIR濾波器到底有什么區(qū)別

    你知道FIR濾波器IIR濾波器的不同點(diǎn)嗎?它有有什么特點(diǎn)?濾波器是工程師工作中必不可少的器件,濾波器分為很多種,本文詳細(xì)介紹一下FIR
    發(fā)表于 08-09 14:15 ?3.3w次閱讀
    FIR<b class='flag-5'>濾波器</b>與<b class='flag-5'>IIR</b><b class='flag-5'>濾波器</b>到底有什么區(qū)別

    FIR濾波器IIR濾波器的區(qū)別與聯(lián)系

    1.根據(jù)沖激響應(yīng)的不同,將數(shù)字濾波器分為有限沖激響應(yīng)(FIR)濾波器和無(wú)限沖激響應(yīng)(IIR濾波器。對(duì)于FIR濾波器,沖激響應(yīng)在有限時(shí)間內(nèi)衰
    的頭像 發(fā)表于 12-30 23:45 ?3429次閱讀

    IIR濾波器和FIR濾波器的區(qū)別

    數(shù)字濾波器是數(shù)字信號(hào)處理中最常用的一種技術(shù),可以對(duì)數(shù)字信號(hào)進(jìn)行濾波、降噪、增強(qiáng)等處理,其中最常見(jiàn)的兩種數(shù)字濾波器IIR濾波器和FIR
    的頭像 發(fā)表于 06-03 10:21 ?1.8w次閱讀

    iir濾波器和fir濾波器的優(yōu)勢(shì)和特點(diǎn)

    IIR濾波器和FIR濾波器是數(shù)字信號(hào)處理領(lǐng)域中兩種非常重要的濾波器類(lèi)型。它們各自具有獨(dú)特的優(yōu)勢(shì)和特點(diǎn),適用于不同的應(yīng)用場(chǎng)景。本文將介紹IIR
    的頭像 發(fā)表于 07-19 09:28 ?671次閱讀