Professional Documents
Culture Documents
Especificações: fa = 4MHz
fp1 = 900kHz
fp2 = 1100kHz
fr1 = 800kHz
fr2 = 1200kHz
δp = 0.01
Out[4]:
In [5]: plot(ω/π, unwrap(angle.(Hr)), label = "fase", xlabel = L"\omega/\pi")
Out[5]:
Out[11]: 160
nj = 0:Nj-1
plot(nj, jan, line = :stem, marker = (:circle, 3), xlabel = "n", label =
Out[12]:
In [13]: Lj = (Nj-1)/2
hdj = hpbd.(nj .- Lj)
hj = hdj .* jan
plot(nj, hj, line = :stem, marker = (:circle, 3), xlabel = L"n",
label = L"h_{\text{jan}}[n]")
Out[13]:
Out[14]:
Projeto com janela de Kaiser
In [15]: """
filtrokaiser(ωp, ωr, δp, δr)
Projeta filtro FIR com janela de Kaiser.
Se `ωp > ωr`, o filtro projetado é passa-altas tipo I.
"""
function kaiserlength(Δω, δp, δr)
A = -20log10(min(δp, δr))
N = ceil(Int, (A-8)/(2.285*Δω) +1)
if A < 21
β = 0
elseif A <= 50
β = 0.5842(A-21)^0.4 + 0.07886(A-21)
else
β = 0.1102(A-8.7)
end
return β,N
end
Out[15]: kaiserlength
In [17]: nk = 0:Nk-1
wk = kaiser(Nk, β/π)
plot(nk, wk, line = :stem, marker = (:circle, 3), xlabel = "n", label = "Janela
Out[17]:
In [18]: Lk = (Nk - 1) / 2
hk = hpbd.(nk .- Lk) .* wk
plot(nk, hk, line = :stem, marker = (:circle, 3), xlabel = "n", label = "hk[n]"
Out[18]:
Projeto min-max
In [20]: Nmm = ceil(Int, (-10log10(δp*δr)-13) / (2.324*Δω)) + 13 # Ajuste para atender à
Out[20]: 101
In [21]: hmm = remez(Nmm-1, [(0, ωr1/π) => (0, δp/δr), (ωp1/π, ωp2/π) => (1, 1),
(ωr2/π, 1) => (0, δp/δr)]; Hz = 2)
hpbmmf = PolynomialRatio(hmm, [1])
Hpbmm = freqresp(hpbmmf, ω)
In [ ]:
In [ ]: