Ejemplo n.º 1
0
#
L = 44 # Manuelle Vorgabe Filterordnung
############## FIR-Filterentwurf ##########
a = [1] # Nennerpolynom = 1 bei FIR-Filtern
#=== Windowed FIR / Least Square =========
F_c  = f_DB / (f_S/2)  # -6dB - Frequenz
b = sig.firwin(L, F_c) # Hamming-Window
#=== Frequency Sampling ==================
b = sig.firwin2(L, [0, F_DB, F_SB, 1],
           [1, 1, 0, 0])
#=== REMEZ / Parks-McClellan / Equiripple
W_DB = 1;  W_SB = 1 # manuelle Ordnung:
b = sig.remez(L, [0, F_DB, F_SB, 1],
            [0, 1], [W_DB, W_SB], Hz = 2)
# minimale Ordnung:
(L_min,F,A,W) = dsp.remezord([F_DB, F_SB],
    [1, 0], [A_DB_lin, A_SB_lin], Hz = 2)
b = sig.remez(L_min, F, A, W )
##############  IIR-Filterentwurf  ########
#=== Butterworth Filter===================
[Lb,F_b] = sig.buttord(F_DB,F_SB,A_DB,A_SB)
#[b, a] = sig.butter(Lb, F_b)
#=== IIR-Wrapper (nur Python) =====
#[b, a] = sig.iirdesign(F_DB, F_SB,
#              A_DB, A_SB, ftype='ellip')
############################################
print('Filterkoeffizienten:')
print('a = ', a); print('b = ', b)
## Calculate H(w), w = 0 ... pi, 1024 Pts.
[w, H] = sig.freqz(b, a, 1024)
# Translate w to physical frequencies:
f = w / (2 * pi) * f_S
Ejemplo n.º 2
0
F_DB = 0.08  # corner of passband
F_SB = 0.12  # corner of stopband
# L = 32 # manual filter order
N_plt = 1000  # Number of plotted samples
N_show = 400  # Number of displayed samples

Pe = 0.5 * erfc(sqrt(SNR))  # theoretical error probability
# for BPSK
VEC_SIZE = max(np.ceil(100 / Pe), 10000)  # minimum vector length f(Pe)
# for estimating the SNR
# ====== Filter ================================
#
b = ones(4)
a = 1  # MA filter
# Parks-McClellan / Remez (= Linphase FIR) - Filter:
L, bands, amps, w = dsp.remezord([F_DB, F_SB], [1, 0], [del_DB, del_SB])
# b = sig.remez(L, [0, F_DB, F_SB, 0.5], [1, 0], [1, 1], Hz = 1)
b = sig.remez(L, bands, amps, w)

# IIR-Filter
[b, a] = sig.iirdesign(F_DB * 2, F_SB * 2, R_DB, R_SB, ftype="ellip")
# [b, a] = sig.iirdesign(F_DB*2, F_SB*2, R_DB, R_SB, ftype='cheby2')
# [b, a] = sig.iirdesign(F_DB*2, F_SB*2, R_DB, R_SB, ftype='butter')
# b = [0.2]; a = [1, -0.8]
#
# ================================================
w, H = sig.freqz(b, a, 2048)
Hmax = max(abs(H))
H = H / Hmax
tau, w = dsp.grpdelay(b, a, 2048)
f = w / (2 * pi)
Ejemplo n.º 3
0
A_SB_lin = 10**(-A_SB / 20.0)  # und linear
#
L = 44  # Manuelle Vorgabe Filterordnung
############## FIR-Filterentwurf ##########
a = [1]  # Nennerpolynom = 1 bei FIR-Filtern
#=== Windowed FIR / Least Square =========
F_c = f_DB / (f_S / 2)  # -6dB - Frequenz
b = sig.firwin(L, F_c)  # Hamming-Window
#=== Frequency Sampling ==================
b = sig.firwin2(L, [0, F_DB, F_SB, 1], [1, 1, 0, 0])
#=== REMEZ / Parks-McClellan / Equiripple
W_DB = 1
W_SB = 1  # manuelle Ordnung:
b = sig.remez(L, [0, F_DB, F_SB, 1], [0, 1], [W_DB, W_SB], Hz=2)
# minimale Ordnung:
(L_min, F, A, W) = dsp.remezord([F_DB, F_SB], [1, 0], [A_DB_lin, A_SB_lin],
                                Hz=2)
b = sig.remez(L_min, F, A, W)
##############  IIR-Filterentwurf  ########
#=== Butterworth Filter===================
[Lb, F_b] = sig.buttord(F_DB, F_SB, A_DB, A_SB)
#[b, a] = sig.butter(Lb, F_b)
#=== IIR-Wrapper (nur Python) =====
#[b, a] = sig.iirdesign(F_DB, F_SB,
#              A_DB, A_SB, ftype='ellip')
############################################
print('Filterkoeffizienten:')
print('a = ', a)
print('b = ', b)
## Calculate H(w), w = 0 ... pi, 1024 Pts.
[w, H] = sig.freqz(b, a, 1024)
# Translate w to physical frequencies:
Ejemplo n.º 4
0
F_DB = 0.08  # corner of passband
F_SB = 0.12  # corner of stopband
#L = 32 # manual filter order
N_plt = 1000  # Number of plotted samples
N_show = 400  # Number of displayed samples

Pe = 0.5 * erfc(sqrt(SNR))  # theoretical error probability
# for BPSK
VEC_SIZE = max(np.ceil(100 / Pe), 10000)  # minimum vector length f(Pe)
# for estimating the SNR
#====== Filter ================================
#
b = ones(4)
a = 1  # MA filter
# Parks-McClellan / Remez (= Linphase FIR) - Filter:
L, bands, amps, w = dsp.remezord([F_DB, F_SB], [1, 0], [del_DB, del_SB])
#b = sig.remez(L, [0, F_DB, F_SB, 0.5], [1, 0], [1, 1], Hz = 1)
b = sig.remez(L, bands, amps, w)

# IIR-Filter
[b, a] = sig.iirdesign(F_DB * 2, F_SB * 2, R_DB, R_SB, ftype='ellip')
#[b, a] = sig.iirdesign(F_DB*2, F_SB*2, R_DB, R_SB, ftype='cheby2')
#[b, a] = sig.iirdesign(F_DB*2, F_SB*2, R_DB, R_SB, ftype='butter')
#b = [0.2]; a = [1, -0.8]
#
#================================================
w, H = sig.freqz(b, a, 2048)
Hmax = max(abs(H))
H = H / Hmax
tau, w = dsp.grpdelay(b, a, 2048)
f = w / (2 * pi)