FYS2130 OBLIG 1 Anders Hafreager

Like dokumenter
Oblig 1 FYS2130. Elling Hauge-Iversen

Svingninger og Bølger Oblig1 Matthew Terje Aadne

Noen presiseringer mhp Diskret Fourier Transform. Relevant for oblig 1.

Obligatorisk oppgave nr 4 FYS Lars Kristian Henriksen UiO

MAT-INF 2360: Obligatorisk oppgave 1

FYS2130 Svingninger og bølger, Obligatorisk oppgave C. Nicolai Kristen Solheim

TMA Matlab Oppgavesett 2

MAT-INF 2360: Obligatorisk oppgave 1

0.1 Morlet wavelets i FYS2130-notasjon (v )

Oblig 1 FYS2130 våren 2008

Obligatorisk oppgave nr 3 FYS Lars Kristian Henriksen UiO

Oblig 1 «Basillarmembranen» FYS2130 Svingninger og bølger. Sigurd Elias Stette Studieprogram for Fysikk, Astronomi og Meteorologi UiO 9.

UTVIDET TEST AV PROGRAM

Løsningsforslag til kapittel 11 sampling, kvantisering og lagring av lyd

Lyd. Litt praktisk informasjon. Litt fysikk. Lyd som en funksjon av tid. Husk øretelefoner på øvelsestimene denne uken og en stund framover.

TMA Kræsjkurs i Matlab. Oppgavesett 2/3

Kapittel 2. Fourier analyse. 2.1 Fourier transform*

z = a + jb Mål Komplekse tall: Sum og produkt Komplekse tall

Prosjektoppgave i FYS2130

Frevensanalyse av signaler (del 2) og filtrering av bilder

TMA Kræsjkurs i Matlab. Oppgavesett 3 Versjon 1.2

Introduksjon. «Diskret» sinus/cosinus i 1D. Funksjonen sin(θ) INF april 2010 Fourier -- En annen vinkling på stoffet i kapittel 4

Fourier-Transformasjoner IV

Forkunnskapskrav. Hva handler kurset om. Kontaktinformasjon. Kurset er beregnet på en student som kan

Wavelet-analyse av tidsvariable signaler

WAVELET-ANALYSE Ada Gjermundsen

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

Eksempel 1. Frekvensene i DFT. Forelesning 13. mai På samme måte har vi at. I et eksempel fra forrige uke brukte vi sekvensen

Sampling av bilder. Romlig oppløsning, eksempler. INF Ukens temaer. Hovedsakelig fra kap. 2.4 i DIP

( x+ π 2) Bakgrunn: Sinus og cosinus. Bakgrunn: Samplet sinus i 1D. Bakgrunn: Samplet sinus i 2D. Bakgrunn: Sinus i 2D. sin( x)=cos.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

Obligatorisk oppgave nr 4 FYS Lars Kristian Henriksen UiO

FYS2130 forelesning 1. februar 2013 Noen kommentarer til kapittel 3: Numeriske løsningsmetoder

ITGK - H2010, Matlab. Repetisjon

MAT1110: Obligatorisk oppgave 2, V Løsningsforslag

Generell informasjon om faget er tilgjengelig fra It s learning.

f(t) F( ) f(t) F( ) f(t) F( )

Prosjektoppgave i FYS2130 våren 2009 (m. korrigering mandag kl 1500)

Løsningsforslag til ukeoppgave 12

AUDACITY. Lyninnføring i lydopptak- og redigeringsprogrammet. Fagdag i fysikk, : Lastes ned gratis fra

INF januar 2017 Ukens temaer (Kap med drypp fra kap. 4. i DIP)

INF 1040 høsten 2008: Oppgavesett 9 Sampling og kvantisering av lyd (kapittel 11)

Repetisjon: Sampling. Repetisjon: Diskretisering. Repetisjon: Diskret vs kontinuerlig. Forelesning, 12.februar 2004

