/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
creamygirl 610
berpox 610
jomfruane 570
10  3773 570
band pass filter med sinusoide kofitienter
Fra : Jakob Nielsen


Dato : 01-12-03 08:14

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?



 
 
Glenn Møller-Holst (01-12-2003)
Kommentar
Fra : Glenn Møller-Holst


Dato : 01-12-03 14:19

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?
>
>

Hej Jakob

Du har brug for at lave et FIR (eller IIR) båndpas filter:

http://www.google.dk/search?q=FIR+filter+MatLab

Se f.eks. her:

FIR Filter Design Using MATLAB:
http://cnx.rice.edu/content/m10917/latest/
Citat: "... The MATLAB function fir1() designs conventional lowpass,
highpass, bandpass, and bandstop linear-phase FIR filters based on the
windowing method...."

Introduction to Computer Programming with MATLAB.
Lecture 8: Discrete Linear Systems:
http://www.phon.ucl.ac.uk/courses/spsci/matlab/lect8.html

http://www.phon.ucl.ac.uk/courses/spsci/dsp/

Lidt teori:
UNIT 7: DIGITAL FILTER DESIGN:
http://www.phon.ucl.ac.uk/courses/spsci/dsp/filter.html

FIR filter design using windowing functions:
http://www.ece.drexel.edu/courses/ECE-S352/lab/lab8.pdf

mvh/Glenn


Jakob Nielsen (01-12-2003)
Kommentar
Fra : Jakob Nielsen


Dato : 01-12-03 15:52

Du har brug for at lave et FIR (eller IIR) båndpas filter:

http://www.google.dk/search?q=FIR+filter+MatLab

<snip links>

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.




Glenn Møller-Holst (01-12-2003)
Kommentar
Fra : Glenn Møller-Holst


Dato : 01-12-03 19:12

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


Jakob Nielsen (02-12-2003)
Kommentar
Fra : Jakob Nielsen


Dato : 02-12-03 23:36

>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.

Nah det jeg forsøgte var at lave et bandpass filter. Tage et signal
bestående af ex 10Hz,12Hz,17Hz og filtrere alt andet end 10Hz fra. Mente jeg
var pokkers snu da jeg anvendte en cosinus-bølge til at folde med. y[n]
ville så være 1*x[n] plus x i den negative periode og x i den positive
hvilket ville give en sum på nul.

>*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.

Jeg har desværre endnu ikke lært mig at udføre en fouriertransformation.

>Mht. til dit filter, bliver du nødt til at anvende et egentligt båndpas
filter.

Hvad mener du?

>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.

Det skulle være mere generelt. Leger egentlig med det i forbindelse med
dtmf-dekodning hvor jeg ville lave en slags filterbank, der hver lader een
frekvens slippe igennem.



Glenn Møller Holst (04-12-2003)
Kommentar
Fra : Glenn Møller Holst


Dato : 04-12-03 20:51

Jakob Nielsen wrote:
>>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.
>
>
> Nah det jeg forsøgte var at lave et bandpass filter. Tage et signal
> bestående af ex 10Hz,12Hz,17Hz og filtrere alt andet end 10Hz fra. Mente jeg
> var pokkers snu da jeg anvendte en cosinus-bølge til at folde med. y[n]
> ville så være 1*x[n] plus x i den negative periode og x i den positive
> hvilket ville give en sum på nul.
>

Problemet med én cosinus fkt (med det rektangulære vindue) som
filterfunktion er, at et sådan filter, i princippet vil være et
uendeligt smalt båndpass filter, men i praksis (endeligt langt) vil den
slippe andre frekvenser igennem som stort set vægtes med sinc funktionen
i frekvensfunktionsrummet på grund af det rektangulære filter vindue.

>
>>*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.
>
>
> Jeg har desværre endnu ikke lært mig at udføre en fouriertransformation.
>
>
>>Mht. til dit filter, bliver du nødt til at anvende et egentligt båndpas
>
> filter.
>
> Hvad mener du?

Det jeg mener er et filter som i frekvensfunktionsrummet lader en omegn
af frekvenser om 10 Hz slippe igennem.

Et eksempel på et filter kunne måske være:

båndpasfilter = sinc(t*s)*cos(2*pi*fcenter*t)*(blackman vindue), s er en
konstant der vælges så sinc filteret svarer til båndpasfilterets
båndbredde og fcenter vælges til at være båndpasfilterets center. Jeg
har ingen anelse hvor godt dette båndpas filter virker.

