Hur interpolerar man komplexa tal?

Hur funkar tekniken bakom bra hifi?

Moderator: Redaktörer

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

Hur interpolerar man komplexa tal?

Inläggav Svante » 2007-05-12 20:07

Ja, hur interpolerar man komplexa tal. Alltså, säg att jag har en tonkurva med uppmätta amplituder och faslägen i en tabell. Säg att jag har ett värde för frekvensen 5000 Hz och 5100 Hz och jag vill veta vad värdet är för 5050 Hz.

Så här:

Kod: Markera allt
         nivå  fas
5000 Hz 60 dB  177°
5100 Hz 61 dB  -78°


Hur interpolerar jag då fram värdet för 5050 Hz?

Anledningen att jag frågar har att göra med att jag funderar på att importera mätdata till Basta! och de sammanfaller ju inte nödvändigtvis med de frekvenser som jag vill rita upp.
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.

dimitri
 
Inlägg: 4604
Blev medlem: 2003-09-20
Ort: Götelaborg

Inläggav dimitri » 2007-05-12 20:22

Teknisk nolla svarar:
Vid interpolationer måste man utgå från ett linjärt förhållande mellan två angränsande värden. Intervallet kan minskas i det oändliga varvid assumption om linjariteten förstärks.
Alltså:
60,5 dB
77,5 grader

Användarvisningsbild
paa
Sökaren
 
Inlägg: 36009
Blev medlem: 2005-01-10

Inläggav paa » 2007-05-12 20:43

Är det minimumfas? Borde inte fasläget i alla fall beräknas som minimumfas utifrån den interpolerade nivån?
Medlem på forumet för hifi; Faktiskt.se, numera Faktiskt.io sedan jan 10, 2005
Numera pensionär.
Vi har sålt Sonic Design till Winn Scandinavia, vilka driver bl.a Ljudfokus och BRL.

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

Inläggav Svante » 2007-05-12 20:49

Mm, det var min första tanke också, och du har nu gjort det på den nivån, dvs den logaritmerade storheten. Det är kanske vettigt. Du har också gjort det på gradtalet, och det är kanske också vettigt, men kan leda till svårigheter, se nedan.

Min första tanke var att interpolera de underliggande komplexa talen (som ju både har en real- och imaginärdel och en amplitud och ett fasläge). Det stupar, tror jag, på något som enklast visas med ett exempel.

Kod: Markera allt
         nivå   fas Re    Im
5000 Hz 60 dB  -90°  0  -1000
5100 Hz 60 dB   90°  0   1000


Medelvärdet av de två komplexa talen är noll... :? Ändå är det väl knappast rimligt att värdet emellan de två talen är noll, tror jag. Frågan är vad som är rimligt. Samma amplitud och 0 grader? Samma amplitud och 180 grader?

Frågeställningen är realistisk, eftersom det kan bli ganska stora fasskift vid lite högre frekvenser och mätavstånd runt en meter eller så.
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.

Användarvisningsbild
paa
Sökaren
 
Inlägg: 36009
Blev medlem: 2005-01-10

Inläggav paa » 2007-05-12 22:47

Hoppsan, här var man på ignore-scriptet, som det verkar!
Medlem på forumet för hifi; Faktiskt.se, numera Faktiskt.io sedan jan 10, 2005
Numera pensionär.
Vi har sålt Sonic Design till Winn Scandinavia, vilka driver bl.a Ljudfokus och BRL.

Användarvisningsbild
Challe
 
Inlägg: 622
Blev medlem: 2007-04-13
Ort: Borås

Inläggav Challe » 2007-05-12 23:35

Hur mycket kan du fasvrida mellan två mätpunkter i verkligheten?

Min tanke är att om du kan få så stor fasvridning att du inte kan avgöra om det har vridit 360 mellan två punkter, så behöver du tätare mätpunkter.

Amplituden måste du kunna förutsätta vissa gränsvärden för, så länge du inte använder väldigt branta (digitala?) filter.

Jag kanske är ute och cycklar...

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

Inläggav Svante » 2007-05-13 00:13

Mja, om man tänker sig att man har mätt på 1 meters avstånd och vid frekvensen 5000 Hz, så är man 14,49 våglängder bort. Mäter man vid 5100 Hz är man 14,78 våglängder bort. Skillnaden i fasläge blir 0,49*360-0,78*360=104 grader.

Det är visserligen ganska glest samplat. Problemet är att man som programmakare inte riktigt vet vilka data man kommer att råka ut för och det vore förstås bra om jag hittar nåt som gör rätt i någon mening även när det är svårt. Annars kan man ge sig på att det blir fel åtminstone för någon.

Det vore förstås rimligt att göra som Paa föreslår implicit, dvs att man räknar ut en minimumfasdel, dvs trollar bort den rena fördröjningen och interpolerar på det ofördröjda och lägger tillbaka fördröjningen efter interpolationen.

Men det är ganska mycket mer komplicerat än en enkel interpolation.
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.

Användarvisningsbild
Hedlund_inaktiv
 
Inlägg: 533
Blev medlem: 2006-06-05

Inläggav Hedlund_inaktiv » 2007-05-13 06:53

Undrar om det går att komma tillrätta med din fråga...

Teoretiskt sett så kan användaren av Basta försöka importera data med väldigt få mätpunkter. Vore det inte rimligt att man har någon gräns där programmet helt enkelt bedömmer att det inte klarar av att interpolera data.

Om Basta t.ex. vill ha 20 mätpunkter mellan 1000 till 2000 Hz och man har 6 mätpunkter att importera, hur fixar man det ?
Kan lösningen vara att Basta anpassas att ha lika många mätpunkter som importerad data ?

Om en sådan här lösning skulle kunna fungera, finns då behovet av interpolation kvar ?

LMS som jag själv använder har antalet mätpunkter justerbart.

Skjuter vilt från höften här, så du får säga till om jag interpolerat fel och skjuter i motfas :wink:

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

Inläggav Svante » 2007-05-13 09:40

Hedlund skrev:Om Basta t.ex. vill ha 20 mätpunkter mellan 1000 till 2000 Hz och man har 6 mätpunkter att importera, hur fixar man det ?
Kan lösningen vara att Basta anpassas att ha lika många mätpunkter som importerad data ?


Tanken har slagit mig, men om man ska kunna bygga system med bas- och diskanthögtalare så är det inte helt otroligt att de får mätpunkter vid olika frekvenser och då dyker behovet upp.

Det skulle kunna funka om jag dikterar vilket mätprogram som ska användas (=mitt 8) ) men det är ju alltid trevligt att hålla dörrar öppna.

Sen är det intressant att diskutera sånt här också, tycker iaf jag.
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.

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

Inläggav Style » 2007-05-13 11:33

om du tycker att det duger med linjär interpolation så får du göra polär koordinatomvandling och sen interpolera längd och riktning för sig

annars är detta ett typexempel där man kan använda kalman-filter. Implementera det så kan du nyttja det får alla möjliga typer av smoothing som ju detta faktiskt är
Dogmatisk Mac-Taliban

Användarvisningsbild
phon
Mr. Magneto
 
Inlägg: 13030
Blev medlem: 2004-11-12
Ort: þiudangardi

Re: Hur interpolerar man komplexa tal?

Inläggav phon » 2007-05-13 12:35

60,5 db kan jag tänka mig som linjärt medelvärde på nivån, men jag fattar inte riktigt hur ni tänkte på fasläget, 77,5°?

[s]Linjära decibel :) föresten, jag kan nog tänka mig 60,514 dB också, eller ännu hellre.[/s]


Om fasen i ena fallet är 177° och i andra fallet -78° så kan man ju undra hur den rört sig runt de 360 graderna. Moturs kanske, det är ju närmast, och då skulle fasen bli 229,5°

Fast å andra sidan kanske den har rört sig medurs och då blir det 49,5°, och då alldeles speciellt i Basta som bara visar +/- 180° i sitt fasfönster, så då får det bli 49,5° som är samma fasvektor inverterad.

Eller visar kanske Basta -|360° - 229,5°| då, alltså -130,5° ?

Svar: -130,5° om fasen rört sig moturs, annars 49,5° får det bli, vad säger magistern ? :) :)


Lite jobbigt faktiskt, jag skulle vilja visa alla varv i Basta, eller i vart fall många varv längs frekvensen istället för de vertikala fashoppen som stör mig en del.
Senast redigerad av phon 2007-05-13 14:05, redigerad totalt 1 gång.
ⓘ De gustibus non est disputandum.

Keba
 
Inlägg: 707
Blev medlem: 2005-10-13
Ort: Stockholm

Inläggav Keba » 2007-05-13 14:00

Jag tror att om mätpunkterna ligger så tätt att fasinfo verkligen går att använda så är nog en linjär interpolation av fasen ok.
Om jag tänker rätt så måste man veta avståndet för att kunna räkna ut vad det egentligen blir, och då går det ju att räkna ut ett bra värde även om fasen snurrat några varv. (antag minimumfas)
Svante, ska du ha det för att kunna lägga ihop fler mätningar också? Då är det ju ganska viktigt att fasen blir helt korrekt.

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

Inläggav Svante » 2007-05-13 14:21

Ja, alltså, tanken är att man ska kunna sätta mikrofonen på en meters avstånd eller så, mäta bas och diskant var för sig och sedan bygga ett delningsfilter i Basta!. Och impedansen måste man mäta förstås, om filtren ska vara passiva.
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.

Keba
 
Inlägg: 707
Blev medlem: 2005-10-13
Ort: Stockholm

Inläggav Keba » 2007-05-13 16:20

Aha, så bra. SpeakerWorkshop kan ju lägga ihop, men om SW kan interpolera data är jag inte säker på. Det är inte så lätt att förstå vad som händer under huven där, ett problem tycker jag. Iaf så ska man ange avstånd till elementen, så man kan mäta på olika avstånd.

Om man vet avstånd till elementet man ju räkna ut fasen där. Där bör väl inte heller fasen vrida sig så fort så det är rimligt att anta fasskillnad mellan de båda mätvärdena är mindre än 180 grader. Där gör man en linjär interpolation och sen lägger man på fördröjning för avståndet igen.

Användarvisningsbild
PerStromgren
 
Inlägg: 28477
Blev medlem: 2005-03-25
Ort: Karlstad

Re: Hur interpolerar man komplexa tal?

Inläggav PerStromgren » 2007-05-14 08:58

Svante skrev:
Kod: Markera allt
         nivå  fas
5000 Hz 60 dB  177°
5100 Hz 61 dB  -78°


Hur interpolerar jag då fram värdet för 5050 Hz?


För att kunna interpolera måste man veta något om hur funktionen uppför sig i det interpolerade området. Ofta gör man antagandet att en Fourieranalys inte har några högfrekvenstermer som behöver tagas hänsyn till, och därmed att en linjär interpolation duger, men så måste det ju inte vara. Dina exempelvärden antyder ju att vi har en resonanskrets, där du hamnat på bägge sidor, och i sådana fall duger nog inte en linjär modell.

Det enda rätta vore att göra en modell av de möjliga funktionerna och göra en anpassning till dessa, men jag inser att det är kostsamt, både vid systemering och vid körning. Men det kanske inte finns så många funktioner du behöver ta hänsyn till?
... tycker jag!

Per

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

Inläggav Svante » 2007-05-14 09:30

Jag börjar inse att det egentligen inte är något speciellt med detta, jag brukar tom föreläsa om hur man ska göra, ju... :oops:

Det är ju klassisk interpolation i frekvensdomänen med en signal som kan förutsättas vara en impuls, dvs jag får zeropadda (som det heter på svenska) hur mycket jag vill på sidorna.

Det är ganska enkelt om man har ekvidistanta punkter i frekvensdomänen, men jag vill inte förutsätta det. Jag får nog prova med vanlig linjärinterpolation, eller möjligen kubiska splines om det inte funkar.

Tack för alla förslag iaf, det är kul att duskitera.
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.

Användarvisningsbild
Nattlorden
Pumpkin/Redaktör
 
Inlägg: 58354
Blev medlem: 2003-10-28
Ort: Grå Hamnarna

Inläggav Nattlorden » 2007-05-15 07:20

Förslag: nollomstoppa
Konceptartist Serenia på Spotify/ Youtube etc.
Rester o.dyl. som Nattlorden

Användarvisningsbild
PerStromgren
 
Inlägg: 28477
Blev medlem: 2005-03-25
Ort: Karlstad

Inläggav PerStromgren » 2007-05-15 08:43

Nattlorden skrev:Förslag: nollomstoppa


Sött! :D
... tycker jag!

Per

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

Inläggav Svante » 2007-05-15 20:06

Nattlorden skrev:Förslag: nollomstoppa


Den ska jag prova på nästa föreläsning... :lol: :lol: :lol:
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.

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

Inläggav Svante » 2007-05-18 23:22

Jaha, lite experiment med riktiga data. Edit: Men med databehandling uppåt väggarna, se senare inlägg... :oops:

Bilderna visar

1: Frånvaro av interpolation
2: Linjär interpolation på de komplexa talen (real- och imaginärdel)
3: Linjär interpolation på de komplexa talen (amplitud och argument)

Det ser ut som att den sista är vettigast, men fasen vet om det är tillräckligt bra.

Bild
Bild
Bild
Senast redigerad av Svante 2007-05-20 21:24, redigerad totalt 1 gång.
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.

Användarvisningsbild
PerStromgren
 
Inlägg: 28477
Blev medlem: 2005-03-25
Ort: Karlstad

Inläggav PerStromgren » 2007-05-19 10:31

Svante skrev:Det ser ut som att den sista är vettigast, men fasen vet om det är tillräckligt bra.


:D
... tycker jag!

Per

Användarvisningsbild
paa
Sökaren
 
Inlägg: 36009
Blev medlem: 2005-01-10

Inläggav paa » 2007-05-19 10:35

