MAT-INF 2360: Obligatorisk oppgave 1



Like dokumenter
MAT-INF 2360: Obligatorisk oppgave 1

TMA Matlab Oppgavesett 2

FYS2130 OBLIG 1 Anders Hafreager

Obligatorisk oppgave nr 4 FYS Lars Kristian Henriksen UiO

Oblig 1 FYS2130. Elling Hauge-Iversen

ITGK - H2010, Matlab. Repetisjon

Øvingsforelesning i Matlab TDT4105

Øvingsforelesning i Matlab TDT4105

TMA Kræsjkurs i Matlab. Oppgavesett 2/3

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

TDT4105 IT Grunnkurs Høst 2014

TMA Kræsjkurs i Matlab. Oppgavesett 3 Versjon 1.2

UNIVERSITETET I OSLO

Matematikk Øvingsoppgaver i numerikk leksjon 6. Løsningsforslag

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

Konvolusjon og filtrering og frevensanalyse av signaler

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

Uke 10: Diskret Fourier Transform, II

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

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Algoritmer - definisjon

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

MATLAB for STK1100. Matematisk institutt Univeristetet i Oslo Januar Enkel generering av stokastiske variabler

Obligatorisk oppgave nr 3 FYS Lars Kristian Henriksen UiO

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Algoritmer og Datastrukturer

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

Obligatorisk oppgave nr 4 FYS Lars Kristian Henriksen UiO

Startpakke for bruk av Matlab

Generell informasjon om faget er tilgjengelig fra It s learning.

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

Om plotting. Knut Mørken. 31. oktober 2003

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

Dagens temaer. Endelig lengde data. Tema. Time 11: Diskret Fourier Transform, del 2. Spektral glatting pga endelig lengde data.

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 35

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag

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

MAT-INF 2360: Obligatorisk oppgave 2

Control Engineering. MathScript. Hans-Petter Halvorsen

EKSAMEN STE 6219 Digital signalbehandling

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

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

41070 STABILITET I ELKRAFTSYSTEMER

Svingninger og Bølger Oblig1 Matthew Terje Aadne

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

STE 6219 Digital signalbehandling Løsningsforslag

TDT4110 IT Grunnkurs Høst 2012

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

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

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

Obligatorisk oppgavesett 1 MAT1120 H16

TDT4105 IT Grunnkurs Høst 2014

Tabell 1: Beskrivende statistikker for dataene

MAT-INF 1100: Obligatorisk oppgave 1

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

Dagens mål. Det matematiske fundamentet til den diskrete Fourier-transformen Supplement til forelesning 8 INF Digital bildebehandling

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker

TDT4102 Prosedyreog objektorientert programmering Vår 2016

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

PG 4200 Algoritmer og datastrukturer Innlevering 2

Bruk av tidsvindu. Diskret Fourier-transform. Repetisjon: Fourier-transformene. Forelesning 6. mai 2004

MAT-INF 1100: Obligatorisk oppgave 1

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Løsningsforslag til hjemmeeksamen i INF3440 / INF4440

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

MAT1030 Diskret Matematikk

Løsningsforslag, Ukeoppgaver 9 INF2310, våren kompresjon og koding del I

UNIVERSITETET I OSLO

Forelesning 29: Kompleksitetsteori

Matematikk Øvingsoppgaver i numerikk leksjon 4 Løsningsforslag

MAT-INF 2360: Obligatorisk oppgave 2

Øvingsforelesning i Matlab (TDT4105)

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

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

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

Plotting av data. Kapittel Plott med plot-funksjonen

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Matematikk Øvingsoppgaver i numerikk leksjon 7 Løsningsforslag

0.1 Morlet wavelets i FYS2130-notasjon (v )

LØSNINGSFORSLAG TIL SIGNALBEHANDLING 1 JUNI 2010

Sted Gj.snitt Median St.avvik Varians Trondheim Værnes Oppdal

Matematikk Øvingsoppgaver i numerikk leksjon 5. Løsningsforslag

Digitalisering av lyd

INF Algoritmer og datastrukturer

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

En innføring i MATLAB for STK1100

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Matlab-tips til Oppgave 2

LØSNINGSFORSLAG TIL EKSAMEN STE 6219 Digital signalbehandling

Løsningsforslag, Ukeoppgaver 9 INF2310, våren kompresjon og koding del I

Transkript:

6. februar, MAT-INF 36: Obligatorisk oppgave Oppgave I denne oppgaven skal vi sammenligne effektiviteten av FFT-algoritmen med en mer rett frem algoritme for DFT. Deloppgave a Lag en funksjon y=dftimpl(x) og en funksjon y=fftimpl(x), som genererer en DFT med hhv. den enkle DFT-algoritmen fra kapittel 3, og FFTalgoritmen fra kapittel 4, og returnerer DFT-en i en vektor y. Forklar algoritmene. Du kan anta at du tar inn en søylevektor av lengde N = n, hvor n er et positivt heltall. Dersom du skriver koden i MATLAB kan du godt bruke koden som er gitt i kompendiet (og som du kan finne på http://folk.uio.no/oyvindry/matinf36/matlab/), men du må likevel forklare algoritmene. Deloppgave b I denne oppgaven skal du teste tidsforbruket til funksjonene i a). Ta utgangspunkt i fila castanets.wav fra kompendiet, som du kan laste ned fra http://folk.uio.no/oyvindry/matinf36/sounds/castanets.wav, og mål tidsforbruket til hver av funksjonene. Bruk bare den første lydkanalen i stereolyden (det vil si første søyle), og test funksjonene for de n første samplene i fila, der n = 4, 5, 6,..., 4. Presenter resultatene i form av et plott der n plottes langs x-aksen. Kommenter resultatene ut fra det som står om numerisk kompleksitet av DFT og FFT i kompendiet. Forsøk også å kjøre koden for høyere verdier av n, og beskriv hva som skjer. Dersom du skriver i MATLAB kan du bruke de innebygde funksjonene tic og toc på følgende måte for å måle tidsbruk:

clear all ; close all ; tic ; start = toc; % Din kode her stop = toc; time_spent = stop-start; En kode som tester de forskjellige verdiene kan i MATLAB se slik ut: close all; clear all; tic; totalstart = toc; [S,Fs] = wavread( castanets ); mono = S(:,); k = 6; final_k = 4; t = zeros(,final_k-k); n =.^(k:final_k); while k <= final_k x = mono(:^k); start = toc; y = DFTImpl(x); stop = toc; time_spent = stop-start; t(,k-5) = time_spent; start = toc; y = FFTImpl(x); stop = toc; time_spent = stop-start; t(,k-5) = time_spent;

vector length slow DFT FFT 6.44.9 7..78 8.7.55 9.88.34.59.64.6969.47.747.578 3..5 4 3.558.57 Tabell : Tabellen viser tidsforbruket til de to DFT-algoritmene for forskjellige verdier av n k = k+; end totalstop = toc; totaltime = totalstop-totalstart; slowtime = t(,:); fasttime = t(,:); semilogx(n, slowtime, ro- ) hold on semilogx(n,fasttime, bo- ) grid on title( time usage of the DFT methods ) legend( slow DFT, FFT algorithm ) xlabel( log_{} n ) ylabel( time used [s] ) Resultatet vises i figur og tabell. Vi ser at FFT-en definitivt er langt raskere for store verdier av n, og vi kan også se proporsjonaliteten dersom vi lager et log-log plot. Dersom vi prøver n = 5, viser det seg at maskina ikke har nok minne til å konstruere fouriermatrisen (Dette er ikke nødvendigvis det tallet som gjelder på datarommet). Oppgave I denne oppgaven skal vi se nærmere på noen egenskaper for DFT til et lydklipp. Først trenger vi en rask implementasjon av invers DFT. 3

35 time usage of the DFT methods 3 slow DFT FFT algorithm 5 time used [s] 5 5 3 4 5 log n Figur : Figuren viser tidsforbruken til funksjonene DFTimpl(x) og FF- TImpl(x) som funksjoner av lengden på vektoren. n-aksen er logaritmisk. Deloppgave a Algoritmen FFTImpl var basert på Teorem 4.4 i kompendiet. Lag på samme måte en implementasjon IFFTImpl av IDFT, som er basert på Teorem 4.5. i kompendiet. Løsning Koden kan se slik ut: function x = IFFTImpl(y) N = length(y); if N == x = y(); else ye = y(::(n-)); yo = y(::n); xe = IFFTImpl(ye); xo = IFFTImpl(yo); D=exp(*pi*j*(:N/-) /N); 4

.5 Frekvensspekteret til castanets.wav Frekvensspekteret til castanets.wav.5 relativ forekomst.5 relativ forekomst.5.5.5.5.5 3 3.5 4 4.5 Frekvens [Hz] x 4 3 4 5 6 Frekvens [Hz] (a) Hele frekvensspekteret (b) området -5 khz Figur : Et bilde av frekvensspekteret, med et utsnitt på det kraftigste området. Figuren bruker absoluttverdien til fourierkoeffisientene. end x=[ xe + xo.*d; xe - xo.*d]/sqrt(); Deloppgave b Lag et plott som viser DFT-verdiene til de første 7 samplene av fila castanets.wav. Plottet skal ha DFT-indeks langs x-aksen. Kommenter. Resultatet vises i figur. Vi ser at fouriertransformen gir en symmetri om midten, som skyldes symmetrien vi har lært om for DFT-koeffisientene for reelle signaler. Spesifikt ser vi for denne lyden at de mest tydelige frekvensene ligger på 5 khz og lavere. Dette stemmer med hva vi hører i lyden. Deloppgave c I neste deloppgave skal vi høre på lyden vi får dersom vi fjerner frekvensene som vi typisk ser på som overflødige. Vi skal betrakte frekvenser på Hz eller høyere som overflødige, og vi må første finne ut hvilke DFT-indekser dette svarer til. Bruk sammenhengen mellom frekvens i Fourierrekker og DFT-indeks i kompendiet til å finne ut hvilke DFT-indekser som svarer til frekvenser under Hz i lydfila. For å finne disse indeksene trenger du 5

også å vite samplingsraten for lyden. Denne skal du ha fått ut når du leste inn fila med kommandoen wavread. I en Fourierrekke svarer den digitale tonen e πint/t til DFT-indeks n. Denne digitale tonen har frekvens ν = n/t. Videre har vi sammenhengen N/f s = T, der T er perioden, det vil si tiden det tar å avspille de første 7 samplene, og der f s er samplingsfrekvensen. Dermed får vi sammenhengen n = νt = νn/f s. Dette betyr at ν = Hz svarer til DFT-indeks n = 7 /44 97. Dette betyr at vi skal nullstille DFT-indekser i [97, 7 97] = [97, 35]: De andre indeksene i [, 7 ] svarer til frekvenser under Hz i lydfila. Du kan også argumentere med at frekvensindeks N/ svarer til frekvens ν = f s /, og regne deg frem til riktig frekvensindeks ut fra dette. Deloppgave d Sett alle DFT-indekser som svarer til frekvenser over khz lik. Ta en invers DFT og spill av det tilbaketransformerte signalet. Beskriv hva du hører. Gjør det samme igjen, men fjern alle frekvenser over 5 khz i stedet. Hint: Det kan hende du får noen komplekse komponenter i det tilbaketransformerte signalet som er i størrelsesorden på maskinnøyaktighet. Dette skyldes små avrundingsfeil og kan enklest løses ved å hente ut kun realdelen av signalet ved kommandoen x=real(x). Vi kan nullstille frekvensene under Hz og avspille lyden ved å skrive [S,fs]=wavread( castanets.wav ); x=s(:^7,); y=fftimpl(x); %indices=97:35; indices=486:6; y(indices) = zeros(length(indices),); %y=skipsmallvals(y,^(-5)*max(abs(y))); xnew=ifftimpl(y); playerobj=audioplayer(real(xnew),fs); play(playerobj); 6

3 Frekvensspekteret til castanets.wav 3 Frekvensspekteret til castanets.wav.5.5 relativ forekomst.5 relativ forekomst.5.5.5.5.5.5 3 3.5 4 4.5 Frekvens [Hz] x 4.5.5.5 3 3.5 4 4.5 Frekvens [Hz] x 4 (a) alt over khz fjernet (b) alt over 5 khz fjernet Figur 3: Figurene viser frekvensspekteret etter at vi har fjernet deler av frekvensbildet. Se tekst for detaljer. Bruker vi ν = 5Hz i stedet over finner vi n = 5 7 /44 486, slik at vi her skal nullstille DFT-indekser i [486, 7 486] = [486, 6]. I koden over trenger vi da bare bytte ut med disse nye indeksene. Figur 3 viser resultatet (for frekvenser over 5 khz er det tilsvarende tallet 5675). Når vi fjerner alt over khz høres lyden nokså lik ut, men fjerner vi alt over 5 khz er den tydelig forringet. Oppgave 3 I denne oppgaven skal vi se på DFT som en måte å gjennomføre kompresjon av lyd med tap av kvalitet. Vi skal igjen fokusere på de første 7 samplene av castanets.wav. Ideen er at vi lagrer bare DFT-verdier over en viss størrelse. Vi satser på at DFT-verdier under en viss terskel bidrar lite i hvordan vi oppfatter lyden, og at vi derfor kan oppnå kompresjon ved bare å lagre de resterende verdiene, som forhåpentligvis ikke er så mange. Deloppgave 3a Skriv en funksjon newy=skipsmallvals(y,epsilon), som returnerer en vektor newy av samme lengde som y, men der alle DFT-verdier med absoluttverdi ɛ er satt til. Funksjonen skal skrive på skjerm hvor stor prosentandel av lydsamplene som ble satt til. 7

Koden kan se slik ut function x = skipsmallvals(y, epsilon) zeroedout=; N = length(y); x = zeros(,n); for i=:n if abs(y(i)) < epsilon x(i) = ; zeroedout=zeroedout+; else x(i) = y(i); end end fprintf( Set %f percent of the DFT values to zero,*zeroedout/n); Deloppgave 3b Kjør funksjonen fra a) på DFT en av de 7 første lydsamplene fra oppgave, med ɛ = 5 max{y}, 3 max{y} og max{y}. Hvor store prosentandeler av lydsamplene ble nullstilt? Hør også på de tilbaketransformerte lydene, og gi kommentarer til kvaliteten i hvert av tilfellene. I koden over kan du kommentere inn koden som kaller skipsmallvals, og kommentere ut koden som setter DFT-verdiene til nulle direkte. For de tre verdiene av ɛ blir henholdsvis.%, 5.5%, og 98.3% av DFT-indeksene nullstilt. På det siste lydklippet høres dette klart, mens det ikke kan høres i det hele tatt på det første. 8