Bemærk at det er sinc, som er båndpasfilteret i frekvensfunktionsrummet.
cos anvendes "bare" til at flytte båndpasfilteret hen til den ønskede
centerfrekvens. Husk at:

At gange 2 signaler sammen i tidsfunktionsrummet svarer til at folde i
frekvensfunktionsrummet.

mvh/Glenn

>
>
>>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.
>
>
> Det skulle være mere generelt. Leger egentlig med det i forbindelse med
> dtmf-dekodning hvor jeg ville lave en slags filterbank, der hver lader een
> frekvens slippe igennem.
>
>


Glenn Møller Holst (04-12-2003)
Kommentar
Fra : Glenn Møller Holst


Dato : 04-12-03 21:11

Jakob Nielsen wrote:
....
>
>
> Det skulle være mere generelt. Leger egentlig med det i forbindelse med
> dtmf-dekodning hvor jeg ville lave en slags filterbank, der hver lader een
> frekvens slippe igennem.
>
>

Hej Jakob

Find ud af hvorden disse virker:

DTMF Tone Decoder.
This project displays telephone numbers decoded from tones:
http://www.bobblick.com/techref/projects/tonedec/tonedec.html

DIY Kits: Disks, Documentation & Software.
kit56v1.zip DTMF Tone Decoder:
http://kitsrus.com/soft.html

mvh/Glenn


Glenn Møller Holst (04-12-2003)
Kommentar
Fra : Glenn Møller Holst


Dato : 04-12-03 21:27

Glenn Møller_Holst wrote:

> Jakob Nielsen wrote:
> ...
>
>>
>>
>> Det skulle være mere generelt. Leger egentlig med det i forbindelse med
>> dtmf-dekodning hvor jeg ville lave en slags filterbank, der hver lader
>> een
>> frekvens slippe igennem.

Hej Jakob

Kig på:

Fil's FAQ-Link-In Corner: LinkIn: DTMF FAQ.
DTMF FAQ - Telephone Tone Dialing chips V1.20:
http://margo.student.utwente.nl/el/phone/dtmf.htm
"... The tones should all be +/- 1.5% of nominal..."

Se også:

6) An alternative approach: DSP.
Another way to decode/produce DTMF signals is by applying a DSP [Det er
det du villet gøre], a Digital Signal Processor. Practical examples of
such an approach can be found in the TMS320 BBS:
http://margo.student.utwente.nl/el/phone/dtmf.htm#DTMF_006

10) DTMF in C (on a PC) by Kirk Hobart [generator]:
http://margo.student.utwente.nl/el/phone/dtmf.htm#DTMF_011
Citat: "...puts("Press 123A456B789C*0#D to digitize DTMF-tones to file.
Fs=11025. ESC quits.")...Note: This provides simple envelope modulation.
It ramps the amplitude up and down linearly to avoid the little pops you
would otherwise hear when the sound starts and stops. DTMF encoder chips
usually don't bother doing this...."

mvh/Glenn


Niels L. Ellegaard (01-12-2003)
Kommentar
Fra : Niels L. Ellegaard


Dato : 01-12-03 16:55

"Jakob Nielsen" <jni@no.mail.dk> writes:

> 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?

Så vidt jeg kan se afhænger dit resultat meget af hvor stor opløsning
du har i 't'. Programmet virker fint for

n=100 t = 0:0.01:3;
n=1000 t = 0:0.001:3;

Så vidt jeg kan se opstår der en fejl, hvis max(tf) er for
lille. Forklar selv hvorfor :) Her er en graf for n=100 og t =
0:0.01:3. Det ser OK ud:

http://dirac.ruc.dk/~gnalle/filter.jpg

Her er programmet:

hold off
n=100
t = 0:0.01:3;
tf = t(1:n);
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;
plot(ysum,'g');
hold on
h10=1/20*cos(2*pi*tf*10);
yfilt=conv(ysum,h10);
plot(yfilt,'b');

Jeg ved ikke meget om signalanalyse, men er det ikke farligt at bruge
et filter, der har et knæk i punkterne t=0 og t=tf? Det må da give
noget højfrekvent støj.

--
Niels L Ellegaard http://dirac.ruc.dk/~gnalle/

Heat is the self-restoration of matter in its formlessness, its
liquidity the triumph of its abstract homogeneity over specific
definiteness, its abstract, purely self-existing continuity, as
negation of negation, is here set as activity. - Hegel

Jakob Nielsen (01-12-2003)
Kommentar
Fra : Jakob Nielsen


Dato : 01-12-03 17:14