Svante skrev:Det ser ut som att den sista är vettigast, men fasen vet om det är tillräckligt bra.

Fasen är ju inte redovisad! :wink:
Medlem på forumet för hifi; Faktiskt.se, numera Faktiskt.io sedan jan 10, 2005
Numera pensionär.
Vi har sålt Sonic Design till Winn Scandinavia, vilka driver bl.a Ljudfokus och BRL.

Användarvisningsbild
Naqref
Saknad grundare, †2014
 
Inlägg: 27893
Blev medlem: 2003-03-23
Ort: Krischansta

Inläggav Naqref » 2007-05-19 11:18

paa skrev:
Svante skrev:Det ser ut som att den sista är vettigast, men fasen vet om det är tillräckligt bra.

Fasen är ju inte redovisad! :wink:


Kolla igen?! ;)
Audiodesigner åt en del. Larsen, Holographic Audio etc.
CEO och huvudägare i Acoustic Landscape R&D AB.
CTO / R&D Manager och delägare i Acoustic Illusion AB.

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

Inläggav Svante » 2007-05-19 13:07

Hehe, jo fasen är ju faktiskt redovisad. Jag tror dock att metoden i bild 2 är bättre för interpolation av fasen, dvs ett ren linjärinterpolation på real- och imaginärdelar.

PS det blev ju riktigt vitsigt med "fasen" ju men det var faktiskt inte meningen... :roll:
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.

Användarvisningsbild
paa
Sökaren
 
Inlägg: 36009
Blev medlem: 2005-01-10

Inläggav paa » 2007-05-19 13:18

Fattar inte hur blind man kan bli! Men fick nog för mig att faskurvan var något sorts spektrum! I princip oläslig är den ju hur som helst! Borde finnas något bättre sätt att redovisa fasvridning som gör att man bättre kan se skillnader på olika kurvor.
Medlem på forumet för hifi; Faktiskt.se, numera Faktiskt.io sedan jan 10, 2005
Numera pensionär.
Vi har sålt Sonic Design till Winn Scandinavia, vilka driver bl.a Ljudfokus och BRL.

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

Inläggav Svante » 2007-05-19 16:09

paa skrev:Fattar inte hur blind man kan bli! Men fick nog för mig att faskurvan var något sorts spektrum! I princip oläslig är den ju hur som helst! Borde finnas något bättre sätt att redovisa fasvridning som gör att man bättre kan se skillnader på olika kurvor.


Ja, det gör det nog också. Det ligger ju en fördröjning i de här kurvorna som motsvarar avståndet mellan mikrofon och högtalare (i verkligheten är det faktiskt värre än så, med det här fallet, men det gör inget). Man borde kanske räkna bort den delen, då kan kurvorna bli tolkningsbara.
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.

Keba
 
Inlägg: 707
Blev medlem: 2005-10-13
Ort: Stockholm

Inläggav Keba » 2007-05-20 17:59

Förslag: Tag en mätning, kasta bort hälften av punkterna och försök interpolera fram dem igen och plotta differensen. Då går det att jämföra med orginaldata för att se hur mycket fel det blev.
Nu vet jag inte riktigt hur noga det måste vara, men säg att fasen blir 45 grader fel. Bas och diskant är mätta med filter och man vill se hur det blir när man lägger ihop. Om signalerna ligger i fas i deln. och på samma nivå ska det bli +6dB. Med 45grader fel blir det bara +3dB, dvs 3dB fel! Det är lite för mycket för att vara användbart tror jag.

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

Inläggav Svante » 2007-05-20 20:05

Haha...

Det här är ju pinsamt.

Fasgraferna, och en del av amplitudgraferna också. Jag hade läst fasinformationen som om den var i radianer fast den var i grader. Nu ser det mycket snyggare ut och det är mycket mindre skillnad mellan metoderna.

Återkommer med nya grafer.

Attans... :lol:
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.

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

Inläggav Svante » 2007-05-20 21:23

Jahaja, riktiga data igen, nu med rätt faktor på fasen och ett annat system (en mikrofon inuti ett par hörlurar), och motsvarande 35 mm löpväg avdraget.

Bilderna visar

1: Frånvaro av interpolation
2: Linjär interpolation på de komplexa talen (real- och imaginärdel)
3: Linjär interpolation på de komplexa talen (amplitud och argument)

... nu tror jag nästan själv på data. :D 2:an verkar ju fullt tillräcklig. Jag begriper inte varför det blir en knyck i kurvan i 3:an vid knappa 200 Hz, men det ska jag nog flura ut.

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


Återgå till Teknikforum


Vilka är online

Användare som besöker denna kategori: Google [Bot], Hjalmar_Branting, MoonMartin och 31 gäster