TMA Kræsjkurs i Matlab. Oppgavesett 1/3

LØSNINGSFORSLAG TIL SIGNALBEHANDLING 1 JUNI 2010

UNIVERSITETET I OSLO

Prosjektoppgave, FYS-MEK1110 V06 ROBERT JACOBSEN

INF 1040 høsten 2009: Oppgavesett 8 Introduksjon til lyd (kapittel 9 og 10)

Oppgave 1 Finner den z-transformerte for følgende pulstog:

Oblig 3 - Mathias Hedberg

Konvolusjon og filtrering og frevensanalyse av signaler

Matematikk Øvingsoppgaver i numerikk leksjon 5 Litt oppsummering undervegs Løsningsforslag

TMA 4110 Matematikk 3 Høsten 2004 Svingeligningen med kompleks regnemåte

Løsningsforslag til hjemmeeksamen i INF3440 / INF4440

Løsningsforslag til kapittel 10 - Lydbølger

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

Obligatorisk oppgave 1

Oppgave 4. Med utgangspunkt i eksemplet gitt i oppgaveteksten er veien ikke lang til følgende kode i Matlab/Octave:

Kapittel 4. Fourieranalyse. I dette kapitlet skal vi ta for oss en meget Dummy tekst for å spenne ut et åpent felt for et førsteside-opplegg.

UNIVERSITETET I OSLO

Transformanalyse. Jan Egil Kirkebø. Universitetet i Oslo 17./23. september 2019

TDT4105 IT Grunnkurs Høst 2014

5. Fourieranalyse. 5.1 Innledende eksempler

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag

INF Digital representasjon : Introduksjon til lyd

Kapittel 4. Fourieranalyse. Dummy tekst for å spenne ut et åpent felt for et førsteside-opplegg. c 1

Høgskolen i Oslo og Akershus. sin 2 x cos 2 x = 0, x [0, 2π) 1 cos 2 x cos 2 x = 0 2 cos 2 x = 1 cos 2 x =

INF mars 2017 Fourier I -- En litt annen vinkling på stoffet i kapittel 4

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

FYS2130 Svingninger og bølger, Prosjektoppgave V2011. Kandidatnummer 49

MAT-INF 1100: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

Repetisjon: Eksempel. Repetisjon: Aliasing. Oversikt, 26.februar Gitt. Alle signaler. Ettersom. vil alle kontinuerlig-tid signaler.

Uke 10: Diskret Fourier Transform, II

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

EKSAMEN Løsningsforslag

Forelesning, 23.februar INF2400 Sampling II. Øyvind Ryan. Februar 2006

Fourier-analyse. Hittil har vi begrenset oss til å se på bølger som kan beskrives ved sinus- eller cosinusfunksjoner

Fasit til midtveiseksamen

LØSNINGER UKE 6, STK1100. Ekstraoppgave 5 a) Sannsynligheten for at en 75 år gammel kvinne skal bli minst 80 år

Forelesning, 17.februar INF2400 Sampling II. Øyvind Ryan. Februar 2005

Kapittel 4. Fourieranalyse. Dummy tekst for å spenne ut et åpent felt for et førsteside-opplegg. nesten utelukkende til å foreta fouriertransformasjon

Obligatorisk oppgave 3 i FYS-MEK/F1110 våren 2005

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

MAT-INF 1100: Obligatorisk oppgave 1

Eksempel: s d taylor sin x, x = 0, 9

3UDNWLVN DQYHQGHOVH DY ')7

Digitalisering av lyd

sin(2 ui/n) starter på 0 og repeteres u ganger per N samples. cos(2 ui/n) starter på 1 og repeteres u ganger per N samples

Matematikk Øvingsoppgaver i numerikk leksjon 6. Løsningsforslag

Basisbilder - cosinus. Alternativ basis. Repetisjon Basis-bilder. INF april 2010 Fouriertransform del II. cos( )

ECON2130 Kommentarer til oblig

