Hej Jakob
Jeg lavede et svar som jeg aldrig fik sendt tidligere i dag (browseren
bragede for en gang skyld ned - og jeg havde ikke gemt det). Nu prøver
jeg at rekonstruere noget af det.
Jakob Nielsen wrote:
...
>
> Hm.. der er noget at læse. Havde det naive håb at mit filter var nok.
Det er
> det så også hvis man ike bekymrer sig om amplituden, men det er jo
ikke helt
> korrekt.
> Takker for de links. Vil gå i krig med dem snart.
Du skal være opmærksom på at signalbehandling er ret svært.
-
Jakob Nielsen wrote:
> Jeg leger med at filtrere et signal med kofitienter defineret af en
> cosinusfunktion.
>
> Helt kort i matlab ser det sådan ud...
>
>
>>>y1=4*cos(2*pi*t*10);
>>>y2=3*cos(2*pi*t*17+2);
>>>y3=8*cos(2*pi*t*7+1);
>>>ysum=y1+y2+y3;
>>>hold on
>>>plot(ysum,'g*')
>>>h10=1/(100*2)*cos(2*pi*t(1:100)*10);
>>>yfilt=conv(ysum,h10);
>>>plot(yfilt,'b');
>
>
> Det filtrerede signal har frekvensen 10Hz som ønsket, men da det
oprindelige
> signal består af 10Hz, 17Hz og 7Hz som er mere eller mindre
faseforskudt, så
> finder der konstruktiv og destruktiv interferens sted. Det betyder at jeg
> ender med et 10Hz signal med meget varierende amplitude - ikke det
> opindelige y1. Hvordan kan man redesigne filtret til at give det
oprindelige
> signal mere præcist?
>
>
Der er to mulige fortolkninger af din filtrering afhængig af t vektoren:
1. Du har forsøgt at lave et lavpas filter (h10) som på denne adresse
(figur 2):
http://cnx.rice.edu/content/m0536/latest/ . I så fald mangler
du at lægge en konstant til.
2. Din h10 filter vektor indeholder flere perioder.
I så fald svarer resultatet yfilt til en cosinus fourierkoefficient som
funktion af tids(fase)forskydning. Når du når en tidsforskydning som ca.
er 360 grader for cosinus filter, vil yfilt koefficienterne repeteres.
*Fouriertransformationen er en hurtig sinus mønstergenkender*
En interessant egenskab ved sinus-funktioner er, at man kun behøver at
lave 2 indre produkter med et input-signal, for at "genkende" en
sinus-funktion i et signal. De 2 "filter" sinus funktioner skal være
netop 90 grader faseforskudt for, at denne genkendelse virker - de indre
produkter giver 2 fourierkoefficienter "realdelen (hvis cos)" R og
"imaginærdelen (hvis sin)" I. sqrt(I^2+R^2) vil så være konstant uanset
en signalindlejret sinus-funktions fase.
Det er derfor ikke nødvendigt at folde med cosinus. Du kan i princippet
"plukke" vilkårligt to koefficienter ud af yfilt, sålænge de svarer til
to 90 grader indbyrdes forskudte filter sinuskoefficienter.
Men fouriertransformationen forudsætter, at du laver indre produkter
over uendelig lang tid.
Gør du ikke det, når du f.eks. laver diskrete indre produkter, så skal
signalets indlejrede uønskede sinussignaler være matematisk eksakt
ortogonale på filterets. Dette kan du med stor sikkerhed ikke regne med.
Laver du indre produkter over uendeligt lang tid, svarer de 2
koefficienter til et filter, som kun "genkender"/registrerer én
frekvens. Det er med andre ord et utroligt smalt sinusgenkender.
-
Mht. til dit filter, bliver du nødt til at anvende et egentligt båndpas
filter.
Men man kan faktisk designe et båndpasfilter, på en sådan måde, at det
"nuller" (er ortogonal) på bl.a. frekvenserne 7 og 17 Hz og lader 10 Hz
signalet passere.
Du kan sikkert ane 2 nulninger mellem 0,1 og 0,2 på figur 2:
http://cnx.rice.edu/content/m0536/latest/
mvh/Glenn