Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
X31ZZS – 7. PŘEDNÁŠKA 10. listopadu 2014
• Jednoduché číslicové filtry
– Klouzavé průměry
– Úzkopásmové zádrže
– Diferenciátory
– Hřebenové filtry
– Karplusův – Strongův algoritmus
– Fázovací filtry
– Audio efekty založené na časovém zpoždění
– Schroederův algoritmus modelování dozvuku
Filtr klouzavých průměrů I
,...1,0,]1[]1[][1
][ nNnxnxnxN
ny
)1(
11111
1)(
11
2111
zz
z
Nz
zz
Nzz
NzH
N
N
N
NNN
Filtr klouzavých průměrů II
0 0.5 1
-55
-50
-45
-40
-35
-30
-25
-20
-15
-10
-5
0
--->
--->
|H
(exp(j*
))|
3-bodovy klouzavy prumer (MA filtr)
0 20 40 600
0.05
0.1
0.15
0.2
0.25
0.3
---> n [vzorky]
Impuls
ní
ch.
-1 -0.5 0 0.5 1
-1.5
-1
-0.5
0
0.5
1
1.5
2
---> Re
--->
Im
0 0.5 1-60
-50
-40
-30
-20
-10
0
--->
--->
|H
(exp(j*
))|
20-bodovy klouzavy prumer (MA filtr)
0 20 40 600
0.005
0.01
0.015
0.02
0.025
0.03
0.035
0.04
0.045
0.05
---> n [vzorky]
Impuls
ní
ch.
-1 -0.5 0 0.5 1
-1.5
-1
-0.5
0
0.5
1
1.5
19
---> Re
--->
Im
Filtr klouzavých průměrů III
0 0.5 1-60
-40
-20
0
---> w
--->
|H
(exp(j*w
))|
100-bodovy klouzavy prumer (MA filtr)
0 10 20 30 400
0.002
0.004
0.006
0.008
0.01Im
puls
ní
ch.
---> n (vzorky)
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
---> Re
--->
Im 99
500 1000 1500 2000 2500 3000 3500 4000-1
0
1KLOUZAVE PRUMERY
original
500 1000 1500 2000 2500 3000 3500 4000
0.20.40.60.8 3-bodovy kl.prumer
500 1000 1500 2000 2500 3000 3500 4000
0.2
0.4
0.620-bodovy kl.prumer
500 1000 1500 2000 2500 3000 3500 4000
0.1
0.2
0.3100-bodovy kl.prumer
Filtr klouzavých průměrů IV
0 0.1 0.2 0.3 0.4 0.5 0.6
-0.5
0
0.5
1
0 0.1 0.2 0.3 0.4 0.5 0.6
-80
-60
-40
-20
0 0.1 0.2 0.3 0.4 0.5 0.60
0.2
0.4
0.6
E = 10*log10(filter(ones(1,512),1,x.^2)./512);
Z = [0;filter(ones(1,512),1,abs(diff(x>0)))./512];
Y = E>-30|E>-45&Z>2000;
Úzkopásmová zádrž IIR I
]2[]1[cos2]2[]1[cos2][][ 2
0
2
0 nxrnxrnxRnxRnxny
2
0
2
2
0
2
221
0
221
0
cos2
cos2
cos21
cos21)(
rzrz
RzRz
zrzr
zRzRzH
Úzkopásmová zádrž IIR II
0 0.5 1
-300
-250
-200
-150
-100
-50
0
--->
--->
|H
(exp(j*
))|
Priklad potlaceni frekvence (fr=fs/10)
0 20 40 60
-0.2
0
0.2
0.4
0.6
0.8
---> n [vzorky]
Impuls
ní
ch.
-1 -0.5 0 0.5 1
-1.5
-1
-0.5
0
0.5
1
1.5
---> Re
--->
Im
0 0.5 1-6
-5
-4
-3
-2
-1
0
1
--->
--->
|H
(exp(j*
))|
Filtr pro potlaceni ss slozky
0 20 40 600
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
---> n [vzorky]
Impuls
ní
ch.
-1 -0.5 0 0.5 1
-1.5
-1
-0.5
0
0.5
1
1.5
---> Re
--->
Im
Úzkopásmová zádrž IIR III
0 50 100 150 200 250 300 350 400 450 500-0.5
0
0.5
1EKG signal + rusivych 50 Hz
0 50 100 150 200 250 300 350 400 450 500-0.5
0
0.5
1EKG signal + potlacenych 50 Hz (notch filtr)
500 1000 1500 2000 2500 3000 3500 40000
0.5
1
1.5
2recovy signal se ss slozkou
500 1000 1500 2000 2500 3000 3500 4000-1
-0.5
0
0.5
1
potlaceni ss slozky
Potlačení 50 Hz v EKG signálu
f_s = 500;
f_r = 50;
R = 1;
r = 0.8;
b = [1 -2*R*cos(2*pi*f_r/f_s) R*R];
a = [1 -2*r*cos(2*pi*f_r/f_s) r*r];
load ecg;
signal=ecg; signal=signal/max(abs(signal));
subplot(211), plot(signal(1:500))
title('EKG signal + rusivych 50 Hz')
f_signal=filter(b,a,signal);
subplot(212), plot(f_signal(1:500))
title('EKG signal + potlacenych 50 Hz (notch filtr)')
%pacient je po infarktu
Diferenciátory
]1[][][ nxnxny
]2[][5,0][ nxnxny
4[2]3[]1[][21,0][ nxnxnxnxny
0 0.5 1-60
-40
-20
0
20
---> w
--->
|H
(exp(j*w
))|
2b. diferenciator
0 10 20 30 40-1
-0.5
0
0.5
1
Impuls
ní
ch.
---> n (vzorky)
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
---> Re
--->
Im
0 0.5 1-50
-40
-30
-20
-10
0
---> w
--->
|H
(exp(j*w
))|
3b. diferenciator
0 10 20 30 40-0.5
0
0.5
Impuls
ní
ch.
---> n (vzorky)
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
---> Re
--->
Im 2
0 0.5 1-60
-40
-20
0
---> w
--->
|H
(exp(j*w
))|
5b. diferenciator
0 10 20 30 40-0.2
-0.1
0
0.1
0.2
Impuls
ní
ch.
---> n (vzorky)
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
---> Re
--->
Im 4
Diferenciátory
1000 2000 3000
0
0.5
1Detekce R spicek v EKG signalu
original
1000 2000 3000
0.02
0.04
0.06 2b. diferenciator
1000 2000 3000
0.02
0.043b. diferenciator
1000 2000 3000
0.01
0.02
0.035b. diferenciator
20 40 60
00.20.40.60.8
detail
20 40 60
0.02
0.04
0.06
20 40 60
0.02
0.04
20 40 60
0.01
0.02
0.03
po vyhlazeni
20 40 60
0.01
0.02
0.03
20 40 60
0.01
0.02
0.03
20 40 60
0.0050.01
0.0150.02
Hřebenový FIR filtr
D
DD
z
gzzgzH
1)(
][][][ Dnxgnxny
0 0.5 1-20
-15
-10
-5
0
5
---> w
--->
|H
(exp(j*w
))|
Hrebenovy FIR filtr 6.radu
+g
-g
0 10 20 30 400
0.2
0.4
0.6
0.8
1
Impuls
ní
ch.
---> n (vzorky)
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
---> Re
--->
Im 6
0 0.5 1-20
-15
-10
-5
0
5
---> w--
-> |H
(exp(j*w
))|
Hrebenovy FIR filtr 7.radu
+g
-g
0 10 20 30 400
0.2
0.4
0.6
0.8
1
Impuls
ní
ch.
---> n (vzorky)
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
---> Re
--->
Im 7
FIR filtr se dvěma nulami
FIR filtr se třemi nulami
FIR filtry (klouzavý průměr a hřebenový filtr)
FIR filtry
Hřebenový IIR filtr
gz
z
zgzH
D
D
D
1
1)(
0 0.5 1
-5
0
5
10
15
20
--->
--->
|H
(exp(j*
))|
Hrebenovy IIR filtr 6.radu
0 50 100 150 2000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
---> n (vzorky)
Impuls
ní
ch.
-1 -0.5 0 0.5 1
-1.5
-1
-0.5
0
0.5
1
1.5
6
---> Re
--->
Im
+g
-g
][][][ Dnygnxny
Číslicový fázovací filtr
gz
gzg
gz
gz
zg
zgzH
D
D
D
D
D
D
/11
1)(
0 50 100 150 200
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
---> n (vzorky)
Impuls
ní
ch.
-1 -0.5 0 0.5 1
-1.5
-1
-0.5
0
0.5
1
1.5
---> Re
--->
Im0 0.5 1
-5
0
5
--->
--->
|H
(exp(j*
))|
allpass
0 0.5 1
-2
0
2
--->
--->
arg
(H(e
xp(j*
)))
][][][][ DnxnxgDnygny
Karplusův – Strongův alg.
0 0.5 1 1.5 2 2.5 3 3.5 4-4
-2
0
2
4
cas [s]
am
plit
uda
Time
Fre
quency
0 0.5 1 1.5 2 2.5 3 3.50
0.5
1
1.5
2
x 104
Karplusův – Strongův alg.
kytara
harfa
mandolína
klavír
bicí
Karplusův – Strongův alg. fs = 44.1e3; % [Hz]
doba= 4; % [s]
z = [ ];
g = 0.5;
f0 = [82.4 110 146.8 196 246.9 329.6]; % [Hz]
for k=1:length(f0)
x=zeros(1,doba*fs); % generovani budiciho signalu
D=round(fs/f0(k)) % modelujiciho drnknuti
x(1:D)=randn(1,D); % buzeni explozi bileho sumu
a=[1 zeros(1,D-1) -g -g]; b=[1];
y=filter(b,a,x);
z=[z y];
end;
Audio efekty založené na časovém
zpoždění (dozvuky a echa)
0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
x 104
-0.2
0
0.2
original
0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
x 104
-0.2
0
0.2
jednoduche echo
• K signálu přičítáme stejný signál, avšak
zpožděný a tlumený (jednoduché echo)
• Zpoždění vnímáme jako echo, je-li delší než 50 ms
• Malé zpoždění přináší oživení a rozjasnění zvuku
• Rychlost zvukové vlny je 350 m/s (331,4 + 0,6 T)
1000 2000 3000 4000 5000 6000 7000 8000
-2000
-1000
0
1000
2000
original
1000 2000 3000 4000 5000 6000 7000 8000
-2000
-1000
0
1000
2000
3-nasobne echo
• Dozvuk 0,5 sekundy =>
zvuková vlna urazí 175
metrů
– Např. v koupelně o 3m
by se vlna odrazila
58x (pak by byla vlna
více či méně
absorbována)
Audio efekty založené na časovém zpoždění (dozvuky a echa)
• Přímá vlna (bez odrazů)
– přímá cesta k posluchači
• První odrazy
– Odražené vlny příchází 0,01-0,1 s po přímé vlně
Audio efekty založené na časovém zpoždění (dozvuky a echa)
• Dozvuk
– obsahuje tisíce pozdějších odrazů
Odrazy impulsního signálu (exponenciální tlumení)
Audio efekty založené na časovém zpoždění (dozvuky a echa)
• Stand.doba dozvuku
-pokles o 60 dB
• Typický koncertní sál má
dozvuk 1.5 - 3 sekundy
• Chrám sv. Víta až 8 s
Audio efekty založené na časovém
zpoždění (dozvuky a echa) , př.36
Zvukový efekt
Zpoždění
v sekundách
Filtrační
koeficient
pod mostem 0,400 0,30
v chrámu 0,250 0,30
elektronicky vytvářený umělý dozvuk 0,200 0,90
klasické echo 0,150 0,50
v podzemní chodbě 0,120 0,70
v koncertní sini 0,100 0,40
elektronický efekt 0,085 0,90
ve sprše 0,030 0,60
v malé místnosti 0,010 0,50
mikrofonní zpětná vazba 0,001 0,97
Schroedrův algoritmus
modelování dozvuku
• HF - hřebenové filtry: určují délku ozvěny
(délka zpoždění je 10 až 50 ms; zapojují se paralelně)
• AF - all-pass filtry: „zahuštují a rozprostírají“ ozvěny
(délka zpoždění je do 5 ms; zapojují se do kaskády)
• Realističtější modelování dozvuku
• Pracné nastavení parametrů modelu
Audio efekty založené na časovém
zpoždění (dozvuky a echa), př.36
E = [0.400 0.30
0.250 0.30
0.200 0.90
0.150 0.50
0.120 0.70
0.100 0.40
0.085 0.90
0.030 0.60
0.010 0.50
0.001 0.97];
for k=1:length(E)
zpozdeni = E(k,1);
g = E(k,2);
D = round(zpozdeni*f_s); % [vzorky]
a = [1 zeros(1,D-1) -g];
y = filter(1,a,x);
soundsc( y',f_s)
pause(3)
end;
Audio efekty založené na časovém
zpoždění (dozvuky a echa)
E = [0.400 0.30
0.250 0.30
0.200 0.90
0.150 0.50
0.120 0.70
0.100 0.40
0.085 0.90
0.030 0.60
0.010 0.50
0.001 0.97];
for k=1:length(E)
zpozdeni = E(k,1);
g = E(k,2);
D = round(zpozdeni*f_s); % [vzorky]
a = [1 zeros(1,D-1) -g];
y = filter(1,a,x);
soundsc(y',f_s)
pause(3)
end;
Číslicové filtry - obecně
)1(]1[][][ 110 Mnxbnxbnxbny M
1
0
11
0
1
1
1
10)(M
nM
nM
nM
n
n
n
M
Mz
zbzbzbzbbzH
M
m
m
L
l
l mnyalnxbny10
][][][
MMM
LLL
M
m
mMm
L
l
lLl
MM
LL
M
m
mm
L
l
ll
azaz
bzbzb
zb
zb
zaza
zbzbb
zb
zb
zH
1
1
110
0
01
1
110
0
0
1)(
Diferenční rovnice FIR
Přenosová funkce FIR filtru
Diferenční rovnice IIR
Přenosová funkce IIR filtru
Schéma IIR filtru-přímá struktura