Hur göra oktavbred glättning?

Hur funkar tekniken bakom bra hifi?

Moderator: Redaktörer

Användarvisningsbild
Svante
Audiot!
 
Inlägg: 37552
Blev medlem: 2004-03-03
Ort: oakustisk

Hur göra oktavbred glättning?

Inläggav Svante » 2008-02-10 15:46

Ja, alltså, hur glättar ("smoothar") man en tonkurva på snabbast möjliga sätt?

Jag har en tonkurva som kommer från en FFT. Frekvensaxeln är alltså linjär.

Bild

Typiskt blir då kurvan ganska snäll vid låga frekvenser men fladdrar väldigt mycket upp och ner vid höga frekvenser. På gamla kurvskrivarnas tid var detta inget problem, man begränsade ju skrivhastigheten och eftersom man hade logsvep så blev kurvan mer utjämnad vid höga frekvenser än vid låga.

Lösningen som jag har just nu består av ett glättningsfilter med variabel fönsterbredd. För varje mätpunkt lägger jag ett hanningfönster ("raised cosine") på ett område som är tex 1/12 oktav brett kring mätpunkten. Därefter medelvärdesbildar jag över fönstret och får på så sätt ett nytt glättat värde för varje mätpunkt. Resultatet blir så här:

Bild

Ganska snyggt, men just den här medelvärdesbildningen, med en 65536-punkters FFT tog 17 sekunder att göra. Det är på tok för långsamt. Man kan iofs förstå att det tar lång tid, jag beräknar ju ett nytt fönster för varje punkt, dvs uppe i diskanten blir det massor med cosinusar och summeringar att göra för varje mätpunkt.

Att försöka sig på 1/3 eller 1/1-oktavbredd är inte att tänka på.

Så: Min fråga är om det finns nåt sätt att snabba upp det här. Det som är knepigt är att filtret behöver innesluta olika många punkter vid olika frekvenser, så jag kommer inte på nåt.

Förslag?
Så länge har jag längat efter att loudness war skulle vara över. Nu börjar jag tro att vi faktiskt är där. Kruxet är att vi förlorade.

MacBruce
 
Inlägg: 3720
Blev medlem: 2007-10-29

Re: Hur göra oktavbred glättning?

Inläggav MacBruce » 2008-02-10 16:18

Svante skrev:Bild

Ganska snyggt, men just den här medelvärdesbildningen, med en 65536-punkters FFT tog 17 sekunder att göra. Det är på tok för långsamt. Man kan iofs förstå att det tar lång tid, jag beräknar ju ett nytt fönster för varje punkt, dvs uppe i diskanten blir det massor med cosinusar och summeringar att göra för varje mätpunkt.

Att försöka sig på 1/3 eller 1/1-oktavbredd är inte att tänka på.

Så: Min fråga är om det finns nåt sätt att snabba upp det här. Det som är knepigt är att filtret behöver innesluta olika många punkter vid olika frekvenser, så jag kommer inte på nåt.

Förslag?


Nu var det ett tag sedan, men... På den tiden man körde med 8-bitars-processorer och 1 MHz klockhastighet, brukade man ibland använda medianvärdet i stället för medelvärdet, då det krävde färre och snabbare beräkningar. Det kräver visserligen en sortering, alternativt en "smart" insert-metod, men ger ändå en tidsmässig vinst.
--

Användarvisningsbild
Svante
Audiot!
 
Inlägg: 37552
Blev medlem: 2004-03-03
Ort: oakustisk

Re: Hur göra oktavbred glättning?

Inläggav Svante » 2008-02-10 16:33

MacBruce skrev:
Svante skrev:Bild

Ganska snyggt, men just den här medelvärdesbildningen, med en 65536-punkters FFT tog 17 sekunder att göra. Det är på tok för långsamt. Man kan iofs förstå att det tar lång tid, jag beräknar ju ett nytt fönster för varje punkt, dvs uppe i diskanten blir det massor med cosinusar och summeringar att göra för varje mätpunkt.

Att försöka sig på 1/3 eller 1/1-oktavbredd är inte att tänka på.

Så: Min fråga är om det finns nåt sätt att snabba upp det här. Det som är knepigt är att filtret behöver innesluta olika många punkter vid olika frekvenser, så jag kommer inte på nåt.

Förslag?


Nu var det ett tag sedan, men... På den tiden man körde med 8-bitars-processorer och 1 MHz klockhastighet, brukade man ibland använda medianvärdet i stället för medelvärdet, då det krävde färre och snabbare beräkningar. Det kräver visserligen en sortering, alternativt en "smart" insert-metod, men ger ändå en tidsmässig vinst.
--


Ok... Fast man måste ju fortfarande multiplicera med fönstret. Och, Hmm, kräver inte en sortering n*log n operationer? En medelvärdesbildning blir ju bara n operationer.
Så länge har jag längat efter att loudness war skulle vara över. Nu börjar jag tro att vi faktiskt är där. Kruxet är att vi förlorade.

MacBruce
 
Inlägg: 3720
Blev medlem: 2007-10-29

Re: Hur göra oktavbred glättning?

Inläggav MacBruce » 2008-02-10 17:26

Svante skrev:Ok... Fast man måste ju fortfarande multiplicera med fönstret. Och, Hmm, kräver inte en sortering n*log n operationer? En medelvärdesbildning blir ju bara n operationer.


Ja, jag "implicerade" (--Karl i Snobben) nog lite vilt. Det beror förstås på, hur data serveras. Jag "tänkte i maskincykler" : data i flyttal, snabba jämförelseoperationer och indexering med heltal, jämfört med en massa flyttalsadditioner. :wink:
--

Användarvisningsbild
Style
 
Inlägg: 4536
Blev medlem: 2004-01-17

Inläggav Style » 2008-02-10 23:49

tabellera fönsterbredden, att göra en look-up i en hash-tabell går väldigt mycket fortare än att göra en cos beräkning
Dogmatisk Mac-Taliban


Återgå till Teknikforum


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 17 gäster