Fourieranalyse i sammenhæng med lydbølger
Mathias Kærlev
Fourieranalyse af en periodisk funktion
Vejledere: Poul Hedegaard, Kristian Svendsen
Mathias Kærlev
Fourieranalyse
21-12-2012
Abstract
For this paper, the usage of real-valued Fourier series with sound waves, specically a guitar
string's sound, is examined and some of the applications for both Fourier-synthesis and Fourieranalysis are explored.
The foundation of the Fourier-analysis, the Fourier-coecients, are
deduced through the Fourier series, and the analysis of both periodic functions and actual data
are accounted for.
The guitar string's sound is recorded and an audio-analysis is performed
where both the frequency spectrum and the Fourier-coecients are derived.
video-analysis is also made to examine the movement of the vibrating string.
Additionally,
To test the
empirical data, a guitar string's sound can be determined in theory through Fourier-analysis of
a function that represents the guitar string. From this, the resulting frequency spectrums in the
audio-analysis are found to largely correspond with the expected amplitudes and frequencies.
However, the video-analysis was not able to depict a great range of harmonics, but did show
the presence of standing waves.
It can be concluded that Fourier-analysis can be used to
determine the frequency-spectrum and Fourier-spectrum of a guitar string with large precision.
Furthermore, Fourier-synthesis of the string's Fourier-spectrum yields a sound wave identical to
the source to a great extent, which gives Fourier-synthesis several use-cases for e.g. lightweight
electronic instruments that reproduce the sound of real instruments.
2/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Indhold
Indledning
4
Fourieranalyse
5
Periodiske funktioner og lyd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
Lige/ulige funktioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
Fourierrækker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Ortogonalitetsrelationer
9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bestemmelse af fourierkoecienter
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Regneeksempler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Ulige funktioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Lige funktioner
15
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eksperimenter
Fourieranalyse med datasæt
16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Guitaren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
Analyse af lyd fra guitar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Analyse af video fra vibrerende guitarstreng
25
. . . . . . . . . . . . . . . . . . . . . . .
Fouriersyntese
27
Konklusion
29
Litteraturliste
30
Bilag
31
Bilag 1: Graf til regneeksempler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
Bilag 2: Fourieranalyse af lyd fra guitar - anslået på midten (Datalyse)
. . . . . . . .
32
. . . . . . . . . . .
33
. . . . . . . . . . . . . . . . . . . .
34
Bilag 5: Data for videoanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Bilag 6: Data for videoanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
Bilag 7: Fourieranalyse af video - Datalyse . . . . . . . . . . . . . . . . . . . . . . . .
38
Bilag 8: Graf for fouriersyntese i CAS-værktøj . . . . . . . . . . . . . . . . . . . . . .
39
Bilag 9: Programkode til fouriersyntese (Python)
. . . . . . . . . . . . . . . . . . . .
40
. . . . . . . . . . . . . . . . . . . . . . . . . .
41
Bilag 3: Fourieranalyse af lyd fra guitar - anslået på
Bilag 4: Programkode til fourieranalyse (Python)
Bilag 10: Billede af udtræk fra lyddata
1
(Datalyse)
3
3/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Indledning
Jean Baptiste Joseph Fourier var en fransk matematiker, der gennem sit arbejde kom frem til
det, som vi kender som fourierrækker. Fourier antog, at alle funktioner kan skrives op som en
uendeligt antal led af sinus- og cosinusfunktioner, og ud fra den antagelse kunne han nde frem
til nogle konstanter, de såkaldte
fourierkoecienter,
som funktioner ville bestå af. På dette
tidspunkt var det en banebrydende og kontroversiel idé, der skulle vise sig at have mange anvendelser inden for matematikken og fysikken. I dette projekt er det især analyse af lydsignaler,
fourieranalysen
terne, der kan bruges til at lave et frekvensspektrum.
som fourierrækkerne kan bruges til, og
består så af at nde fourierkoecien-
Formålet med dette projekt er, at bestemme en guitars frekvensspektrum gennem fourieranalyse. Dette kan så gøres enten gennem FFT eller fourierkoecienterne, men begge vil der
kigges på. Desuden vil teorien bag guitarens svingninger undersøges med fourieropløsning, og
en fouriersyntese af guitarens fourierspektrum vil forsøges og diskuteres.
Opdelingen er sådan, at baggrunden for fourieranalysen er beskrevet først. Der er redegjort
for de matematiske principper, der er nødvendige for at bevise sammenhængen for fourierkoefcienterne. Heri indgår en introduktion til periodiske funktioner, som også hænger sammen med
vores forståelse af lydbølger, ortogonalitetsrelationerne mellem sinus og cosinus, regneregler for
lige/ulige funktioner og afsluttende fourierrækker. Der vil også indgå nogle regneeksempler, der
illustrativt viser, hvordan fourieranalysen kan bruges til at nde fourier- og frekvensspektret
for en kendt funktion.
Herefter beskrives den eksperimentelle og praktiske del af opgaven, hvor fourieranalysen bruges til at analysere en guitarstrengs tone og overtoner. De fysiske årsager til guitarstrengens
grundtone og overtone vil først blive forsøgt forklaret gennem teori med fourieropløsning, og
så testet gennem empiri. Her vil indgå både en analyse af video og lyd fra guitarstrengen, da
både strengens bevægelse og resulterende lyd kan undersøges ved hjælp af fourieranalyse.
Afslutningsvist vil fouriersyntese med samme fourierkoecienter fra de første eksperimenter undersøges. Hvad er mulighederne for at gå den anden vej med et fourierspektrum? En vurdering
af fouriersyntesens muligheder vil diskuteres, altså i hvor stort et omfang man kan genskabe
instrumenters tone ud fra en fourieranalyse.
I denne projektopgave bruges der fourierrækker på reel form, og der vil altså derfor ikke indgå
beregninger med komplekse tal.
4/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Fourieranalyse
Overordnet er fourieranalysen et redskab til at bestemme de harmoniske svingninger, der indgår
i en periodisk funktion. Ved approksimation af areal kan man også lave fourieranalyse på et
datasæt, men det vil uddybes i eksperiment-afsnittet. Når man ved hvilken sammensætning
af bølger et datasæt eller funktion består af, kan man se, hvilken frekvens og amplitude (dvs.
styrke) bølgerne har. Det er fourierkoecienterne, der indeholder denne information, men før
vi kan begynde at nde dem, er der nogle matematiske begreber vi skal kende til.
Periodiske funktioner og lyd
1
En tone er i virkeligheden en lydbølge, der gentager sig.
Se følgende gur, der viser en lydop-
tagelse af en anslået guitar fra eksperiment-afsnittet:
Selv om der er en del støj, der kan gøre det svært at gennemskue, er det altså tydeligt, at lyden
gentager sig.
Vi kan selv modellere funktioner, der svarer til lydbølger, ved at gøre dem periodiske. Periodiske funktioner er funktioner, der gentager sig efter en periode
T.
Når den konstante periode
T adderes til den variable, vil funktionsværdierne gentage sig. Det vil sige at der gælder, at
f (x + T ) = f (x), hvor T er det mindste tal, der opfylder ligningen. Normalt denerer vi kun
T T
periodiske funktioner inden for et interval. Til vores formål sætter vi intervallet til [− ; ],
2 2
sådan så vores funktioners halve periode er delt mellem y-aksen. Desuden kan det hænde, at vi
denerer en funktion stykkevist, hvilket betyder, at vi denerer funktionsværdierne gennem ét
eller ere intervaller. Et eksempel kunne være
x,
f or x ≥ 0
f (x) =
−x, f or x < 0
i intervallet
[− T2 ; T2 ].
Funktionen er altså deneret over hele intervallet
skellige funktionsudtryk for
x≥0
og
[− T2 ; T2 ],
men med for-
x < 0.
Lige/ulige funktioner
Til vores formål er det hensigtsmæssigt at se, at funktioner kan være lige, hvor der desuden gælder for funktionen, at
f (x) = f (−x).
y-aksen. For ulige funktioner gælder der, at
40
1 N.
Funktionen vil rent grask være spejlet omkring
−f (x) = f (−x).
Funktionsværdierne vil på den
Hartling C. Claussen E. Both. Spektrum - Fysik II. 1. udg. Gyldendal, 2004. isbn: 10-87-02-00685-5, s.
5/41
Mathias Kærlev
Fourieranalyse
21-12-2012
ene side af y-aksen være det samme som på den anden side af y-aksen, men med negativt fortegn.
Et eksempel på en ulige funktion kunne være
f (x) = x.
Indsætter vi i denitionen, ser vi,
f (x) = |x|.
Indsætter vi i denitionen, ser vi
at udtrykket er sandt:
−f (x) = f (−x)
−x = −x
Et eksempel på en lige funktion kunne være
igen, at udtrykket er sandt:
f (x) = f (−x)
|x| = | − x|
|x| = |x|
Desuden har beregninger med lige/ulige funktioner nogle interessante egenskaber:
1)
Produktet mellem to lige funktioner er en lige funktion
Har vi en ulige funktion
lige funktion,
g(x),
f (x),
f (−x) = −f (x) ⇔ f (x) = −f (−x). Har vi
g(x) = g(−x). Vi sætter h(x) til produktet af f og g :
gælder der, at
gælder der, at
så en
h(x) = f (x) · g(x) = g(−x) · f (−x)
= (f · g)(x) = (f · g)(−x)
= h(x) = h(−x)
h(x) = h(−x),
2)
så
h(x)
er lig vores denition på en lige funktion, og sætning 2 er bevist.
Produktet mellem to ulige funktioner er en lige funktion
Et lignende bevis kan laves for denne sætning, hvis
f (x)
er en ulige funktion og
g(x)
er en lige
funktion:
h(x) = f (x) · g(x) = −g(−x) · −f (−x)
= (f · g)(x) = (f · g)(−x)
= h(x) = h(−x)
h(x) = h(−x),
3)
så
h(x)
er igen lig vores denition på en lige funktion, og sætning 2 er bevist.
Produktet mellem en lige og en ulige funktion er en ulige funktion
6/41
Mathias Kærlev
Fourieranalyse
21-12-2012
h(x) = f (x) · g(x) = g(−x) · −f (−x)
= (f · g)(x) = −(f · g)(−x)
= h(x) = −h(−x)
m
h(−x) = −h(x)
h(−x) = −h(x), så h(x) er lig vores denition på en ulige funktion, og sætning 3 er altså bevist.
4)
Integration fra
−A
til
A
af en ulige funktion er
0
x < 0 vil svare til arealet under grafen for x > 0, bare
´2
f (x) = x og integralet −2 (f (x))dx, er det helt tydeligt:
Arealet under grafen for
fortegn. Kigger vi på
´2
Som det ses, så er
(f (x))dx =
−2
´0
(f (x))dx +
−2
´2
0
(f (x))dx = −2 + 2 = 0.
med negativt
Dette vil også
vise sig at være vigtigt til beviset om ortogonalitetsrelationerne og når sammenhængen mellem
fourierkoecienterne og lige/ulige funktioner skal vises.
Det skal nævnes, at sinus er en ulige og cosinus er en lige funktion.
Graf for sinus og cosinus
Det vil vise sig, at vi kan bruge disse egenskaber for cosinus og sinus til vores beviser.
De ovenstående regneregler vil vise sig at være betydelige ved bestemmelse af fourierkoecienterne.
Fourierrækker
En periodisk funktion
f (x)
med perioden
T
kan tilnærmes med en konstant plus en sum af
2
harmoniske funktioner :
2 Niels
Christian Jensen. Fourieranalyse. 2004. url: http : / / www . emu . dk / gym / tvaers / sciencegym /
matematik-materialer/fourier.doc, s. 1
7/41
Mathias Kærlev
Fourieranalyse
21-12-2012
M
X
1
2π
2π
f (x) = a0 +
(an · cos( nx) + bn · sin( nx))
2
T
T
n=1
dvs.
1
2π
2π
2π
2π
f (x) = a0 + a1 · cos( x) + b1 · sin( x) + ... + an · cos( nx) + bn · sin( nx)
2
T
T
T
T
Dette kaldes
fourierrækken, hvor an og bn er de såkaldte fourierkoecienter, der siger noget om
amplituden for det enkelte led.
a0 -ledet
kaldes også for DC-ledet.
3
Når man har bestemt fouri-
erspektret for en funktion eller datasæt, har man altså bestemt fourierkoecienterne. Beviset
for, at periodiske funktioner overhovedet kan tilnærmes fourierrækken vil ikke forsøges, men
fourierrækken er udgangspunktet for vores andre beviser. I princippet vil funktionen kunne
bestå af uendeligt mange led, så i teorien burde
lig
∞.
Jo større værdi af
M,
M,
den øvre grænse for summeringen, være
jo tættere på den oprindelige funktion vil fourierrækken være.
1
Meningen med den -koecient for
2
a0
vil vise sig senere.
Til dette projekt vil det være oplagt at nde frekvensspektret for nogle simple funktioner,
mest for at forklare princippet til de praktiske forsøg. Et frekvensspektrum viser fordelingen
mellem frekvens og amplitude, men hvordan kan vores fourierkoecienter sige noget om det?
Hvis vi kender vores periode
T,
kan vi nde frekvensen for cosinus/sinus-ledene ved
Det skyldes, at cosinus/sinus har en periode
2π ,
og at division med
. Dette kaldes også vinkelfrekvensen
T , og derfor får vi 2π
T
ω,
T
f=
1
T
· n.
vil ændre perioden til
der har værdien
2π
, men til vores
T
n siger noget om, hvor hurtigt de harmoniske funkved n = 1. For eksempel vil n = 2 få vinkelfrekvensen
formål bruger vi bare dens værdi. Faktoren
tioner svinger i forhold til det første led
til at være dobbelt så stor, og derfor svinger funktionen altså også dobbelt så hurtigt.
Skal vi se fourierrækken i forhold til toner, vil det sige, at leddene for
om grundtonen, altså tonen med laveste frekvens.
n=2
n = 1
siger noget
siger så noget om 1. overtone,
n=3
an og bn -koecienterne er bølgernes amplitude, da cosinus/sinus
intervallet [1; −1]. Den samlede amplitude for an og bn er deneret som
om 2. overtone, og så videre.
har funktionsværdier i
A=
Hvis
p
a2n + b2n .
f
skal være i Hz, altså SI-enheden for frekvens, kræver det, at perioden
der. Til regneeksemplerne sættes
T
T
er i sekun-
ikke til sekunder, og derfor vil frekvensen være enhedsløs,
men det viser princippet i udregningen.
3 Mogens Oddershede Larsen. Fourieranalyse. 2. udg. (Besøgt d. 20.12.2012). 2007. url: http://www.larsen-
net.dk/files/Fourieranalyse.pdf, s. 1
8/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Ortogonalitetsrelationer
Før vi kan bestemme værdierne af fourierkoecienterne, må vi først vide noget om ortogonalitetsrelationerne for cosinus og sinus. Ved ortogonalitetsrelationerne forstås, at
ˆ
T /2
(1 · cos(
−T /2
ˆ
2π
· nx))dx = 0 ∧ n 6= 0
T
(1)
2π
· nx))dx = 0
T
(2)
T /2
(1 · sin(
ˆ
−T /2
T /2
2π
2π
· nx) · cos(
· mx))dx = 0
T
T
−T /2
ˆ T /2
T f or m = n 6= 0
2π
2π
(sin(
· nx) · sin(
· mx))dx = 2
0 f or n 6= m
T
T
−T /2
ˆ T /2
T f or m = n 6= 0
2π
2π
(cos(
· nx) · cos(
· mx))dx = 2
0 f or n 6= m
T
T
−T /2
(sin(
hvor der gælder, at
n ∈ Z ∧ m ∈ Z,
og at
n ≥ 0 ∧ m ≥ 0.4
(3)
(4)
(5)
Der gælder også nogle andre
ortogonalitetsrelationer, men disse er de eneste, der bruges til beviset for fourierkoecienterne.
Grunden til navnet ortogonalitetsrelationer skyldes, at funktioner kan opfattes som vektorer,
´b
og hvis skalarproduktet f · g =
f (x)g(x)dx er lig 0 med passende grænser for a og b, siges
a
5
funktionerne at være ortogonale.
Skal disse relationer bevises, kan vi starte med
ˆ
T /2
(1 · cos(
−T /2
(1)
for
n 6= 0:
2π
sin(n · π) · T
· nx))dx =
=0
T
n·π
n ∈ Z (n er et heltal) må sin(n · π) altid give 0, da det vil svare til n · 180◦ . sin(1 · 180◦ ) = 0,
sin(2 · 180◦ ) = 0, sin(3 · 180◦ ) = 0, og så videre, og derfor vil ligningen ovenover altid give 0
hvis n 6= 0.
Da
Vi fortsætter med
ˆ
T /2
(2):
2π
(1 · sin(
· nx))dx =
T
−T /2
ˆ
0
T /2
2π
(sin(
· nx))dx −
T
ˆ
T /2
(sin(
0
2π
· nx))dx = 0
T
Integralet af en ulige funktion (her sinus) med grænser, hvis størrelse er lig hinanden, vil altid
være lig
0,
som vi så i afsnittet om lige/ulige funktioner.
4 MT2111
Linear Partial Dierential Equations. (Orthogonality Relations og The Fourier Coecients) (Besøgt d. 20.12.2012). url: http://www.maths.manchester.ac.uk/DeptWeb/UGCourses/Syllabus/Level2/
MT2111Lecture10_2004.pdf.
5 Steen Albrechtsen. Fourieranalyse. Werks Oset Århus, 1991. isbn: 87-983931-0-3, s. 11
9/41
Mathias Kærlev
Vi fortsætter med
Fourieranalyse
21-12-2012
(3). Ser vi på produktet sin( 2π
·nx)·cos( 2π
·mx), er det jo et produkt mellem
T
T
en lige og ulige funktion, hvilket vil give en ulige funktion. Integrerer vi en ulige funktion fra
−T /2
Ved
til
(4)
T /2,
får vi
0,
og det er altså bevist.
har vi produktet
· nx) · sin( 2π
· mx).
sin( 2π
T
T
Ved
m = n > 0
er det vigtigt at se,
6
at vi kan bruge følgende trigonometriske formel :
1
sin(u) · sin(v) = (cos(u − v) − cos(u + v))
2
2π
T
· nx for både u og v i formlen (da m = n):
1
2π
2π
2π
2π
1
2π
2π
· nx)2 = (cos(
· nx −
· nx) − cos(
· nx +
· nx)) = (1 − cos(2 ·
· nx))
sin(
T
2
T
T
T
T
2
T
Vi indsætter parameteren
Integrerer vi det udtryk, og bruger vi sætning 1, får vi:
ˆ
T /2
1
2π
( (1 − cos(2 ·
· nx)))dx =
T
−T /2 2
ˆ
T /2
1
T
( )dx =
2
−T /2 2
Det er bevist.
Ved
n 6= m
sin(
kan vi indsætte
2π
T
· nx
for
u
og
2π
T
· mx
for
v:
2π
2π
1
2π
2π
2π
2π
· nx) · sin(
· mx) = (cos(
· nx −
· mx) − cos(
· nx +
· mx))
T
T
2
T
T
T
T
2πx
1
2πx
1
· (n − m)) − cos(
· (n + m))
= cos(
2
T
2
T
Vi integrerer udtrykket:
1
=
2
ˆ
T /2
2πx
1
cos(
· (n − m))dx −
T
2
−T /2
ˆ
T /2
cos(
−T /2
Af sætning 1 vil både det højre og venstre led gå ud, da
n − m 6= 0
og
2πx
· (n + m))dx
T
n 6= m,
hvilket også vil sige, at
n + m 6= 0.
Lignende bevis gælder for
(5).
Hvis
m = n 6= 0
kan vi bruge en trigonometriske formel og
gentage beviset:
1
cos(u) · cos(v) = (cos(u + v) + cos(u=v))
2
2π
1
2π
2π
2π
2π
1
2π
cos(
· nx)2 = (cos(
· nx +
· nx) + cos(
· nx −
· nx)) = (1 + cos(2 ·
· nx))
T
2
T
T
T
T
2
T
ˆ T /2
ˆ T /2
1
2π
1
T
( (1 + cos(2 ·
· nx)))dx =
( )dx =
T
2
−T /2 2
−T /2 2
Igen, for
m 6= n:
cos(
6 Albrechtsen,
2π
2π
1
2π
2π
· nx) · cos(
· mx) = (cos(
· (n + m)) + cos(
· (n − m)))
T
T
2
T
T
Fourieranalyse, s. 15
10/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Vi integrerer:
1
2
ˆ
T /2
2π
1
cos(
· (n + m))dx +
T
2
−T /2
ˆ
T /2
cos(
−T /2
2π
· (n − m))dx
T
Af sætning 1 følger igen, at ovenstående bliver 0. Det er bevist.
Med disse relationer kan vi nu bestemme værdier for fourierkoecienterne.
Bestemmelse af fourierkoecienter
Tager vi udgangspunkt i denitionen for fourierrækken, kan vi integrere fra
−T
T
til
og eliminere
2
2
nogle led:
∞
X
2π
2π
1
(an · cos( nx) + bn · sin( nx))
f (x) = a0 +
2
T
T
n=1
ˆ
m
ˆ
T /2
T /2
f (x)dx =
−T /2
−T /2
1
a0 · T
a0 dx =
2
2
m
2
a0 =
T
Vi har nu fundet frem til
a0 .
ˆ
∞
X
ˆ
T /2
f (x)dx
−T /2
Ledene fra summen går altså ud, hvilket kan ses ved:
T /2
2π
(cos( nx))dx) + bn ·
(an ·
T
−T /2
n=1
ˆ
T /2
(sin(
−T /2
2π
nx))dx))
T
Vi bruger ortogonalitetsrelationerne (1) og (2):
∞
X
(an · 0 + bn · 0) = 0
n=1
´ T /2
1
a
, så er det den gennemsnitlige værdi for perioden.
f (x)dx er
0
2
−T /2
2
jo lig arealet for hele perioden, og faktoren
vil så give os det dobbelte af den gennemsnitlige
T
Skal vi fortolke værdien
højde/funktionsværdi.
Vi fortsætter med at nde
til
T
. I stedet for
2
n
an .
bruger vi
Vi kan gange et
k
cos( 2π
nx)-led
T
ind, og bagefter integrere fra
−T
2
for summeringen da vi kan bruge én af ortogonalitetsreglerne
til at slippe af med summeringen:
11/41
Mathias Kærlev
Fourieranalyse
ˆ
T /2
(f (x) · cos(
−T /2
ˆ
21-12-2012
2π
nx))dx =
T
∞
X
T /2
1
2π
2π
2π
2π
2π
( a0 · cos( nx) +
(ak · cos( kx) · cos( nx) + bk · sin( kx) · cos( nx)))dx
T
T
T
T
T
−T /2 2
k=1
Vi bruger ortogonalitetsrelationerne (2) og (3):
ˆ
=
∞
X
2π
2π
( (ak · cos( nx) · cos( kx)))dx
T
T
−T /2 k=1
T /2
Vi bruger ortogonalitetsrelationen (5), og slipper af med summerigen, da integralet af de led,
hvor
n 6= k ,
er
0:
=
2
an = ·
T
Beviset for
bn
ˆ
an · T
2
m
T /2
(f (x) · cos(
−T /2
følger i lignende stil, men denne gang ganger vi et
ˆ
T /2
(f (x) · sin(
ˆ
2π
nx))dx
T
−T /2
sin( 2π
nx)-led
T
ind:
2π
nx))dx =
T
∞
X
T /2
2π
2π
2π
2π
2π
1
(an · sin( kx) · cos( nx) + bn · sin( nx) · sin( kx)))dx
( a0 · sin( nx) +
T
T
T
T
T
−T /2 2
k=1
Vi bruger ortogonalitetsrelationerne (1) og (3):
ˆ
=
∞
X
2π
2π
( (bn · sin( nx) · sin( kx)))dx
T
T
−T /2 k=1
T /2
Vi bruger ortogonalitetsrelationen (4), og slipper af med summerigen, da integralet af de led,
hvor
n 6= k ,
er
0:
=
2
bn =
T
Det viser sig så, at
a0
vil svare til
an
ˆ
bn · T
2
m
T /2
(f (x) · sin(
−T /2
ved
2π
nx))dx
T
n = 0 (og det var netop grunden for den
1
-koecient):
2
12/41
Mathias Kærlev
Fourieranalyse
2
a0 = ·
T
ˆ
21-12-2012
T /2
2π
2
(f (x) · cos(
· 0 · x))dx = ·
T
T
−T /2
ˆ
T /2
(f (x) · cos(0))dx
−T /2
cos(0) = 1:
ˆ T /2
2
(f (x))dx
a0 = ·
T
−T /2
Da
an gælder altså også for n = 0!
bn ved n = 0? Lad os regne:
Vores sammenhæng for
Men hvad så med
ˆ
2
b0 = ·
T
T /2
2π
2
(f (x) · sin(
· 0 · x))dx = ·
T
T
−T /2
2
b0 = ·
T
b0
er lig
0.
Der gælder altså for
ˆ
Da
sin(0) = 0:
T /2
2
(f (x) · 0)dx = ·
T
−T /2
an ,
at
n ∈ {0,1,2,...},
ˆ
ˆ
T /2
(f (x) · sin(0))dx
−T /2
T /2
(0)dx = 0
−T /2
og for
bn ,
at
n ∈ {1,2,3,...}.
Regneeksempler
Ulige funktioner
f (x) = x
Vi vælger en ulige, periodisk funktion, f.eks.
T = 2π .
på intervallet
[−π; π],
dvs. med periode
Det giver en såkaldt savtaks-funktion.
Vi nder først
Vi nder nu
a0 : a0 =
an
a1 =
a2 =
a3 =
a4 =
1
π
1
π
1
π
1
π
og
bn
ˆ
π
·
2
T
fra
´ T /2
−T /2
f (x)dx =
1
π
´π
−π
1 ≤ n ≤ 4:
(f (x) · cos(1 · x))dx = 0
ˆ−π
π
·
(f (x) · cos(2 · x))dx = 0
ˆ−π
π
·
(f (x) · cos(3 · x))dx = 0
ˆ−π
π
·
(f (x) · cos(4 · x))dx = 0
−π
f (x)dx = 0
ˆ
1 π
b1 =
(f (x) · sin(1 · x))dx = 2
π −π
ˆ
1 π
b2 =
(f (x) · sin(2 · x))dx = −1
π −π
ˆ
1 π
2
b3 =
(f (x) · sin(3 · x))dx =
π −π
3
ˆ π
1
−1
b4 =
(f (x) · sin(4 · x))dx =
π −π
2
13/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Da vi nu har fundet alle vores ønskede koecienter, kan vi nu bestemme fourierrækken for
funktionen:
4
X
1
2π
2π
2
1
f (x) = a0 +
(an · cos( nx) + bn · sin( nx)) = 2sin(x) − sin(2x) + sin(3x) − sin(4x)
2
T
T
3
2
n=1
Det ses helt klart hvordan fourierrækken kommer tættere og tættere på den oprindelige funktion,
jo ere led vi sætter på:
Graf for fourierrækken ved et stigende antal fourierkoecienter (se bilag 1)
Alligevel burde der nok medtages ere led for at få en pænere approksimation.
Hvorfor er det kun sinus-leddene, der bliver tilbage? Sinus er jo også en ulige funktion. Tager vi udgangspunkt i beviset for
an ,
ˆ
kan vi se, at cosinus ganges ind i integralet for
T /2
(f (x) · cos(
−T /2
f (x):
2π
nx))dx
T
En lige funktion ganget med en ulige funktion må give en ulige funktion, og integrerer vi en
ulige funktion fra
−T /2
til
T /2,
får vi altid værdien
ulige funktioner. Går vi tilbage til
2
an = ·
T
an -koecienterne
ˆ
an ,
0,
som vi så tidligere i afsnittet om lige og
ser vi så, at
T /2
2π
2
(f (x) · cos( nx))dx = ·
T
T
−T /2
vil så altid være
0
ˆ
T /2
h(x)dx =
−T /2
2
·0=0
T
for en ulige funktion.
Frekvensspektret kan vi også bestemme, idet
fn =
1
T
·n =
n
og
2π
An =
p
p
a2n + b2n = 02 + b2n =
|bn |. Da vi til regneeksemplerne ikke bruger enheder, vil resultatet ikke være i Hz, men det viser
stadig princippet i udregningen.
14/41
Mathias Kærlev
Fourieranalyse
f
1
2π
1
π
A
2
2
3
2π
2
3
21-12-2012
2
π
1
2
Lige funktioner
Vi vælger en lige, periodisk funktion, f.eks.
[−π; π].
intervallet
Vi nder først
med periode
T = 2π
på
Det giver en såkaldt triangle-funktion:
a0 :
2
a0 =
T
Vi nder nu
−x f or x ≤ 0
f (x) =
x
f or x > 0
an
og
bn
fra
ˆ
T /2
1
f (x)dx =
π
−T /2
1 ≤ n ≤ 4.
Fordi
f (x)
ˆ
π
f (x)dx = π
−π
er en lige funktion, vil
så udregningerne for dem tages ikke med (beviset kommer senere). Til
an
bn -leddene
gå ud,
bliver vi nødt til
at integrere vores funktion stykkevist, da funktionen selv er deneret stykkevist, dvs. først i
[−π; 0],
intervallet
1
a1 =
π
ˆ
og bagefter i intervallet
[0; π]:
ˆ π
ˆ 0
1
4
(f (x) · cos(1 · x))dx = ( (f (x) · cos(1 · x))dx +
(f (x) · cos(1 · x))dx) = −
π 0
π
−π
−π
ˆ 0
ˆ π
1
a2 = ( (f (x) · cos(2 · x))dx +
(f (x) · cos(2 · x))dx) = 0
π 0
−π
ˆ π
ˆ 0
1
4
a3 = ( (f (x) · cos(3 · x))dx +
(f (x) · cos(3 · x))dx) = −
π 0
9π
−π
ˆ π
ˆ 0
1
a4 = ( (f (x) · cos(4 · x))dx +
(f (x) · cos(4 · x))dx) = 0
π 0
−π
π
Da vi nu har fundet alle vores ønskede koecienter, kan vi nu bestemme fourierrækken for
funktionen:
4
X
1
2π
2π
π
4
4
f (x) = a0 +
(an · cos( nx) + bn · sin( nx)) = − cos(x) −
cos(3x)
2
T
T
2
π
9π
n=1
15/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Med 4 led er det en rimelig approksimation. Alligevel er de skarpe kanter blevet langt blødere,
så måske burde vi havde forsøgt os med nogle ere led.
På samme måde som før kan vi bevise, at
ulige funktion, og
´ T /2
−T /2
f (x) ·
f (x) · sin(x)
bn -leddene
0,
og
bn -leddene
er derfor
Vi laver igen et frekvensspektrum for vores funktion, idet
A
1
2π
π
4
er en lige og
sin(x)
er
er derfor også en ulige funktion. Integralet
nx) er så altid lig
sin( 2π
T
f
f (x)
går ud, da
0.
An =
p
p
a2n + b2n = a2n + 02 = |an |:
3
2π
9π
4
Eksperimenter
Nyquists kritiske frekvens
Til vores forsøg er det vigtigt at vide, at antallet af målinger vi laver, og hvor hurtigt vi
kan lave dem, har en afgørende betydning. Nyquists kritiske frekvens siger, at den maksimale
frekvens, der kan optages, er den halve af samplingsfrekvensen. Det vil sige
fmax = 12 fs hvor fs er
samplingsfrekvensen, dvs. målinger pr. sekund. Hvis vi f.eks. optager med en samplingsfrekvens
1000Hz , vil den største frekvens, vi kan lave fourieranalyse på, være 12 · 1000Hz = 500Hz . Vi
på
kan også fortolke Nyquists kritiske frekvens på en anden måde, hvis vi gerne vil kende grænsen
M .7 Tager vi udgangspunkt i fn = T1 ·n, kan vi jo sætte fn til det halve af samplingsfrekvensen
og isolere n. Hvis T = N · 4t (altså antallet af målinger ganget med tiden mellem målingerne),
1
får vi, at:
· fs = T1 · n ⇔ n = 12 · fs · T = 21 · fs · N · f1s = 12 N . Den største værdi, M bør have,
2
for
er altså det halve af antallet af målinger.
7 Albrechtsen,
Fourieranalyse, s. 33
16/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Fourieranalyse med datasæt
Her kommer den praktiske anvendelse af fourieranalysen ind i billedet. Problemet med fourieranalysen er, at der er mange integraler og beregninger, der skal indgå, når man forsøger
at bestemme frekvensspektret. Her er FFT,
Fast Fourier Transform,
en algoritme, som gør
beregningen meget hurtigere. Programmer som LoggerPro og Datalyse kan lave FFT for os,
men i stedet for reelle fourierkoecienter får vi et frekvensspektrum beregnet og præsenteret.
Princippet bag fourieranalysen er stadig bevaret (selv om FFT bruger komplekse værdier til
udregningen, men det er sådan set sekundært).
I stedet for FFT kunne man dog også kigge på data for én periode og foretage nogle beregninger
derudfra. Normalt kender vi ikke en funktion for vores lydbølge, men kun nogle samples, altså
nogle punkter på grafen for vores lydsignal, og vi skal derudfra beregne vores integraler. Tager
f (tk ) ·
an og bn , skal vi altså nde arealet under grafen for de periodiske funktioner
2π
nx), hvor f (tk ) vil svare til vores måling til tiden tk , dvs.
cos( T nx) og f (tk ) · sin( 2π
T
måling
k
vi udgangspunkt i
4t
(hvor
k = 0 er første måling). Hvis vi lader N
være antal målinger i en periode og hvis
er tiden mellem de enkelte målinger, så får vi en periode
kan vi bestemme arealet af
rektangel med bredde
4t
f (x),
T = N · 4t.
Ved approksimation
hvis vi antager, at arealet under grafen for hver måling er et
og længde
f (x).
Eksempeldata, der viser princippet bag beregningen med rektangler
Ved summering vil det svare til
summeringen vil være
N−
´ T /2
−T /2
f (tk )dt =
N
−1
X
(4t · f (tk )) = 4t ·
k=0
1, da vores k -indeks starter ved
0,
og
k=
N
−1
X
(f (tk )).
Grænsen for
k=0
N ville altså gå ud over
2π
nx) ind:
vores måledata. Vi kan nu nde an ved at gange et cos(
T
ˆ
T /2
N −1
X
2π
2π
f (tk ) · cos( nx)dt = 4t ·
(f (tk ) · cos( n · tk ))
T
T
−T /2
k=0
ˆ
N
−1
X
2 T /2
2π
2
2π
an =
f (tk ) · cos( n · tk )dt = 4t ·
(f (tk ) · cos( n · tk ))
T −T /2
T
T
T
k=0
Da
T = N · 4t
og
tk = k · 4t,
kan vi reducere udtrykket yderligere:
17/41
Mathias Kærlev
Fourieranalyse
21-12-2012
N
−1
N −1
X
2
2π
2 X
2π
· 4t(
n · k · 4t)) =
·(
an =
f (k · 4t) · cos(
f (k · 4t) · cos( n · k))
N · 4t
N · 4t
N k=0
N
k=0
På samme måde kan vi nde et udtryk for
bn ,
dvs.
N −1
2 X
2π
bn =
·(
f (k · 4t) · cos( n · k))
N k=0
N
8
Beviset kunne også være ført ved brug af trapezreglen , men resultatet er det samme.
For at illustrere hvordan man kan bruge vores nye udtryk sammen med reelle data, kan vi lave
et simpelt datasæt:
t/s
0
1
2
3
A
0
1
0
-1
Ifølge Nyquists kritiske frekvens, vil
n
over
N
indeholde for stor en fejl, at disse led ikke bør
2
medtages.
Vi nder derfor kun fourierkoecienterne for
0 ≤ n ≤
4
.
2
N = 4,
da vi har 4 målinger, og
4t = 1s:
3
2 X
2π
a0 = · (
f (k · 1s) · cos(
· 0 · k)) =0
4 k=0
4
3
2 X
2π
b1 = · (
f (k · 1s) · cos( 1 · k)) = 1
4 k=0
4
3
2 X
2π
a1 = · (
f (k · 1s) · cos(
· 1 · k)) =0
4 k=0
4
3
2 X
2π
b2 = · (
f (k · 1s) · cos( 2 · k)) = 0
4 k=0
4
3
2π
2 X
f (k · 1s) · cos(
a2 = · (
· 2 · k)) =0
4 k=0
4
Det vil så svare til følgende fourierrække:
f (t) = b1 · sin(
2π
2π
2π
nt) = sin(
· 1 · t) = sin(
· t)
N · 4t
4 · 1s
4s
Sammenligner vi de oprindelige værdier, passer det endda eksakt:
t/s
0
1
2
3
f(t)
0
1
0
-1
Vi kan nu lave et frekvensspektrum for vores datasæt (de eneste led, der er relevante, er
og
a1
b1 ):
8 Bevis
f/Hz
0,25
A
1
1
1
f = n=
· 1 = 0,25Hz
4s
qT
√
A = a21 + b21 = 02 + 12 = 1
ved trapezregel, Albrechtsen, Fourieranalyse, s. 31
18/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Det er selvfølgelig et simpelt eksempel, men vi har nu bestemt frekvensspektret uden nogen
kendt funktion. Til de følgende eksperimenter vil Datalyse bruges til at lave frekvensspektret,
og
bilag 4
til at nde fourierkoecienter i det første forsøg.
Hvad hvis man ikke kender lydbølgens periode, men kun har nogle vilkårlige måledata? Det er
jo netop det, som Datalyse og LoggerPro kan gøre for os. I det tilfælde kunne man sætte sin
periode til
T = N · 4t,
altså antallet af målinger multipliceret med tiden mellem målingerne,
og så bestemme amplituderne for frekvenserne ved
grundtonen ved
n=1
og overtonerne ved
9
kvenser og spektrale amplituder.
n > 1,
f =
1
T
· n.
I det tilfælde har man jo ikke
men i stedet det, man kalder spektrale fre-
Vi får altså ikke styrken af grundtonen og overtonerne, men
styrken af alle frekvenserne i dataene (til det punkt hvor det er muligt). Ud fra det resulterende frekvensspektrum kan vi alligevel tolke på, hvilke frekvenser og amplituder grundtonen og
overtonerne har, ved at se efter frekvenser, der er særdeles stærke, de såkaldte peaks.
Guitaren
Guitaren som instrument er karakteriseret ved, at den har 6 strenge, der kan slås an. Til
forsøgene vil vi bruge den streng, der har den mindste frekvens, dvs. den nederste streng, der
har tonen
E2
og frekvens omkring
80Hz . Dette skyldes, at frekvensen bør være så lav så mulig,
sådan så vi er sikre på, at vi ikke når op over Nyquists frekvens for vores overtoner. Der er
ere måder at spille en guitar på, men til vores formål vil vi strække strengen ud og lade den
svinge. Da strengen er udspændt i to ender, vil der opstå stående bølger. Der vil så dannes lyd
når strengen skubber til luften, og med de frekvenser, som vi kan forvente fra stående bølger.
10
Hvis vi skal se, hvilke frekvenser vi kan forvente i vores lydoptagelse, kan vi så bruge formlen
v = λ · f ⇔ f = λv . Hvis strengen har længden L, har de stående bølger bølgelængden λn =
11
hvor n = 1 er grundtonen og n > 1 er overtonerne.
2L
,
n
Bølgelængder for forskellige værdier af n
Indsætter vi
λn
i formlen for frekvensen, får vi
fn =
v
2L
n
=
n·v
. Uden værdier for udbredelses2·L
hastigheden og båndlængden, kan vi stadig se på forholdet mellem overtonerne og grundtonen:
fn
f1
= n ⇔ fn = n · f1 .
f1 = 80Hz , og vi kan
f2 = 2 · 80Hz = 160Hz , f3 = 3 · 80Hz = 240Hz , og så videre.
Går vi f.eks. tilbage til vores E-streng, ved vi, at
forvente, at overtonerne vil være
Afhænger amplituden for de forskellige overtoner af, hvor og hvordan guitarstrengen slås an?
Fourieranalyse, s. 53
Claussen, Spektrum - Fysik II, s. 42
11 Jensen, Fourieranalyse, s. 6
9 Albrechtsen,
10 C.
19/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Hvilke amplituder for frekvenserne kan vi forvente i en idealiseret situation, dvs. uden nogen
modstand og anden påvirkning? Med fourieranalyse kan vi kigge på to forskellige begyndelseskongurationer: hvis vi strækker strengen ud på midten og hvis vi strækker strengen ud
enden. Hvis guitarstrengens længde er
L,
og hvis vi strækker guitarens streng afstanden
midten, kan vi opstille en funktion for dette
f (x) =
2d x
f or 0 ≤ x ≤
L
12
d
1
fra
3
ud i
:
L
2
− 2d (x − L) f or L ≤ x ≤ L
L
2
Graf for f (x)
Umiddelbart vil strengen fortsætte med at svinge på denne måde. Vi kan gøre funktionen periodisk i intervallet
[−L; L] med periode 2L ved at forlænge den, så den også svinger under x-aksen:
g(x) = f (x) − f (−x)
Graf for g(x)
Vi kan nu foretage en fourieranalyse på
overtoner. Vi behøver kun at regne
g(x).
Vi medtager op til 6 koecienter, dvs. op til 6
bn -koecienterne,
da
g(x)
er en ulige funktion (mellemreg-
ningerne tages ikke med, men regnes i et CAS-værktøj):
bn =
b2 =
b4 =
b6 =
ˆ
1 L
π
g(x) · sin( nx)dx
L −L
L
ˆ L
1
2π
g(x) · sin( x)dx = 0
L −L
L
ˆ L
4π
1
g(x) · sin( x)dx = 0
L −L
L
ˆ L
1
5π
g(x) · sin( x)dx = 0
L −L
L
Overtonerne med lige
n
ˆ
1 L
π
8d
b1 =
g(x) · sin( x)dx = 2
L −L
L
π
ˆ L
1
−8d
3π
b3 =
g(x) · sin( x)dx =
L −L
L
9π 2
ˆ L
5π
1
8d
b5 =
g(x) · sin( x)dx =
L −L
L
25π 2
går altså ud. Vi kan nu lave et frekvensspektrum:
8d
8d
|= 2
2
π
π
−8d
8d
1
A3 = | 2 | = 2 = · A1
9π
9π
9
8d
8d
1
A5 = |
|=
=
· A1
2
2
25π
25π
25
A1 = |
f
A
f1
A1
12 Jensen,
2f1
0
3f1
1
9
· A1
4f1
5f1
6f1
0
1
25
0
Fourieranalyse, s. 4
20/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Selv om vi ikke kan nde værdier for frekvenserne og amplituderne, er det forholdet imellem
dem, der er interessant. Ifølge vores beregninger burde der komme 2 overtoner,
3. overtones amplitude er
3f1
og
5f1 . Den
1
1
af grundtonens, og 5. overtones amplitude er
af grundtonen,
9
25
mens 2. og 4. overtone helt forsvinder.
Ser vi på det andet udfald, hvor vi trækker guitarstrengen op
1
fra enden, kan vi gentage
3
vores beregninger:
f (x) =
3d x
f or 0 ≤ x ≤
L
L
3
− 3d (x − L) f or L ≤ x ≤ L
2L
3
Graf for f (x)
g(x) = f (x) − f (−x)
Graf for g(x)
ˆ
π
1 L
g(x) · sin( nx)dx
bn =
L −L
L
√
ˆ L
2π
9d · 3
1
g(x) · sin( x)dx =
b2 =
L −L
L
8π 2
√
ˆ L
1
4π
−9d · 3
b4 =
g(x) · sin( x)dx =
L −L
L
32π 2
ˆ
1 L
5π
b6 =
g(x) · sin( x)dx = 0
L −L
L
f
A
f1
A1
2f1
1
4
· A1
3f1
0
4f1
1
16
· A1
5f1
1
25
· A1
6f1
0
I dette tilfælde forsvinder hver 3. overtone helt.
ˆ
√
π
9d · 3
g(x) · sin( x)dx =
L
2π 2
−L
ˆ
1 L
3π
b3 =
g(x) · sin( x)dx = 0
L −L
L
√
ˆ L
1
5π
−9d · 3
b5 =
g(x) · sin( x)dx =
L −L
L
50π 2
1
b1 =
L
L
√
√
9d · 3
9d · 3
A1 = |
|=
2
2
√ 2π
√ 2π
9d · 3
9d · 3
1
A2 = |
|=
= · A1
2
2
8π √
8π √
4
−9d · 3
9d · 3
1
A4 = |
|=
=
· A1
2
2
32π √
32π√
16
−9d · 3
9d · 3
1
A5 = |
|=
=
· A1
2
2
50π
50π
25
Disse to begyndelseskongurationer vil bruges til især det første eksperiment for at se, om
vi tilnærmelsesvis kan se samme forhold for overtonerne. I dette tilfælde er det ufatteligt svært
at genskabe en ideal situation, så en egentlig afvigelses-værdi for amplituderne vil ikke forsøges.
21/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Analyse af lyd fra guitar
Formål
En guitarstrengs frekvensspektrum forsøges bestemt gennem fourieranalyse af lyd. Sammenhængen mellem det punkt, hvor strengen slås an, og amplituderne for overtonerne, sammenlignes med teori-afsnittet. Desuden ønskes fourierspektret bestemt gennem udvælgelse af en enkelt
periode fra lyddataene.
Apparatur
Mikrofon, akustisk guitar, PC med Datalyse, Audacity og Python 2.7
Forsøgsopstilling
Guitaren lægges adt på et bord, og en mikrofon sættes op sådan, at den kan optage tæt på
guitarens lydhul.
Forsøgets udførelse
Mikrofonen sættes til at optage lyddata i programmet Datalyse, hvorefter guitarens E-streng
slås an med et plekter på midten. Ved brug af Datalyses fourieranalyse-funktion ndes frekvensspektret for optagelsen med en blokstørrelse på 8192. Forsøget gentages, men i stedet for
midten slås E-strengen an
1
inde på strengen.
3
Forsøgsresultater
Vi starter med resultaterne for midten af strengen.
Frekvensspektrum for optagelsen
22/41
Mathias Kærlev
Se
bilag 2
Fourieranalyse
21-12-2012
for det resulterende frekvensspektrum, beregnet af Datalyse. Ved aæsning af grafen
ses, at der er nogle helt tydelige peaks, altså nogle toppe på grafen. Skal vi fortolke disse
peaks kan vi se, at lydsignalets grundtone er
1. overtone er
161Hz
med amplitude
23,
81Hz
med amplitude
2. overtone er
237Hz
100,
svarende til tonen
med amplitude
50,
E2 ,
og så videre.
Vi laver et skema over de forskellige peaks (op til 5. overtone):
f/Hz
81
161
237
318
399
481
A
100
23
50
20
42
19
Ifølge guitar-afsnittet passer det godt med vores forventninger. Vi havde jo regnet med, at
grundtonen ville være
E2 , og at overtonerne ville være n · f1 . Overtonerne følger ikke helt vores
forudsigelse, da alle de lige overtoner burde gå helt væk. Der er sikkert nogle fejlkilder behæftet med forsøget, der kan forklare det. Alligevel kan vi se, at de lige overtoner ikke er nær så
stærke som de ulige overtoner, så på den måde er det et acceptabelt resultat.
Lad os fortsætte med dataene fra strengen, der blev slået an
1
inde på strengen. Vi nder
3
et frekvensspektrum gennem Datalyse.
Frekvensspektrum for optagelsen (bilag 3)
Skema over de forskellige peaks:
f/Hz
81
161
-
319
398
480
A
100
57
-
34
22
4
Skal vi sammenligne med teorien, er 2. overtone ved
≈ 240Hz
også gået helt væk! Det var
også det vi forventede. De andre overtoner falder i amplitude, jo længere vi kommer væk fra
grundtonen, så det svarer også overens med teorien.
Præcisionen af vores frekvensspektre skal måske undersøges. Da vi har en blokstørrelse på
8192 (dvs. det antal målinger, der undersøges), vil det sige, at vi har en
T -værdi
på
N · 4t =
1
8192· 44100Hz
≈ 0,1858s. Vi antager her, at Datalyse har en samplingsfrekvens ved optagelser på
44100Hz . f1 er så 1 · T1 ≈ 5Hz , f2 ≈ 11Hz , f3 ≈ 16Hz . Det vil altså sige, at vi kan bestemme
vores frekvenser med en usikkerhed på ±3Hz .
23/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Som sagt kunne vi også kigge på en enkelt periode og nde både frekvensspektret og fourierspektret på den måde. Med programmet Audacity udvælges følgende periode, der ndes lige
efter strengen er slået an ved dataene for optagelse 2:
Billede af lydbølge (bilag 10)
For at gøre beregningerne lidt mere overkommelige, bruges programmet i
bilag 4
til at
beregne fourierkoecienterne. Programmet kræver, at Python 2.7 er installeret, men ellers er
princippet bag programmet allerede blevet forklaret i starten af dette afsnit (dvs. det
beregner koecienterne ved approksimation af arealet for
f (x)).
Med en
4t-værdi
på
125µs
(en sampling rate på 8000Hz), må ovenstående bølge have en periode på
T = N · 4t = 100 · 125µs = 125 · 10−4 s.
Ved brug af de resulterende data fra
bilag 4
laves et
frekvensspektrum:
Frekvensspektret ser ikke ud til at svare til det, vi fandt ved Datalyse. Det må skyldes, at
Datalyse kigger på mange ere perioder, hvor amplituderne kunne have ændret sig, mens vi
kun har valgt en enkelt periode her. Alligevel er resultatet passende med vores teori om, at 2.
overtone burde være meget lavere end resten af overtonerne. Overtonernes amplitude falder
også trinvist, efterhånden som
n
stiger, hvilket vi havde forventet. 4. overtone er en anomali i
forhold til vores teori, men der er igen nogle fejlkilder, der måske kan forklare det.
Fejlkilder
I forhold til fejlkilder er det svært at lave en optagelse helt uden støj fra omgivelserne. Alligevel
er støjens styrke så lille, at den i det resulterende frekvensspektrum er ubetydelig. Desuden
optager vi jo ikke kun den lyd, som strengen laver. Lyden resonerer med guitarens krop, så i
virkeligheden er det hele guitarens lyd, som vi optager. På den måde er vores idealiserede teori
om, at det kun er strengen, der laver lyd, måske ikke opfyldt på ere måder. Afhængigt af, om
guitaren f.eks. er holdt op eller spændt fast kan også gøre, at lyden vil ændre sig. Desuden var
24/41
Mathias Kærlev
Fourieranalyse
21-12-2012
rummet, hvor forsøgene blev gjort, ikke lyddødt. Støj er allerede nævnt, men lyden fra guitaren
kan være reekteret af vægge eller andre overader i rummet, hvilket kunne have resoneret med
strengen eller guitarens krop. Optageudstyret burde der også kigges på, da det kunne være,
at PC'en eller mikrofonen behandler lyden på en uhensigtsmæssig måde, eller at mikrofonens
optageposition kunne gøre en forskel.
Konklusion
Gennem fourieranalyse i Datalyse har vi fundet en guitarstrengs toner og overtoner, samt
dens fourierspektrum. Ud fra teorien om, at der opstår stående bølger på strengen, passer
forsøgets resultater meget godt. Det ligner også, at sammenhængen mellem det punkt, hvor
strengen strækkes ud, og mange af de overtoner vi får, passer med teoriafsnittet, selv om der
for nogle overtoner er nogle uoverensstemmelser. Skal metoden kommenteres, er fourieranalyse
i dette tilfælde med en usikkerhed på
±3Hz
et godt værktøj til analyse af frekvensspektrer.
Analyse af video fra vibrerende guitarstreng
Formål
En guitarstrengs frekvensspektrum forsøges bestemt gennem videoanalyse i et punkt og fourieranalyse.
Apparatur
Akustisk guitar, high-speed kamera (f.eks. Casio EX-ZR100), halogenlampe, PC med Datalyse
Forsøgsopstilling
En guitar sættes oprejst på et bord med en støtte i enden. Kameraet hæves op sådan, at den kan
optage guitarens dybe E-streng ved lydhullet. Da lyset fra omgivelserne ikke er tilstrækkeligt,
bruges i stedet en halogenlampe til at belyse optageområdet. Guitarens E-streng prikkes med
sort tusch, sådan så det bliver nemmere at nde et referencepunkt på optagelsen.
Forsøgets udførelse
Ved brug af et high-speed kamera (i dette tilfælde et Casio EX-ZR100) kan der optages med
1000Hz , altså 1000 billeder pr. sekund (4t =
1
1000Hz
= 10−3 s). Kameraet bør sættes til indstil-
lingen Super Macro, da optageafstanden vil være meget lille. Strengen slås an med et plekter
1
inde på strengen, mens kameraet optager.
3
25/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Billeder fra optagelsen, der viser svingningen
Billede for billede ndes prikkens y-koordinat i video-optagelsen og noteres ned på et regneark.
Da FFT-algoritmen i Datalyse kræver, at antallet af målinger skal være potenser af 2, dvs.
7
laver vi 128 målinger (2
= 128).
Resultaterne for forsøget kan ndes i
bilag
2x ,
5.
Forsøgsresultater
Graf over forsøgsresultaterne (bilag 6)
Dataene importeres manuelt til Datalyse gennem en CSV l. Ved fourieranalyse i Datalyse
ndes frekvensspektret for vores data med blokstørrelse 128 (se
bilag
7). Igen har vi nogle
peaks, som vi kan tolke på.
Frekvensspektrum af data
Ved
78Hz
har vi vores grundtone med amplitude
100,
svarende til tonen
E2 .
Kigger vi på
vores data ligner det da også, at svingningen har en periode, der svarer til 12 målinger, dvs.
f =
1
T
=
1
N ·4t
=
1
12·10−3 s
≈ 83Hz .
om det er svært at se, har vi ved
156Hz har vi vores 1. overtone med amplitude 39.
242Hz vores 2. overtone med amplitude 7.
Ved
Selv
Vi har altså en grundtone og 2 overtoner. I forhold til lydanalysen ligner det, at frekvensspektret er mindre præcist, da afstanden mellem linjepunkterne for frekvenserne i grafen er
større. Det skyldes, at vi kun har 128 målinger, hvilket vil svare til en
T -værdi
på
N · 4t =
26/41
Mathias Kærlev
128 ·
1
1000Hz
Fourieranalyse
= 0,128s. f1
er så
1·
1
T
21-12-2012
≈ 8Hz , f2 ≈ 16Hz , f3 ≈ 23Hz ,
og så videre, så i virkelig-
heden kan vi kun bestemme vores toners frekvenser med en usikkerhed på
±4Hz .
Igen passer det godt overens med vores forventninger om, at der opstår stående bølger på
strengen, og at overtonerne vil være lig
fn = n · f1 .
Alligevel er det besynderligt, at vi kun får
3-4 overtoner. Det er der nok nogle årsager til.
Fejlkilder
Af fejlkilder kan nævnes, at strengen imellem yderpunkterne er utydelig, og ser ud til at være
til stede mellem et større interval. I dette tilfælde blev midtpunktet valgt, men det er ikke
nødvendigvis korrekt. Referencepunktets horisontale position har også afgørende betydning
for, hvilke overtoner der kommer med. I teorien kunne vi jo optage ved ét af knudepunkterne
for en af de stående bølger, og på den måde ville vi ikke få noget udsving for den bølge. Dette
er nok tilfældet for de højere overtoner, der tilmed også har svage amplituder i forhold til
grundtonen. Opløsningen af optagelsen er desuden begrænset til 224x64, så i virkeligheden kan
y-koordinatet højst bestemmes med omkring
32
pixels nøjagtighed, altså mellem de pixels,
hvor strengen svinger. I teorien burde vi ikke være nået op over Nyquists kritiske frekvens, idet
fmax = 21 · 1000Hz = 500Hz . Det ligner heller ikke, at overtonerne over 500Hz
ville have nogen
betydning, da overtonerne forsvinder meget tidligere.
For en mindre usikkerhed på vores frekvenser kunne vi have fundet nogle ere punkter for
svingningen, sådan så
T -værdien
ville være større. Det ville kræve, at vi havde lavet
28 = 256
eller ere målinger, hvilket måske havde været lidt for meget arbejde til vores formål.
Konklusion
Ved videoanalyse, fourieranalyse og det resulterende frekvensspektrum har vi set, at der må
have opstået stående bølger på guitarstrengen. I forhold til en analyse af lyd er præcisionen
af vores måleresultater meget mindre, da vi ikke kan optage med så stor en hastighed, som en
mikrofon kan, og at antallet af målinger nødvendigvis er langt mindre. Med vores video-analyse
har vi ikke kunnet se mange overtoner, men de overtoner, der kom frem, var af de forventede
frekvenser.
Fouriersyntese
Med fouriersyntese forstås, at man kan lave et periodisk signal med de fourierkoecienter,
altså den grundtone og de overtoner, man ønsker. I afsnittet med eksperimenter bestemte vi
frekvensspektret og fourierkoecienterne for en guitarstreng. Ud fra frekvensspektret er det
umiddelbart ikke muligt at genskabe det oprindelige lydsignal, da vi kun kender en amplitude
og en frekvens, hvilket ikke er nok. I princippet skal vi kende til
an
og
bn -koecienterne,
altså
fourierspektret, før vi kan genskabe tonens periodiske signal. Tager vi 15 fourierkoecient-par
27/41
Mathias Kærlev
Fourieranalyse
21-12-2012
fra afsnittet om lydanalyse, kan vi prøve at genskabe lydbølgen fra guitaren i et CAS-værktøj.
Vi indsætter dataene i et regneark (med navnene
antabel
og
bntabel),
og laver en funktion
15
X
1
2π
2π
f (x) = · antabel[1] +
(antabel[n + 1] · cos( nx) + bntabel[n + 1] · sin( nx))
2
T
T
n=1
Vi kan nu tegne grafen for funktionen (funktionen er forskudt ned ad y-aksen, sådan så funktionen svinger omkring x-aksen):
Graf for fouriersyntese i CAS-værktøj (bilag 8)
Sammenligner vi med guren fra
Analyse af lyd fra en guitar,
dvs.
bilag 10,
er lydbølgens
struktur særdeles godt konserveret. Ved at lave en lydl for fourierrækken, kan vi prøve at sammenligne lyden med den fra guitaren.
Bilag 9
er et program, der laver fouriersyntese og gemmer
en lydl med en varighed på 5 sekunder. Princippet er det samme som for CAS-værktøjet, men
i dette tilfælde gemmes der til en lydl i stedet.
Lydlen lyder noget tør. I virkeligheden gentager en lydbølge sig jo heller ikke uden at nogle parametre ændrer sig. Amplituden for de forskellige overtoner og grundtonen vil nok blive
mindre efterhånden som guitarstrengens svingning aftager. Vi kunne undersøge, hvordan koefcienterne ændrer sig over tid, og ændre vores model, sådan så koecienternes værdier aftager.
Det var i hvert fald én måde at gøre det resulterende signal mere virkelighedsnært på.
Som vi så ovenover, så er fouriersyntese et godt redskab til at genskabe en tone. Hvad hvis
vi vil syntetisere alle tonerne for guitaren? Hvis vi havde ændret båndlængden på vores guitarstreng, havde vi selvfølgelig fået en anden grundtone. Antager vi, at den nye tone havde opført
sig ligesom den gamle tone, altså med samme
tese ændre vores
T -værdi,
an
og
bn -værdier,
kunne vi i vores fouriersyn-
sådan så grundtonen passer med den nye tone. Hvis vi antager, at
det gælder for en arbitrær tone på strengen, ville vi kunne syntetisere alle tonerne på den streng.
Havde vi samlet et fourierspektrum for hver streng (eller tone), kunne vi genskabe hver tone på
guitaren. I princippet får vi ved fouriersyntese af disse fourierspektre et elektronisk instrument,
der genskaber instrumentets lyd! Det helt specielle ved de forskellige instrumenter er jo deres
klang,
13
altså sammensætningen af overtoner.
Kunne man genskabe deres klang for forskellige
toner, har man sig altså et elektronisk instrument. Man kunne også have lavet lydoptagelser
13 C.
Claussen, Spektrum - Fysik II, s. 41
28/41
Mathias Kærlev
Fourieranalyse
21-12-2012
for hver tone og streng, men det ville føre til langt mere data, der skal gemmes. Som vi så, så
behøver vi ikke mere end 15 fourierkoecienter for at få genskabt tonen, der overordnet ligner
det oprindelige signal. Den største ulempe ved fouriersyntese er dog, at fourierspektret ikke
indeholder nogen information om, hvordan lydsignalet ændrer sig over ere perioder. Hvis man
ønsker at lave en funktion fra et lydsignal med en enkelt periode er fourieranalyse- og syntese
en ideal løsning, men til et signal, der varierer over tid, må man altså gøre noget mere ved det
syntetiserede lydsignal eller bruge lydoptagelser i stedet.
Fouriersyntese er på den måde en god løsning til at genskabe instrumenters klang. Det skaber
muligheder for f.eks. simple, elektroniske instrumenter, der ikke kan være særlig virkelighedsnære pga. hukommelsesbegrænsninger, eller hvor en realistisk lyd ikke er vigtig.
Konklusion
I denne opgave blev frekvens- og fourierspektret for en guitarstreng både gennem teori og empiri bestemt ved brug af fourieranalyse. Selve fourieranalyse og dens udregning blev bevist
med afsæt i fourierrækken og illustreret gennem regneeksempler med periodiske funktioner.
Med udgangspunkt i fourieranalysen kunne guitarstrengens svingning i en idealiseret situation
forudsiges ved fourieropløsning af forskellige funktioner, der repræsenterede guitarstrengens
begyndelseskonguration. Dette kunne efterprøves i praksis, og til lydanalysen kunne sammenhængen mellem teori og forsøgsresultater spores, idet overtonernes amplitude opførte sig tæt
på det forventede. Videoanalysen viste sig at være begrænset i forhold til de overtoner, der
kunne ndes, men alligevel bekræftede det de stående bølger på strengen. En enkelt periode fra
lyddataene blev genskabt gennem fouriersyntese, og den resulterende funktion viste sig at være
en god tilnærmelse til originalen. Fouriersyntesen kunne altså genskabe en klang, og til f.eks.
simple elektroniske instrumenter ville fouriersyntese være et lettere alternativ til lydoptagelser
eller samples, når man prøver at reproducere en instruments lyd.
29/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Litteraturliste
Albrechtsen, Steen.
Fourieranalyse. Werks Oset Århus, 1991. isbn: 87-983931-0-3.
C. Claussen E. Both, N. Hartling.
Spektrum - Fysik II.
1. udg. Gyldendal, 2004.
isbn:
10-87-
02-00685-5.
Jensen, Niels Christian.
Fourieranalyse.
2004.
url: http : / / www . emu . dk / gym / tvaers /
sciencegym/matematik-materialer/fourier.doc.
Larsen, Mogens Oddershede.
Fourieranalyse. 2. udg. (Besøgt d. 20.12.2012). 2007. url: http:
//www.larsen-net.dk/files/Fourieranalyse.pdf.
Trigonometric Delights. (Besøgt d. 20.12.2012). Princeton University Press, 1998,
198210 (Fourier Theorem). isbn: 9780691095417. url: http://press.princeton.edu/
Maor, Eli.
books/maor/chapter_15.pdf.
MT2111 Linear Partial Dierential Equations. (Orthogonality Relations og The Fourier Coefcients) (Besøgt d. 20.12.2012). url: http://www.maths.manchester.ac.uk/DeptWeb/
UGCourses/Syllabus/Level2/MT2111Lecture10_2004.pdf.
30/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag
Bilag 1: Graf til regneeksempler
31/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 2: Fourieranalyse af lyd fra guitar - anslået på midten (Datalyse)
32/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 3: Fourieranalyse af lyd fra guitar - anslået på (Datalyse)
1
3
33/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 4: Programkode til fourieranalyse (Python)
Data er taget fra en 8000Hz lydl, dvs.
import
4t =
1
8000Hz
= 125µs
med 100 punkter,
N = 100.14
math
data = [
0 , 18 , 21 , 40 , 55 , 76 , 94 , 108 , 125 , 136 , 147 , 152 , 159 , 170 , 175 ,
179 , 182 , 178 , 175 , 174 , 174 , 181 , 188 , 190 , 182 , 157 , 130 , 109 , 92 ,
88 , 99 , 113 , 127 , 136 , 142 , 150 , 163 , 174 , 180 , 190 , 196 , 200 , 198 ,
183 , 164 , 145 , 124 , 107 , 104 , 103 , 108 , 116 , 124 , 137 , 144 , 145 , 145 ,
149 , 153 , 160 , 168 , 169 , 171 , 168 , 158 , 150 , 148 , 148 , 159 , 171 , 173 ,
178 , 175 , 159 , 147 , 136 , 124 , 120 , 118 , 112 , 105 , 94 , 84 , 80 , 80 , 83 ,
93 , 99 , 98 , 99 , 99 , 97 , 90 , 81 , 60 , 45 , 30 , 23 , 15 , 7
]
N = len ( data )
M=N / 2
print
for
'n\tan\tbn\tAn '
n i n xrange (M+1):
an = 0
bn = 0
f o r k i n xrange (N) :
an += data [ k ] * math . cos ((2
bn += data [ k ] * math . si n ((2
an *= 2.0 / N
bn *= 2.0 / N
i f n == 0:
p r i n t '\ t%s ' % an
*
*
math . pi )
math . pi )
*
*
( f l o a t (n * k) / N))
( f l o a t (n * k) / N))
continue
An = math . sqrt ( an ** 2 + bn * * 2)
p r i n t '%s\ t%s\ t%s\ t%s ' % (n , an , bn , An)
14 Inspireret
af Albrechtsens FOURIER.pas, Fourieranalyse s. 83
34/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Output:
n
f
0
an
bn
An
n
f
an
bn
An
253,58
1
80
-39,17
13,9
41,56
26
2080
0,84
-0,19
0,86
2
160
-29,5
18,51
34,83
27
2160
0,59
-0,05
0,59
3
240
-13,64
7,96
15,79
28
2240
1,19
-0,06
1,19
4
320
-21,51
-20,34
29,6
29
2320
1,35
0
1,35
5
400
4,58
-3,79
5,94
30
2400
1,13
-0,08
1,14
6
480
-17,54
8,19
19,35
31
2480
0,89
0,02
0,89
7
560
0,24
-3,44
3,45
32
2560
1,24
-0,2
1,25
8
640
1,39
-0,72
1,56
33
2640
1,19
-0,42
1,26
9
720
2,55
1,35
2,89
34
2720
0,1
-0,17
0,2
10
800
-0,35
5,42
5,44
35
2800
1,45
0,05
1,45
11
880
1,11
-7,69
7,77
36
2880
1,3
-0,11
1,31
12
960
1,75
-0,53
1,82
37
2960
1,06
-0,04
1,07
13
1040
2,35
3,31
4,06
38
3040
0,86
0,15
0,88
14
1120
0,82
0,3
0,88
39
3120
1,06
-0,3
1,1
15
1200
0,84
-1,46
1,69
40
3200
1,13
-0,29
1,17
16
1280
1,83
-1,06
2,12
41
3280
1,18
-0,25
1,21
17
1360
0,43
-0,02
0,43
42
3360
1,21
-0,27
1,24
18
1440
0,57
-0,7
0,91
43
3440
1,51
-0,33
1,55
19
1520
0,82
0,25
0,86
44
3520
1,26
-0,25
1,28
20
1600
0,67
-0,26
0,72
45
3600
1,62
-0,33
1,65
21
1680
0,81
0,09
0,82
46
3680
1,36
-0,26
1,39
22
1760
1,23
0,57
1,36
47
3760
1,34
-0,23
1,36
23
1840
0,31
-0,02
0,31
48
3840
1,29
-0,18
1,3
24
1920
1,15
-0,13
1,16
49
3920
1,23
-0,09
1,23
25
2000
0,85
-0,02
0,85
50
4000
1,21
0,01
1,21
35/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 5: Data for videoanalyse
n
t/s
y
n
t/s
y
n
t/s
y
n
t/s
y
0
0,000
128
30
0,030
208
59
0,059
151
90
0,090
146
1
0,001
130
31
0,031
249
60
0,060
126
91
0,091
156
2
0,002
134
32
0,032
240
61
0,061
121
92
0,092
183
3
0,003
144
33
0,033
200
62
0,062
130
93
0,093
226
4
0,004
160
34
0,034
150
63
0,063
130
94
0,094
246
5
0,005
209
35
0,035
123
64
0,064
134
95
0,095
225
6
0,006
252
36
0,036
123
65
0,065
143
96
0,096
177
7
0,007
240
37
0,037
124
66
0,066
153
97
0,097
139
8
0,008
200
38
0,038
132
67
0,067
183
98
0,098
121
9
0,009
151
39
0,039
134
68
0,068
229
99
0,099
125
10
0,010
123
40
0,040
139
69
0,069
248
100
0,100
130
11
0,011
124
41
0,041
152
70
0,070
224
101
0,101
136
12
0,012
128
42
0,042
184
71
0,071
177
102
0,102
144
13
0,013
129
43
0,043
227
72
0,072
134
103
0,103
154
14
0,014
134
44
0,044
250
73
0,073
118
104
0,104
166
15
0,015
142
45
0,045
226
74
0,074
125
105
0,105
201
16
0,016
148
46
0,046
175
75
0,075
129
106
0,106
245
17
0,017
181
47
0,047
133
76
0,076
135
107
0,107
240
18
0,018
234
48
0,048
122
77
0,077
137
108
0,108
204
19
0,019
251
49
0,049
124
78
0,078
149
109
0,109
156
20
0,020
223
50
0,050
132
79
0,079
164
110
0,110
125
21
0,021
174
51
0,051
131
80
0,080
206
111
0,111
121
22
0,022
132
52
0,052
140
81
0,081
245
112
0,112
125
23
0,023
122
53
0,053
148
82
0,082
241
113
0,113
126
24
0,024
124
54
0,054
161
83
0,083
203
114
0,114
127
25
0,025
129
55
0,055
205
84
0,084
157
115
0,115
136
26
0,026
130
56
0,056
250
85
0,085
124
116
0,116
142
27
0,027
137
57
0,057
237
86
0,086
121
117
0,117
147
28
0,028
145
58
0,058
200
87
0,087
126
118
0,118
182
29
0,029
161
59
0,059
151
88
0,088
132
119
0,119
233
n
t/s
y
120
0,120
249
121
0,121
225
122
0,122
174
123
0,123
133
124
0,124
122
125
0,125
126
126
0,126
128
127
0,127
131
36/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 6: Data for videoanalyse
37/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 7: Fourieranalyse af video - Datalyse
38/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 8: Graf for fouriersyntese i CAS-værktøj
39/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 9: Programkode til fouriersyntese (Python)
Tabeldata taget fra
bilag
3. Programmet gemmer en 44100Hz signed 16bit PCM WAV lydl
med navnet syntese.wav, der er 5 sekunder lang.
import
import
import
wave
math
struct
an_tabel
=
[
−39.17 , −29.50 , −13.64 , −21.51 ,
253.58 ,
−0.35 ,
1.11 ,
1.75 ,
−17.54 ,
4.58 ,
0.24 ,
1.39 ,
2.55 ,
2.35
]
bn_tabel
0,
=
[
13.90 ,
18.51 ,
−7.69 , −0.53 ,
7.96 ,
−20.34 , −3.79 ,
−3.44 , −0.72 ,
8.19 ,
1.35 ,
5.42 ,
3.31
]
T =
1
/
# 81 Hz
# 44100 Hz
# 5 sekunder
81.0
FRAMERATE =
44100.0
TOTAL_TID =
5
def
f (x ):
v
=
0.0
for
k ,
in
an
v += a n
for
k ,
in
bn
v += bn
return
data
=
=
None
=
None
in
x
=
if
*
math . p i )
/
T
*
k
*
x)
*
math . s i n ( ( 2
/
T
*
k
*
x)
*
math . p i )
*
TOTAL_TID ) ) :
=
v
[]
min_value
v
math . c o s ( ( 2
enumerate ( bn_tabel ) :
v
max_value
for
enumerate ( an_tabel ) :
*
x r a n g e ( i n t (FRAMERATE
f (x
/
x ==
FRAMERATE)
0:
max_value
=
min_value
else :
max_value
= max ( v ,
max_value )
min_value
=
min_value )
min ( v ,
da ta . append ( v )
fp
=
w a v e . o p e n ( ' s y n t e s e . wav ' ,
fp . setparams ((1 ,
for
s
in
2,
FRAMERATE ,
' wb ' )
l e n ( data ) ,
'NONE ' ,
None ) )
data :
s
=
(s
s
=
(s
−
−
min_value )
0.5)
*
/
f l o a t ( max_value
−
min_value )
2
f p . w r i t e f r a m e s ( s t r u c t . pack ( ' h ' ,
int (s
*
0 x7FFF ) ) )
fp . c l o s e ()
40/41
Mathias Kærlev
Fourieranalyse
21-12-2012
Bilag 10: Billede af udtræk fra lyddata
41/41
© Copyright 2026