专业:信息通信工程 学号: 姓名:
1 设计 CQMFB低通滤波器 半带滤波器该半带滤波器长度47通带截止频率试出幅频响应单位抽样响应
2 产生信号两正弦加白噪声组成低频高频正弦频率白噪声信噪定试设计滤波器组该信号进行分解重建较重建效果
设计思路:参课181页
(1) 首先设计半带滤波器N47042根第六章半带滤波器设计思路先Chebyshew佳致逼法设计单带滤波器G(z)令通带截止频率2084长度2J24单带滤波器半带滤波器通时域g(n)作二倍插值令插值序列中心点位05结果:
(2)半带滤波器进行处理幅频响应非负半带滤波器
方法:令中间度滤波器:假定零相位实现式简单办法令:
令半带滤波器非负
产生半带滤波器幅频响应:
零极分析图:
面左图图出46极零点中11零点单位圆11零点单位圆外余24零点单位圆 做谱分解CQFMB言谱分解佳选择成相位系统取单位圆11零点12单位圆零点赋予 构造出符合求幅频响应单位抽样响应时根 间应关系容易3滤波器幅频响应单位抽样响应结果:
数幅频响应图 :
面产生信号检验刚设计滤波器组实际性产生信号 包含两正弦信号频率分 包含幅值 02 高斯白噪计算 信噪 SNR196040dB抽样频率 200Hz刚设计滤波器组进行处理信号
程序:
clear all
close all
N0512
First step To design a oneband filter G(z) by Chebyshev approximation
set the cutoff frequency of the G(w)
F[0 084 1 1]
A[1 1 0 0]
N23
Bfirpm(NFA)
a1
wf0piN0pi*(N01)N0
wff01N0(N01)N0
Gwfreqz(Bawf)
Ewexp(i*N*wf2)
Grreal(Gw*Ew)
gnimpz(BaN)
plot the response curve
figure(1)
subplot(211)
plot(wffreal(Gr))grid on
title('singleband filt G(jw)')
subplot(212)
stem((1N)gn'filled')
title('singleband filt g(n)')
hold on
plot((0N)zeros(N+1)'b')grid on
To obtain halfband filter P(z) from G(z)
F(z)[G(z^2)+(N1)2]2
N147
slength(B)
B2zeros(12*s1)
for k1s
B2(k*21)B(k)
end
N2length(B2)
B2(N+1)1+B2(N+1)
B2B22
Pwfreqz(B2awf)
Ewexp(i*N*wf)
Prreal(Pw*Ew)
pnimpz(B2aN1)
figure(2)
subplot(211)
plot(wffPr)grid on
title('halfband filt H(jw)')
subplot(212)
stem(pn'filled')grid on
title('halfband filt h(n) ')
hold on
plot((0N1)zeros(N1+1)'b')grid on
Modify P(z) and prepare to do spectrum decomposition
minPmin(Pr)
B2(N+1)B2(N+1)+abs(minP)
B3B2*05(05+abs(minP))
Pw0freqz(B3awf)
Ewexp(i*N*wf)
Pr0real(Pw0*Ew)
figure
plot(wffPr0)grid
title('Impulse Response of P(z)')
Spectrum Analysis
A0zeros(1N1)
A0(1)1
figure(3)
subplot(121)
zplane(B3A0)
title('the zeros and poles before resolve P(z)')
[ZPK]tf2zp(B3A0)
Z1sort(Z)
lllength(Z1)2
ZZZ1(1ll)
temp1
for m1ll
temp(ZZ(m))*temp
end
if imag(temp)<00001
tempreal(temp)
else
disp('Spectrum Decomposition Failed')
end
KKsqrt(Ktemp)
l2length(ZZ)
PPzeros(l21)
[H0NumH0Den]zp2tf(ZZPPKK)
subplot(122)
zplane(H0NumH0Den)
title('the zeros and poles after resolve H_0(z)')
H1Numqmf(H0Num1)
G0Numwrev(H0Num)
G1Numqmf(G0Num)
H0
H0wfreqz(H0NumH0Denwf)
h0nimpz(H0NumH0Den)
figure(4)
subplot(211)
plot(wffabs(H0w))grid on
title('AmplitudeFrequency Response of H_0(z)')
subplot(212)
stem(h0n'filled')
grid on
title('Impulse Response of H_0(z)')
hold on
plot((0N)zeros(N+1)'b')grid on
H1
H1wfreqz(H1NumH0Denwf)
Ewexp(i*N*wf)
H1rreal(H1w*Ew)
h1nimpz(H1NumH0Den)
figure(5)
subplot(211)
plot(wffabs(H1w))grid on
title('AmplitudeFrequency Response of H_1(z)')
subplot(212)
stem(h1n'filled')grid on
title('Impulse Response of H_1(z)')
hold on
plot((0N)zeros(N+1)'b')grid on
G0
G0wfreqz(G0NumH0Denwf)
g0nimpz(G0NumH0Den)
figure(6)
subplot(211)
plot(wffabs(G0w))grid on
title('AmplitudeFrequency Response of G_0(z)')
subplot(212)
stem(g0n'filled')grid on
title('Impulse Response of G_0(z)')
hold on
plot((0N)zeros(N+1)'b')grid on
G1
G1wfreqz(G1NumH0Denwf)
g1nimpz(G1NumH0Den)
figure(7)
subplot(211)
plot(wffabs(G1w))grid on
title('AmplitudeFrequency Response of G_1(z)')
subplot(212)
stem(g1n'filled')grid on
title('Impulse Response of G_1(z)')
hold on
plot((0N)zeros(N+1)'b')grid on
features of filter group
[H0w] freqz(h0na)
[H1w] freqz(h1na)
absH0abs(H0)
absH1abs(H1)
ah020*log10(absH0)
ah120*log10(absH1)
figure(8)
plot(wffah0'k'wffah1'b')
grid on
xlabel('wpi')ylabel('|H_0(e^j^w)|dB|H_1(e^j^w)|dB')
sumhabsH0*absH0+absH1*absH1
sum10*log10(sumh)
save H_filters h0n
disp('Press any key to process a signal using the filters')
pause
clear all
close all
load H_filters
h0h0n
h1qmf(h01)
g0wrev(h0)
g1qmf(g0)
fs200f18f230
step15
N1000n1N
Sig12*sin(2*pi*f1*nfs)
Sig22*sin(2*pi*f2*nfs)
P1var(Sig1+Sig2)
Nos02*randn(N1)
P2var(Nos)
snr10*log10(P1P2)
SigSig1'+Sig2'+Nos
signal v0(n) and v1(n) after decompositon and decimation
x0filter(h01Sig)
v0decimate(x02) low pass
x1filter(h11Sig)
v1decimate(x12) high pass
reconstructed signal by filter [g0(n) g1(n) ]
u0interp(v02)
u1interp(v12)
x_reconfilter(g01u0)+filter(g11u1)
figure(9)
subplot(311)
plot(Sig(100200))
grid
ylabel('x(n)')
subplot(312)
plot(x_recon(100+step200+step))gridylabel('x(n)approx')
subplot(313)
plot(Sig(100200)'k')
grid
hold on
plot(x_recon(100+step200+step)'b')ylabel('x(n)x(n)approx')
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档