> Så vidt jeg kan se afhænger dit resultat meget af hvor stor opløsning
> du har i 't'. Programmet virker fint for
>
> n=100 t = 0:0.01:3;
> n=1000 t = 0:0.001:3;

Ja, helt perfekt virker det nu ikke. Efter filtrering burde man ende ud med
y1 igen. Den har en amplitude på 4. Resultatet har godt nok fast implitude,
men den ligger på 10. Jeg kan ikke helt overskue hvorfor den er konstant,
men for høj.


> Jeg ved ikke meget om signalanalyse, men er det ikke farligt at bruge
> et filter, der har et knæk i punkterne t=0 og t=tf? Det må da give
> noget højfrekvent støj.

Jeg ved selvsagt heller ikke meget om det, men som jeg ser det gør knækket i
t=0 ikke noget, da det for en cos funktion bare betyder at aktuelle sample
vægtes med 1 og fremtidige samples ikke vægtes, da det er et causal filter.



Glenn Møller-Holst (01-12-2003)
Kommentar
Fra : Glenn Møller-Holst


Dato : 01-12-03 20:12

Hej Jakob

Jakob Nielsen wrote:

>>Så vidt jeg kan se afhænger dit resultat meget af hvor stor opløsning
>>du har i 't'. Programmet virker fint for
>>
>>n=100 t = 0:0.01:3;
>>n=1000 t = 0:0.001:3;
>
>
> Ja, helt perfekt virker det nu ikke. Efter filtrering burde man ende
ud med
> y1 igen. Den har en amplitude på 4. Resultatet har godt nok fast
implitude,
> men den ligger på 10. Jeg kan ikke helt overskue hvorfor den er konstant,
> men for høj.
>
>
>
>>Jeg ved ikke meget om signalanalyse, men er det ikke farligt at bruge
>>et filter, der har et knæk i punkterne t=0 og t=tf? Det må da give
>>noget højfrekvent støj.
>
>
> Jeg ved selvsagt heller ikke meget om det, men som jeg ser det gør
knækket i
> t=0 ikke noget, da det for en cos funktion bare betyder at aktuelle
sample
> vægtes med 1 og fremtidige samples ikke vægtes, da det er et causal
filter.
>
>

Det er rigtigt hvad Niels formoder. Knækket eller diskontinuiteten fra
t=0 til t=tf betyder at filteret ikke opfører sig "pænt".

Det fandt man ud af i 1950-60'erne. Løsningen er at anvende en windowing
funktion som ganges på filteret. Det gør at filteret "bløder" op på en
pæn måde og er mindre "intolerant" i frekvensfunktionsrummet.

Vink: At gange 2 signaler sammen i tidsfunktionsrummet svarer til at
folde i frekvensfunktionsrummet.

Kig her - det står i ligning 20:
http://mathworld.wolfram.com/FourierTransform.html

En kompleks sinus lignende funktion på n Hz er en "pind" i
frekvensfunktionsrummet og en Gauss lignende funktion er næsten en Gauss
lignende i frekvensfunktionsrummet
http://mathworld.wolfram.com/FourierTransformGaussian.html . En "pind"
svarer "næsten" til en delta-funktion
http://mathworld.wolfram.com/DeltaFunction.html .

Resultatet i frekvensfunktionsrummet er en foldning af "pinden" og
Gauss-funktionen (men med en anden "bredde") og denne vil "dukke" op med
center i frekvensen n Hz.

-

Windowing funktioner f.eks.:
Hanning window
Hamming window
Kaiser window
Blackman window
Rectangular window (det er det du sikkert ubevidst har anvendt)

Mange er nævnt her:

DESIGNING FIR DISCRETE-TIME FILTERS:
http://www.ecn.ou.edu/vdebrunn/www/ece4213/day22.pdf

-

En anden frekvensfunktionsrum <-> tidsfunktionsrum pudsighed:

Faktisk er det sådan at ganger man 2 komplekse sinus signaler
e^(i*2*pi*f_1*t), e^(i*2*pi*f_1*t) i tidsfunktionsrummet med hver deres
evt. vilkårlige fase, så svarer det til at lægge deres frekvenser sammen
(med fortegn) for det resulterende signal e^(i*2*pi*f_1*t) *
e^(i*2*pi*f_2*t) = e^(i*2*pi*f_1*t + i*2*pi*f_2*t)= e^(i*2*pi*(f_1+f_2)*t).

Denne pudsige sinus egenskab anvendes faktisk i praksis.

I radiomodtagere haves en såkaldt blader (eng. mixer) dens opgave er
primært at blande et ønsket signal sammen med et oscillatorsignal og som
resultat få mellemfrekvensen.

