Niet gehinderd door wiskundige kennis was ik wat aan het experimenteren met DFT filters. Na wat gelezen te hebben besloot ik om de FFTW library te gebruiken voor het berekenen van de DFT en de inverse.
In principe ging dat voorspoedig, ik kan een geluid inlezen, naar freq. domein plotten en weer terug rekenen naar tijd domein.
Nu wilde ik echter wat gaan filteren en toen werd het wat lastiger.
FFTW slaat de data op in een array van complexe getallen, bestaande uit twee doubles.
de eerste is het reële gedeelte, de tweede het imaginaire als ik het goed heb.
aanvankelijk dacht ik dan gewoon een tweedimensionale array te krijgen waarbij [i][0] naar de reële- en [i][1] naar de imaginaire data wees.
Maar dit klopt maar deels, want ik heb inmiddels begrepen dat als je een array grootte van 2048 opgeeft, er slechts de helft van wordt gebruikt voor reële data
De data wordt gespiegeld op de helft, het nut hiervan ontgaat me, maar ik ben er dus wel in geslaagd om op die manier een high/low pass filter te maken door de eerste/laatste x kolommen te bewaren en de rest op 0 te zetten.
Ik snap alleen niet helemaal wat er nu gebeurd. Waar is al deze extra data voor nodig? en als ik wil filteren, moet ik dan ook het imaginaire gedeelte bewerken?
hopelijk kan iemand er wat licht op schijnen, want ik mis de benodigde wiskunde om dit op eigen houtje uit te vogelen
In principe ging dat voorspoedig, ik kan een geluid inlezen, naar freq. domein plotten en weer terug rekenen naar tijd domein.
Nu wilde ik echter wat gaan filteren en toen werd het wat lastiger.
FFTW slaat de data op in een array van complexe getallen, bestaande uit twee doubles.
de eerste is het reële gedeelte, de tweede het imaginaire als ik het goed heb.
aanvankelijk dacht ik dan gewoon een tweedimensionale array te krijgen waarbij [i][0] naar de reële- en [i][1] naar de imaginaire data wees.
Maar dit klopt maar deels, want ik heb inmiddels begrepen dat als je een array grootte van 2048 opgeeft, er slechts de helft van wordt gebruikt voor reële data
De data wordt gespiegeld op de helft, het nut hiervan ontgaat me, maar ik ben er dus wel in geslaagd om op die manier een high/low pass filter te maken door de eerste/laatste x kolommen te bewaren en de rest op 0 te zetten.
Ik snap alleen niet helemaal wat er nu gebeurd. Waar is al deze extra data voor nodig? en als ik wil filteren, moet ik dan ook het imaginaire gedeelte bewerken?
hopelijk kan iemand er wat licht op schijnen, want ik mis de benodigde wiskunde om dit op eigen houtje uit te vogelen
oprecht vertrouwen wordt nooit geschaad