Termodynamikk og statistisk fysikk Oblig 2

MAT-INF1100 Oblig 1. Teodor Spæren, brukernavn teodors. September 16, 2015

Løsningsforslag. Innlevering i BYFE 1000 Oppgavesett 1 Innleveringsfrist: 10. oktober klokka 14:00 Antall oppgaver: 6. Oppgave 1

Digital sampling og analog estetikk

Gruppe: Gruppe-dag: LABORATORIEØVELSE A

Transkript:

FYS23 OBLIG Anders Hafreager 28..29

28..29 OPPGAVE I denne oppgaven skal jeg prøve å bestemme kvalitetsfaktoren (Q-verdien) for svingehårene i basillarmembranen som ligger i øret. Jeg skal gjøre dette for to forskjellige frekvenser innenfor mitt intervall [3,] Hz. Jeg har skrevet et MATLAB-program (se vedlegg ) hvor jeg kan velge to frekvenser f og f2 og programmet vil da 6 ganger spille av en lydsekvens som ved tilfeldighet enten består av samme frekvens eller et bytte halvveis i lydsekvensen. Jeg har lagt inn fase på den andre lyden, så vi ikke får noe hakk mellom et eventuelt frekvensbytte. Etter hver avspilling skriver jeg inn om jeg tror det var samme frekvens eller ikke, og får resultater etter alle avspillingene. Dette vil hjelpe meg i å kunne finne hvilke frekvenser jeg kan høre mer nøyaktig: Frekvens : 44 Hz: # Frekvens / Frekvens 2 [Hz] Resultat [RIKTIGE/GALE] 44 / 447 6/ 2 44 / 445 6/ 3 44 / 444 6/ 4 44 / 443 6/ 5 44 / 442 3/3 6 44 / 44.5 /6 Tabell : Resultat etter forsøket i oppgave med 44 Hz som grunnfrekvens Her ser jeg at jeg klarer tydelig å høre forskjell helt til 443 Hz ( f = 6 Hz), tabellen viser at jeg ikke er konsistent på lavere frekvenser enn det. Jeg kan derfor konkludere med en Q-verdi regnet ut med dette valget for f. Vi får da: Q 44 = f f = 44 6 = 73. Frekvens 2: 88 Hz: # Frekvens / Frekvens 2 [Hz] Resultat [RIKTIGE/GALE] 88 / 89 6/ 2 88 / 888 6/ 3 88 / 887 6/ 4 88 / 886 6/ 5 88 / 885 6/ 6 88 / 884 5/ 7 88 / 883 4/2 Tabell 2: Resultat etter forsøket i oppgave med 88 Hz som grunnfrekvens Etter disse resultatene ser jeg at jeg med sikkerhet kan avgjøre toneforskjeller med en f = Hz. Dette gir: Q 88 = 88 = 88. Konklusjon: Ved høyere frekvenser har jeg en høyere Q-verdi. Dette virker rimelig siden vi har best hørsel i mellomtoneområdet, rundt Hz. Det kan være flere feilkilder her, det kan f.

28..29 eks. være kvantiserte målinger av frekvensforskjeller (hører på hele Hz). Flere kommentarer om Q-verdier kommer i Oppgave 2. OPPGAVE 2 I denne oppgaven skal jeg finne hvilken minste tid t en lyd må spilles av i for å kunne gjenkjenne tonen. Har laget et MATLAB-program for dette (se vedlegg 2). Programmet er et lite spill hvor den 6 ganger spiller av to lyder med,3 sekunders mellomrom, den ene er rask (det er denne tiden jeg skal finne), den andre er lang så jeg tydelig hører hvilken tone det var. Halvparten av gangene spiller den samme lyd, den andre halvparten er første lyd en lyd som er noe ulik ( f står oppført i tabellen). Jeg blir bedt om å si om det er samme lyd etter hver gang, og får resultatet etter de 5 gangene. I tabell 3 har jeg tatt med noen forsøk med forskjellige frekvenser og tidslengder på den korte lyden. Utførelse: # Grunnfrekvens [Hz] f [Hz] t [ms] 2 [RIKTIGE/GALE] t f 4 2 8 6/,96 2 4 8 8 6/,64 3 4 4 8 6/.32 4 4 2 6 5/,72 5 4 8 6 6/,48 6 4 4 6 2/4,24 7 4 2 4 6/,48 8 4 8 4 6/,32 9 4 4 4 3/3,6 4 2 2 3/3,24 4 8 2 3/3,6 2 4 4 2 /5,8 Tabell 3: Resultater etter flere forsøk på å finne laveste tid t en lyd kan spilles for å kunne avgjøre frekvensen. Konklusjon: Legger merke til at tallet f t er en viktig faktor. Jo lavere frekvensforskjell f jeg har mellom to toner, jo lengre tid t trenger jeg for å kunne avgjøre om det er samme tone eller ikke. Dette er tett knyttet opp mot Q-verdiene vi fant i oppgave. En høy Q-verdi betyr at vi er i stand til å kunne skille nærligge frekvenser, men trenger desto lengre tid for å kunne gjøre det. Q-verdien er direkte knyttet opp til tiden det tar før en svingning (på f. eks. hårene i øret) har stabilisert seg og kan måles nøyaktig. Vi ser derfor at jo høyere tall f t vi har, jo lettere er det å avgjøre hvilken frekvens det er. 2

28..29 OPPGAVE 3 Del : Her skal jeg fouriertransformere en bit av de to lydfilene jeg har og tilbaketransformere før jeg spiller av. Den første fila, lydfil2.wav, har en lengde på 62 samplinger. For å få rask transformasjon velger jeg ut 2 n samplinger av lydfila fra sampling 8. Jeg bruker da samplingene i intervallet [8, 2 6 +8] = [8, 73536]. Grunnen til at jeg korter ned fila er fordi 2 6 < lengt lydfil2. wav < 2 7. Hadde jeg brukt 2 7 ville jeg fått en god mengde samplinger med verdi, og fourierspekteret ville bestått av en utrolig kompleks og feil mengde med frekvenser for å skape disse -verdiene. Koden brukt for å gjøre denne oppgaven ligger som Vedlegg 3. Jeg gjør som beskrevet over for begge lydfilene og kan verken høre eller se (se figur og 2) noen forskjell i de to lydsnuttene (før og etter transformasjon) for noen av lydfilene. Vi kan også ta og sjekke differansen mellom kvadratet av de to N-dimensjonale tuplene for lydarrayet før og etter transformasjonen, denne fant jeg til å være s,8 4 for lydfil2.wav, en svært liten feil. Vi kan altså konkludere med at transformasjonen ikke gjør noe særlig med tidsrommet! (Det kan naturligvis forekomme avrundingsfeil og andre unøyaktigheter). Opprinnelig tidsfunksjon (lydfil2.wav) Tilbaketransformert tidsfunksjon (lydfil2.wav).8.8.6.6.4.4.2 -.2 -.4 -.6.2 -.2 -.4 -.6 -.8.5.5 Figur 2: Tidsfunksjon før og etter uret fouriertransformasjon på lydfil2.wav -.8.5.5.8 Opprinnelig tidsfunksjon (YelloBostich2.wav).8 Tilbaketransformert tidsfunksjon (YelloBostich2.wav).6.6.4.4.2.2 -.2 -.4 -.6 -.8 -.2 -.4 -.6 -.8 -.5.5 -.5.5 Figur : Tidsfunksjon før og etter uret fouriertransformasjon på YelloBostich2.wav 3

Relativt styrke Relativt styrke 28..29 Del 2: Her skal jeg randomisere de transformerte fasene før vi transformerer tilbake og spiller av. Jeg passe på at amplituden A n = Real z w 2 + Imag z w 2 må være konstant for alle frekvensene i fourierspekteret. Det vi skal modifisere, er fasen for hver frekvens φ = arctan Imaag z w, altså forholdet mellom real- og imaginær-delen til det komplekse Real z w tallet. Jeg velger å ta en vilkårlig fase i intervallet,2π og beregne real- og imaginærdelen (a og b) ved: a n = A n cos φ b n = A n sin(φ) der φ er den nye fasen, og det nye komplekse tallet er gitt ved z n = a n + ib n Dette gjøres for alle frekvensene i fourierspekteret. Vi kan se at fourierspekteret er identisk før og etter randomisering (se figur 3), noe som er riktig siden vi har plottet kun amplituden for hver frekvens (A n som ikke rer seg under faserandomisering). 8 x -3 Foureier-spekteret før randomisering (amplitude for hver frekvens) 8 x -3 Foureier-spekteret etter randomisering (amplitude for hver frekvens) 7 7 6 6 5 5 4 4 3 3 2 2.5.5 2 2.5 Frekvens (Hz) x 4 Figur 3: Lydplot før og etter fouriertransformasjon av lydfil2.wav.5.5 Frekvens (Hz) 2 2.5 x 4 Når jeg tilbaketransformerer til tidsrommet og plotter det, ser jeg et helt annet plot enn den opprinnelige tidsfunksjonen (se figur 4 og 5). Dette er jo naturlig siden fasene ligger til grunn for at komplekse sammensetninger av cosinus- og sinus-funksjoner skal gjengi nøyaktig de samplingene vi har. Opprinnelig tidsfunksjon.6 Tilbaketransformert tidsfunksjon.8.4.6.4.2.2 -.2 -.4 -.6 -.2 -.4 -.6 -.8.5.5 Figur 4: Tidsfunksjon før og etter faserandomisering av lydfil2.wav -.8.5.5 4

28..29.8 Opprinnelig tidsfunksjon.25 Tilbaketransformert tidsfunksjon.6.2.4.5.2. -.2.5 -.5 -.4 -. -.6 -.5 -.8 -.2 - -.25.5.5.5.5 Figur 4: Tidsfunksjon før og etter faserandomisering av YelloBostich2.wav Lyden høres svært annerledes ut for begge lydfilene, trommeslagene blir til ren støy og det vil være umulig å gjenkjenne akkurat den lyden. Den andre lydfilen er mer gjenkjennelig. Del 3: Her er oppgaven å nullstille fasene. Dette betyr i praksis å gjøre tallene i fourierspekteret om til bare reelle tall, siden sin φ = =. Programmet for denne oppgaven ligger som vedlegg 4. Plott for tidsfunksjoner har jeg i figur 5 og 6..8 Opprinnelig tidsfunksjon 2 Tilbaketransformert tidsfunksjon.6.4.2 8 6 -.2 -.4 -.6 -.8 4 2 -.5.5 Figur 5: Tidsfunksjon før og etter nullstilling av faser for YelloBostich2.wav -2.5.5 5

28..29 Opprinnelig tidsfunksjon 4 Tilbaketransformert tidsfunksjon.8.6 3.4 2.2 -.2 -.4 -.6 - -.8.5.5 Figur 3: Tidsplot etter nullstilling av faser for lydfil2.wav -2.5.5 Vi kan tydelig høre forskjell på lydene etter nullstilling av fasene. Vi hører en slags gjentakelse (det ser vi jo på tidsplottet, det er en speiling om midten). Men det er her mulig å gjenkjenne lyden i motsetning til randomiseringen hvor trommelyden ble til ren støy. Lyden blir allikevel svært forandret! Konklusjon: Vi ser tydelig at modifisering av faser er hørbart. Det var en stor forskjell på resultatet etter de samme forandringene på de to lydene. Trommeslagene er jo ikke en rent sammenhenge lyd, det er mer to pulser av lyder (hvert slag), og frekvensspekteret blir derfor ganske mye mer komplisert og består av langt flere frekvenser enn den andre lyden. I trommelyden har vi flere samplinger med svært lite lyd, og det krever derfor mange forskjellige frekvenser til for å kunne gjenskape både lyd og stillhet ved rene sinus- og cosinus-funksjoner. Det er derfor randomisering av faser for trommeslagene blir såpass annerledes, faseinformasjonen er kjempeviktig for at de forskjellige funksjonene (med forskjellige frekvenser) skal utlikne hverandre og skape tidspunkt med lite lyd og samtidig lage trommelydene riktig. 6

28..29 KODEVEDLEGG: Oppgave : function oppg(pl,extraphase) close all; %Lukk alle r Fs = 225; %Samplingsfrekvens tid = ; %Lengde i sekunder N = Fs*tid; %Antall samplinger totalt t = linspace(,tid,tid*fs); D2 = zeros(,fs*tid/2); %Bestem frekvens f = 884; f2 = 88; %Generer vinkelfrekvens w = 2*pi*f; w2 = 2*pi*f2; %Her lager jeg en sammenhengene lyd med to frekvenser (enten samme to %ganger, eller to forskjellige) soundsame = zeros(tid*fs,); %Tom plass til lyd sounddifferent = zeros(tid*fs,); midtnedre = floor(n / 2); midtovre = midtnedre+; %Neste sample soundsame(:midtnedre) = sin(w*t(:midtnedre)); soundsame(midtovre:n) = sin(w*t(midtovre:n)); sounddifferent(:midtnedre) = sin(w2*t(:midtnedre)); phase = asin(sounddifferent(midtnedre)) - (w*t(midtnedre)); sounddifferent(midtovre:n) = sin(w*t(midtovre:n)+phase+extraphase); %Gjør klar variabler for de 6 avspillingene i = ; riktig = ; feil = ; y = 'y'; n = 'n'; a = ; b = ; z = zeros(,6); if(pl == ) %Plot rundt midtpunktet for å se om fasen må forskyves med ytligere pi %radianer plot(t(fs*.5-:fs*.5+),soundsame(fs*.5-:fs*.5+)) %plot(t,soundsame) title('samme lyd'); plot(t(fs*.5-:fs*.5+),sounddifferent(fs*.5- :Fs*.5+)) %plot(t,sounddifferent) title('annen lyd'); 7

28..29 input('trykk når du er klar...'); while(i<=6) r = rand(); if(r>.5) wavplay(soundsame,fs); a = a + ; z(i) = ; else wavplay(sounddifferent,fs); b = b + ; ans = 2; %Random value!= y n while(ans ~= y && ans ~= n) ans = input('was that the same sound? (y/n)'); if((ans == y && r>.5) (ans == n && r<=.5)) riktig = riktig + ; else feil = feil + ; i = i + ('Riktig:') riktig ('Galt:') feil Oppgave 2: function oppg2() Fs = 225; %Samplingsfrekvens t2 =.5; %Totalt tid i s t = 2 * (/); %ms pausetime =.2; t_ = linspace(,t,t*fs); t_2 = linspace(,t2,t2*fs); D = zeros(,t*fs); D2 = zeros(,t2*fs); D3 = zeros(,t*fs); %Bestem frekvens f = 44; f2 = 444; %Generer vinkelfrekvens w = 2*pi*f; w2 = 2*pi*f2; D = sin(w*t_); %Lag lyd med den ene frekvensen D2 = sin(w*t_2); %Lag lyd med den ene frekvensen D3 = sin(w2*t_); %Her lager jeg en sammenhengene lyd med to frekvenser (enten samme to %ganger, eller to forskjellige) 8

28..29 soundsame = ;%Nullstill zeros(length(d) + length(d2) + 2*Fs*pauseTime,); %Tom plass til lyd sounddifferent = ; %zeros(length(d3) + length(d2) + 2*Fs*pauseTime,); %Regn ut plasseringer av lydene i lydsekvensen shortsoundstart = Fs*pauseTime+; shortsoundend = shortsoundstart + length(d) - ; longsoundstart = shortsoundend + Fs*pauseTime + ; longsoundend = longsoundstart + length(d2) - ; %Lag lydene soundsame(shortsoundstart:shortsoundend) = D; phase = asin(soundsame(shortsoundend)); % - w*t_(shortsoundend); %Beregn fase for overgangen D2 = sin(w*t_2+phase); %Lag ny lyd soundsame(longsoundstart:longsoundend) = D2; sounddifferent(shortsoundstart:shortsoundend) = D3; phase = asin(sounddifferent(shortsoundend)); %Beregn fase for overgangen D2 = sin(w*t_2+phase); %Lag ny lyd sounddifferent(longsoundstart:longsoundend) = D2; i = ; riktig = ; feil = ; y = 'y'; n = 'n'; a = ; b = ; z = zeros(,6); input('trykk når du er klar...'); while(i<=6) r = rand(); if(r>.5) wavplay(soundsame) a = a + ; z(i) = ; else wavplay(sounddifferent) b = b + ; ans = 2; while(ans ~= y && ans ~= n) ans = input('was that the same sound? (y/n)'); if((ans == y && r>.5) (ans == n && r<=.5)) riktig = riktig + ; else feil = feil + ; i = i + ('Riktig:') riktig 9

28..29 ('Galt:') feil Oppgave 3a: function oppg3() m = 'Sound (wav) file'; c = 'YelloBostich2.wav'; %nstart=8 N = 24*64; %2^n for at det skal gå fort nstart = 8; %Hvor i lydfila starter vi? [y,fs,type] = wavread(c); nslutt = length(y); %Hvor slutter vi? length(y) y = y(nstart:nslutt); %kutt lydsnutten %Fyll ut lydarrayet vårt, begrens oss til 2^n if(length(y) > N) sound = y(:n); else sound = zeros(,n); sound(:length(y)) = y; %Total tid lydsnuttet tar i sek T = N/Fs; t = linspace(,t,n); %lag tidsarray for tidsromplot hold off plot(t,sound) %plot lyden FØR transformasjon title('opprinnelig tidsfunksjon (YelloBostich2.wav)'); xlabel(''); ylabel(''); wavplay(sound,fs) %Spill av lyden FØR transformasjon G = fft(sound,n)/n; %Utfør FFT m = abs(g); %Beregn absoluttverdien til de transformerte (komplekse) tallene M = N; f_max = N/T; f = linspace(,f_max*(n-)/n,n); r = ifft(g,n)*n; plot(t,r) title('tilbaketransformert tidsfunksjon (YelloBostich2.wav)'); xlabel(''); ylabel(''); norm(sound.^2-r.^2) %Beregn normen til differansvektoren mellom lydene plot(f(:m/2),2*m(:m/2),'s'); wavplay(r,fs) title('foureier-spekteret (amplitude for hver frekvens)'); xlabel('frekvens (Hz)'); ylabel('relativt styrke');

28..29 Oppgave 3b) function oppg3b close all; format long m = 'Sound (wav) file'; %c = 'lydfil2.wav'; %nstart=8 c = 'YelloBostich2.wav'; N = 24*64; %2^n for at det skal gå fort nstart = 8; %Hvor i lydfila starter vi? [y,fs,type] = wavread(c); %Les inn lydfil nslutt = length(y); %Hvor slutter vi? y = y(nstart:nslutt); %kutt lydsnutten %Fyll ut lydarrayet vårt, begrens oss til 2^n if(length(y) > N) sound = y(:n); else sound = zeros(,n); sound(:length(y)) = y; T = N/Fs; %Total tid lydsnuttet tar i sek t = linspace(,t,n); %lag tidsarray for tidsromplot G = fft(sound,n)/n; %Utfør FFT G_rand = randomizephase(g); %Randomiser faser m = abs(g); %Beregn absoluttverdien til de orginale transformerte (komplekse) tallene m_rand = abs(g_rand); %Beregn absoluttverdien til de randomiserte transformerte (komplekse) tallene M = N; f_max = N/T; f = linspace(,f_max*(n-)/n,n); sound_ifft = real(ifft(g_rand,n))*n; %Transformer tilbake plot(t,sound) %plot lyden FØR transformasjon title('opprinnelig tidsfunksjon'); xlabel(''); ylabel(''); plot(f,real(g)) hold on plot(f,imag(g),'r') % plot(t,sound_ifft) %plot lyden ETTER transformasjonen title('tilbaketransformert tidsfunksjon'); xlabel(''); ylabel('');