Normalt har man ikke de komplekse signaler (men de kan faktisk
fremtrylles i en 90 grader hybrid), derfor får man som output, både
summen og differensen af de to signaler.

mvh/Glenn


Jakob Nielsen (02-12-2003)
Kommentar
Fra : Jakob Nielsen


Dato : 02-12-03 23:24

>Det er rigtigt hvad Niels formoder. Knækket eller diskontinuiteten fra
>t=0 til t=tf betyder at filteret ikke opfører sig "pænt".

Oh, nu forstår jeg. Det i siger er at man skal have en fuld bølgelængde?

>Det fandt man ud af i 1950-60'erne. Løsningen er at anvende en windowing
>funktion som ganges på filteret. Det gør at filteret "bløder" op på en
>pæn måde og er mindre "intolerant" i frekvensfunktionsrummet.

<snip en masse info>

Jeg skal lige have et øjeblik til at følge dine links. takker for den megen
info.



Glenn Møller Holst (04-12-2003)
Kommentar
Fra : Glenn Møller Holst


Dato : 04-12-03 20:19


Hej Jakob

Jakob Nielsen wrote:

>>Det er rigtigt hvad Niels formoder. Knækket eller diskontinuiteten fra
>>t=0 til t=tf betyder at filteret ikke opfører sig "pænt".
>
>
> Oh, nu forstår jeg. Det i siger er at man skal have en fuld bølgelængde?
>

Både ja og nej.

Ja - fordi man netop vil få en diskontinuitet, hvis bølgelængderne ikke
er et multiplum i filterets vektor. Faktisk er kravet at filteret skal
tilhøre det matematiske funktionsrum Cuendelig (være uendeligt mange
gange differentiabelt).

Nej - fordi den smagsprøve som filteret "klipper" ud af input signalet
vil være et implicit rektangulært vindue og dette vindue er det "værst"
mulige for et ukendt input signal. Hvis du vælger at gange et af de
andre populære vinduer på, vil både filteret og input signalet få en
"blid" medfart i frekvensfunktionsrummet.

-

Et rektangulært vindue vil i frekvensfunktionsrummet være:

f(x) = sinc(x*s) = én for x==0, sin(x*s)/(x*s) ellers, hvor s > 0.

s er en skaleringskonstant som skal vælges, så den bredest mulige sinc
basisfunktion er ortogonal med sig selv, med den valgte
diskretiserings/sample-afstand.

Kig lige efter formel 5:
http://mathworld.wolfram.com/SincFunction.html

--

I øvrigt er aliasering "fup og fidus"; grunden til problemet aliasering
skyldes, at folk ikke sampler/diskretiserer den kontinuerte
input-funktionen med de rette sinc basisfunktioner.

Fouriertransformationen skal have en kompleks input-funktion, får den
ikke det, vil den sidste halvdel af frekvenserne ikke være brugbare.
Nogle vælger at kalde dem de "negative" frekvenser.

mvh/Glenn

>
>>Det fandt man ud af i 1950-60'erne. Løsningen er at anvende en windowing
>>funktion som ganges på filteret. Det gør at filteret "bløder" op på en
>>pæn måde og er mindre "intolerant" i frekvensfunktionsrummet.
>
>
> <snip en masse info>
>
> Jeg skal lige have et øjeblik til at følge dine links. takker for den megen
> info.
>
>



Niels L. Ellegaard (01-12-2003)
Kommentar
Fra : Niels L. Ellegaard


Dato : 01-12-03 17:40

"Jakob Nielsen" <jni@no.mail.dk> writes:

> > Så vidt jeg kan se afhænger dit resultat meget af hvor stor opløsning
> > du har i 't'. Programmet virker fint for
> >
> > n=100 t = 0:0.01:3;
> > n=1000 t = 0:0.001:3;
>
> Ja, helt perfekt virker det nu ikke. Efter filtrering burde man ende
> ud med y1 igen. Den har en amplitude på 4. Resultatet har godt nok
> fast implitude, men den ligger på 10. Jeg kan ikke helt overskue
> hvorfor den er konstant, men for høj.

Jeg ændrede koefficienten foran filteret til 1/20. Det gav lidt pænere
grafer. Det må være din opgave at finde den "rigtige" koefficient :)

--
Niels L Ellegaard http://dirac.ruc.dk/~gnalle/

Heat is the self-restoration of matter in its formlessness, its
liquidity the triumph of its abstract homogeneity over specific
definiteness, its abstract, purely self-existing continuity, as
negation of negation, is here set as activity. - Hegel

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408945
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste