Toon posts:

[wisk. aanpak] hoogfequent filter maken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor mijn vraag ben ik als eerste opzoek naar de wiskundige oplossing (tsja, programmeren is en blijft wiskunde), maar hierom kon ik ook niet tussen [ en ] een programmeertaal opgeven, mijn excuse.

Ik ben opzoek naar een wiskundig algoritme dat een laag frequent signaal uit een totaal signaal haalt.
zo een filter zou in toegepast kunnen worden om van een normaal audiosignaal een tweeter(hoge tonen) signaal te maken.

een 'normaal audiosignaal' bestaat bijvoorbeeld uit een opteling van een 5 en een 20Hz signaal, en dan wil ik alleen het 20Hz (en alle hogere) signaal overhouden.
een 'normaal audiosignaal' zou je kunnen zien als een array met getallen.
een voorbeeldje in excel is hier : http://members.chello.nl/~a.deckers/voorbeeld.xls

zoals ik al zei zoek ik naar de bewerking / aanpak (hoeft niet perse in excel) om uit het gecombineerde signaal de lage toon te filteren

[ Voor 6% gewijzigd door Verwijderd op 26-04-2005 23:06 ]


  • Dekaasboer
  • Registratie: Augustus 2003
  • Laatst online: 14:15
Proaap! En ik dacht dat mijn wiskunde in 5havo al ingewikkeld was!
Volgens mij moet je ook een beetje meer naar de natuurkunde kant kijken.

http://axrotterdam.blogspot.nl


Verwijderd

google eens op "fourier transformatie" en je zal al heel wat wijzer worden

ik heb het niet opgezocht, maar ik weet niet of dattie altijd in één of andere library / package / ... van een programmeertaal te vinden is.

heb je eventueel beschikking over matlab?

edit: typo

[ Voor 6% gewijzigd door Verwijderd op 26-04-2005 23:08 ]


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

ik denk dat je best eens zoekt op fourrier analyse, er zijn waarschijnlijk nog technieken, maar dit is denk ik de meest gekende/gebruikte.

ASSUME makes an ASS out of U and ME


  • Daedalus
  • Registratie: Mei 2002
  • Niet online

Daedalus

Moderator Apple Talk

Keep tryin'

FFT should do the trick :Y). (zie ook bij Wikipedia Digital filter.). Maar een FFT is niet zo eenvoudig om te begrijpen. Handige boeken zijn de "The Scientist and Engineer's Guide to Digital Signal Processing" van Steven W. Smith en "Algorithms for programmers" van Jörg Arndt. Vooral dat laatste boek is handig als je FFT moet programmeren, omdat je in principe alleen maar de pseudo-code hoeft om te zetten (Radix-2 is het eenvoudigst).

“You know what I've noticed Hobbes? Things don't bug you if you don't think about them. So from now on, I simply won't think about anything I don't like, and I'll be happy all the time!” | 宇多田ヒカル \o/


  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 05:46

lordsnow

I know nothing

Precies.

Als je een signaal door een Fourier Transformatie gooit kan je met het resultaat heel makkelijk doen wat je wilt.

Heb je eenmaal er uitgehaald/toegevoegd wat je wil, dan kan je dat weer omzetten naar een signaal.

Verwijderd

Topicstarter
Zeer bedankt alvast

Ik hoopte dat dit filter net zo makkelijk zou zijn als een filter dat de hoge tonen weg haalt, maar dat blijkt dus niet.
ik ga nu nog niet in de stof bijten, dat doe ik in de komende dagen wel.

als iemand nog ideeen heeft zijn ze ZEKERS nog welkom.

  • koraks
  • Registratie: Oktober 2003
  • Niet online
Hmz, ben je goed in complexe getallen? Is namelijk wel een pre als je aan filters wil gaan rekenen.

Oevrigens, als je dit soort filters wil gaan doorrekenen/simuleren, misschien ben je dan beter uit met een pakket als Orcad of Electronics Workbench. Die pakketten bieden je de mogelijkheid om schakelingen te ontwerpen en te simuleren (Orcad doet dat op basis van spice, maakt het dus ook mogelijk om custom components zoals buizen op te nemen :D ). Is een stuk praktischer dan hieraan gaan rekenen. Ik heb een tijdje Elektro gedaan aan de TU/e, ik kan je melden dat je niet echt vrolijk wordt van dit soort wisknudde ;)

Edit: overigens hangt de complexiteit van je filter (en daarmee je berekening) samen met hoe scherp je de cutoff van dit filter wil hebben. Als je een erg steil filter wil maken, kom je uit bij n-de graads filters (waarbij n=veel ;) ) en dat rekent niet echt lekker. Overigens is dat voor audio toepassingen over het algemeen niet nodig, daar kom je met een derdegraadsfilter meestal prima weg.

[ Voor 25% gewijzigd door koraks op 26-04-2005 23:27 ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Het is een beetje overdreven om het digitaal te doen. Je moet veel vermenigvuldigen.

Je kan gewoon met elektronica een analoog filtertje bouwen. Wat je nodig hebt is een hoogdoorlaat-filter. Met 1 weerstand en 1 condensator kan je het al maken:
code:
1
2
3
4
   c
o-||-/--o
    [] r
o----\--o


Nadelen van dit filter zijn verliezen door de weerstand en niet erg harde grens tussen wel en niet doorlaten. De betere filters zijn ladderfilters gebouwd uit alleen spoelen en condensatoren. Bekende namen zijn Butterworth, Cauer en Chebyshev.

Dat is alles wat ik er nog van weet.

Verwijderd

Topicstarter
de punt is juist dat het digitaal moet (HBO Opleiding Technische Informatica).
Eerst moeten we dit (en nog andere bewerkingen) maken in Borland C++, daarna in embedded C en als laatste een IC-tje bakken met deze functie.

Verwijderd

FFT is niet alleen heel complex, maar ook zo vaak gebruik dat je op het internet wordt doodgegooid met kant en klare voorbeeld klassen:
http://www.koders.com/jav...8297DFB12E305198261F.aspx
http://www.koders.com/c++...A38DAFC532E793443862.aspx

Oftewel de eerste hits in google wanneer je zoekt op: fft.java of fft.cpp.

Van geluid moet je natuurlijk wel wat af weten, bijvoorbeeld wat octaafbanden zijn. Als je dat weet en je hebt een spectrum van het geluid over het frequentiedomein is het enkel nog het weggooien van de juiste waarden.

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Verwijderd schreef op woensdag 27 april 2005 @ 00:26:
de punt is juist dat het digitaal moet (HBO Opleiding Technische Informatica).
Eerst moeten we dit (en nog andere bewerkingen) maken in Borland C++, daarna in embedded C en als laatste een IC-tje bakken met deze functie.
Normaal is het doel van zo'n practicum je laten zien dat je zoiets moeilijks als een digitaal filter sneller kunt maken door meer in hardware te doen. Zo'n vak hoort bij elektrotechniek.

Bij informatica willen ze waarschijnlijk aantonen dat software beter is dan hardware. Ze zullen dan bij de tweede stap een standaard microcontroller (bv 8051 of AVR) gebruiken in plaats van een DSP (bv SHARC). Bij het IC-tje heb je waarschijnlijk niet genoeg ruimte om meerdere multipliers te maken. Misschien krijg je niet eens genoeg ruimte voor 1 snelle multiplier (2 clockcycles) en moet je het met adders doen (32 cycles).

IC-tje bakken doe je normaal niet voor zoiets. Je gebruikt meestal een CPLD of een FPGA.

Ontopic:
Wat je nodig hebt is een FIR-filter.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Verwijderd schreef op dinsdag 26 april 2005 @ 23:22:
Ik hoopte dat dit filter net zo makkelijk zou zijn als een filter dat de hoge tonen weg haalt, maar dat blijkt dus niet.
:D
Wat dacht je van een filter wat de hoge tonen weghaalt, en vervolgens die overgebleven lage tonen van het originele signaal aftrekken?

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Daos schreef op dinsdag 26 april 2005 @ 23:57:
Het is een beetje overdreven om het digitaal te doen. Je moet veel vermenigvuldigen.

Je kan gewoon met elektronica een analoog filtertje bouwen. Wat je nodig hebt is een hoogdoorlaat-filter. Met 1 weerstand en 1 condensator kan je het al maken:
Je kunt met een goed digitaal filter een veel beter resultaat halen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Daos
  • Registratie: Oktober 2004
  • Niet online
farlane schreef op woensdag 27 april 2005 @ 10:02:
[...]


Je kunt met een goed digitaal filter een veel beter resultaat halen.
Dat is niet waar. Als je een analoog filter en digitaal filter met dezelfde functie bekijkt, dan is de signaalkwaliteit van de analoge altijd beter. Je krijgt bij de digitale een hoop ruis door het kwantificeren van het signaal. Voor hoogfrequente filters is digitaal niet eens snel genoeg.

Het enige voordeel van digitaal is dat je het filter later nog kan aanpassen. (Moet je natuurlijk wel een DSP gebruiken. Digitaal filter op een IC is echt nutteloos)

[ Voor 8% gewijzigd door Daos op 27-04-2005 10:20 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
De A/D D/A conversies zijn inderdaad funest. Als je dus een digitaal hoogfrequent signaal hebt, moet je het niet analoog filteren en andersom. Dus farlane en Daos kunnen allebei gelijk hebben, maar dan moeten ze hun aannames wel helderder maken.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • mace
  • Registratie: Juni 2003
  • Nu online

mace

Sapere Aude

kijk anders eens op dspguru

heel veel kant en klare code om allerlei dingen te doen met geluid. Ook veel tutorials e.d.

Zeker een aanrader!

edit: kijk bijvoorbeeld eens hier

[ Voor 21% gewijzigd door mace op 27-04-2005 10:27 ]


  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 09:08
Je kunt heel makkelijk een digitaal equivalentje schrijven van een simpel laagdoorlaat filter.

code:
1
2
3
4
5
Vin---R--|--Vout
         |
         C
         |
GND---------GND

Dan geldt (alleen als het circuit ONBELAST is):
code:
1
Idoorweerstand(t) = (Vin(t)-Vc(t))/R

en voor de verandering van de spanning over de condensator :
code:
1
dVc/dt = I/C

Je berekent simpelweg I(t) en dan de verandering van de spanning over de condensator (= dV/dt * Deltat). Delta T moet je dan geschikt kiezen. Vout(t) == trouwens Vc(t)

Filter kun je instellen door R en C geschikt te kiezen. Als je C groter maakt verandert dVc/dt langzamer, dus wordt de kantelfrequentie lager. Als je R groter maakt wordt de stroom lager, en daalt de kantelfrequentie ook. (kantelfrequentie = 1/(2PiRC) iirc)

Je programmaatje ziet er dan zo uit :
code:
1
2
3
4
5
6
Vc=0;
dt=1;  // 1 seconde 
while {
 I=(Vin(t)-Vc)/R
 Vout(t)=Vc+=I/C*dt
}

Natuurlijk wel even de indices (t) van Vin en Vout matchen zodat alles netjes klopt hè?! 8)7 (dit is ff uit mn hoofdje, dus niet zeuren als het niet klopt ;)

suc6

[ Voor 49% gewijzigd door WVL_KsZeN op 27-04-2005 10:44 ]

/me heeft eindelijk ook een icoontje.. woef.. boeien..


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Dat is de FFT. Je moet bij de FIR kijken.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Daos schreef op woensdag 27 april 2005 @ 10:15:
Dat is niet waar. Als je een analoog filter en digitaal filter met dezelfde functie bekijkt, dan is de signaalkwaliteit van de analoge altijd beter.
Ik doelde meer op de demping rond de kantelpunten, niet op de signaalkwaliteit.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1