28..29 plot(f(:m/2),2*m(:m/2),'s'); %plot(f,2*m,'s'); title('foureier-spekteret før randomisering (amplitude for hver frekvens)'); xlabel('frekvens (Hz)'); ylabel('relativt styrke'); plot(f(:m/2),2*m_rand(:m/2),'s'); %plot(f,2*m_rand,'s'); title('foureier-spekteret etter randomisering (amplitude for hver frekvens)'); xlabel('frekvens (Hz)'); ylabel('relativt styrke'); function G_rand = randomizephase(g) G_rand = zeros(,length(g)); for i=:length(g) phi = rand()*2*pi; A = sqrt(real(g(i))^2 + imag(g(i))^2); a = A*cos(phi);%*(real(G(i))/abs(real(G(i)))); b = A*sin(phi);%*(imag(G(i))/abs(imag(G(i)))); G_rand(i) = a + b*sqrt(-); Oppgave 3c) function oppg3c close all; format long m = 'Sound (wav) file'; c = 'lydfil2.wav'; %nstart=8 %c = 'YelloBostich2.wav'; N = 24*64; %2^n for at det skal gå fort nstart = 8; %Hvor i lydfila starter vi? [y,fs,type] = wavread(c); %Les inn lydfil nslutt = length(y); %Hvor slutter vi? y = y(nstart:nslutt); %kutt lydsnutten %Fyll ut lydarrayet vårt, begrens oss til 2^n if(length(y) > N) sound = y(:n); else sound = zeros(,n); sound(:length(y)) = y; T = N/Fs; %Total tid lydsnuttet tar i sek t = linspace(,t,n); %lag tidsarray for tidsromplot G = fft(sound,n)/n; %Utfør FFT G_rand = randomizephase(g); %Randomiser faser 2

28..29 m = abs(g); %Beregn absoluttverdien til de orginale transformerte (komplekse) tallene m_rand = abs(g_rand); %Beregn absoluttverdien til de randomiserte transformerte (komplekse) tallene M = N; f_max = N/T; f = linspace(,f_max*(n-)/n,n); sound_ifft = real(ifft(g_rand,n))*n; %Transformer tilbake plot(t,sound) %plot lyden FØR transformasjon title('opprinnelig tidsfunksjon'); xlabel(''); ylabel(''); plot(t,sound_ifft) %plot lyden ETTER transformasjonen title('tilbaketransformert tidsfunksjon'); xlabel(''); ylabel(''); plot(f(:m/2),2*m(:m/2),'s'); title('foureier-spekteret før randomisering (amplitude for hver frekvens)'); xlabel('frekvens (Hz)'); ylabel('relativt styrke'); plot(f(:m/2),2*m_rand(:m/2),'s'); title('foureier-spekteret etter randomisering (amplitude for hver frekvens)'); xlabel('frekvens (Hz)'); ylabel('relativt styrke'); wavplay(sound,fs) %Spill av lyden FØR transformasjon pause(.5) wavplay(real(sound_ifft),fs) function G_rand = randomizephase(g) G_rand = zeros(,length(g)); for i=:length(g) phi = ; A = sqrt(real(g(i))^2 + imag(g(i))^2); a = A*cos(phi); b = A*sin(phi); G_rand(i) = a + b*sqrt(-); 3