Gringo
Artikelen: 0
Berichten: 171
Lid geworden op: zo 31 mei 2009, 12:39

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Wimapon schreef:Mijn radiotelescoop ontvangt een ruis spectrum van 3 KHz breed.

Ik wil hiervan bijvoorbeeld alleen het stukje van 400 tot 800 Hz overhouden.

uit mijn ontvanger komt laagfrequent ruis tussen 0 en 3 KHz.

Mijn AD covertor maakt hier gedurende een halve seconde 8192 getallen van.
Fs van 2 * 8192 = 16384 zou ik denken.
Gebruikersavatar
317070
Artikelen: 0
Berichten: 5.609
Lid geworden op: za 28 feb 2009, 17:05

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Fs van 2 * 8192 = 16384 zou ik denken.
Maar dan kan mijn filter, ontworpen voor Fs=6000 toch onmogelijk dit (juiste?) resultaat hebben? ;)

Mij lijkt dat er of iets mis is met de assen, of de samplefrequentie is 8192Hz...
Verborgen inhoud
of er is iets mis met mijn filter


Afbeelding
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Heren, ik zie het al geloof ik.

Er zit weer een "verschaal" probleem in het geheel.

Op bovenstaande (bovenste) grafiek zie je langs de x-as de (i) van het FFT output REX(i) array.

Op de bovenste Frequentiebalk (groen) zie je waarden die ik proefondervindelijk heb bepaald. Dus door gewoon een toontje van 1000 Hz aan te bieden en dat dan te verwerken.

Dit deed ik ook voor 2000 en 3000 Hz.

Langs de x-as van de onderste grafieken staat het volgnummer van de gedigitaliseerde samples. Dus in dit geval zijn 300 samples getoond.

Ik moet hier eens heel geconcentreerd over nadenken... want ik zie dat ik het "einddoel - namelijk filteren" begin te benaderen.

Ik moet wel erkennen dat het allemaal behoorlijk moeilijk is......
Gebruikersavatar
317070
Artikelen: 0
Berichten: 5.609
Lid geworden op: za 28 feb 2009, 17:05

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Wimapon schreef:ik ben wel geinterresseerd in de coefficienten die ik kan gebruiken om de volgende frequentiebandjes ook te kunnen filteren.

400-800Hz , 800- 1200 Hz , 2000 - 2400 Hz en 2800 - 3200 Hz

Code: Selecteer alles

y[n] = (  1 * x[n-20])

 + (  0 * x[n-19])

 + (-10 * x[n-18])

 + (  0 * x[n-17])

 + ( 45 * x[n-16])

 + (  0 * x[n-15])

 + (-120 * x[n-14])

 + (  0 * x[n-13])

 + (210 * x[n-12])

 + (  0 * x[n-11])

 + (-252 * x[n-10])

 + (  0 * x[n- 9])

 + (210 * x[n- 8])

 + (  0 * x[n- 7])

 + (-120 * x[n- 6])

 + (  0 * x[n- 5])

 + ( 45 * x[n- 4])

 + (  0 * x[n- 3])

 + (-10 * x[n- 2])

 + (  0 * x[n- 1])

 + (  1 * x[n- 0])

 + ( -0.5704626843 * y[n-20])

 + ( 11.4194728647 * y[n-19])

 + (-108.8981771488 * y[n-18])

 + (657.7775666538 * y[n-17])

 + (-2822.4498634108 * y[n-16])

 + (9144.9420945686 * y[n-15])

 + (-23214.9778007558 * y[n-14])

 + (47280.7961143578 * y[n-13])

 + (-78462.3082745300 * y[n-12])

 + (107141.3052656058 * y[n-11])

 + (-121042.8669895234 * y[n-10])

 + (113335.8659187088 * y[n- 9])

 + (-87797.0750288130 * y[n- 8])

 + (55963.9623855867 * y[n- 7])

 + (-29066.3744369995 * y[n- 6])

 + (12111.4081261493 * y[n- 5])

 + (-3953.8578359118 * y[n- 4])

 + (974.6368162207 * y[n- 3])

 + (-170.6627470826 * y[n- 2])

 + ( 18.9278561439 * y[n- 1])
800- 1200 Hz

Code: Selecteer alles

y[n] = (  1 * x[n-20])

 + (  0 * x[n-19])

 + (-10 * x[n-18])

 + (  0 * x[n-17])

 + ( 45 * x[n-16])

 + (  0 * x[n-15])

 + (-120 * x[n-14])

 + (  0 * x[n-13])

 + (210 * x[n-12])

 + (  0 * x[n-11])

 + (-252 * x[n-10])

 + (  0 * x[n- 9])

 + (210 * x[n- 8])

 + (  0 * x[n- 7])

 + (-120 * x[n- 6])

 + (  0 * x[n- 5])

 + ( 45 * x[n- 4])

 + (  0 * x[n- 3])

 + (-10 * x[n- 2])

 + (  0 * x[n- 1])

 + (  1 * x[n- 0])

 + ( -0.5704626843 * y[n-20])

 + ( 10.8766535634 * y[n-19])

 + (-99.3432732777 * y[n-18])

 + (577.8497111686 * y[n-17])

 + (-2400.3313332947 * y[n-16])

 + (7567.9480290330 * y[n-15])

 + (-18789.7853701568 * y[n-14])

 + (37615.6045318488 * y[n-13])

 + (-61662.9280279694 * y[n-12])

 + (83586.0169532693 * y[n-11])

 + (-94200.6359006449 * y[n-10])

 + (88418.1047995667 * y[n- 9])

 + (-68998.1976430068 * y[n- 8])

 + (44523.0129662291 * y[n- 7])

 + (-23525.3649572123 * y[n- 6])

 + (10022.6831650973 * y[n- 5])

 + (-3362.4782599730 * y[n- 4])

 + (856.1981211089 * y[n- 3])

 + (-155.6878320217 * y[n- 2])

 + ( 18.0281293553 * y[n- 1])
2000 - 2400 Hz

Code: Selecteer alles

y[n] = (  1 * x[n-20])

 + (  0 * x[n-19])

 + (-10 * x[n-18])

 + (  0 * x[n-17])

 + ( 45 * x[n-16])

 + (  0 * x[n-15])

 + (-120 * x[n-14])

 + (  0 * x[n-13])

 + (210 * x[n-12])

 + (  0 * x[n-11])

 + (-252 * x[n-10])

 + (  0 * x[n- 9])

 + (210 * x[n- 8])

 + (  0 * x[n- 7])

 + (-120 * x[n- 6])

 + (  0 * x[n- 5])

 + ( 45 * x[n- 4])

 + (  0 * x[n- 3])

 + (-10 * x[n- 2])

 + (  0 * x[n- 1])

 + (  1 * x[n- 0])

 + ( -0.5704626844 * y[n-20])

 + (  7.7961216146 * y[n-19])

 + (-53.9306899552 * y[n-18])

 + (248.4165019497 * y[n-17])

 + (-849.3715947353 * y[n-16])

 + (2282.2101901050 * y[n-15])

 + (-4986.1356116998 * y[n-14])

 + (9052.2674004048 * y[n-13])

 + (-13850.4549485750 * y[n-12])

 + (18019.5850416711 * y[n-11])

 + (-20032.6822714673 * y[n-10])

 + (19060.4453140450 * y[n- 9])

 + (-15496.7637327223 * y[n- 8])

 + (10713.3139405244 * y[n- 7])

 + (-6241.9572211413 * y[n- 6])

 + (3022.0580384262 * y[n- 5])

 + (-1189.6909356938 * y[n- 4])

 + (368.0460302385 * y[n- 3])

 + (-84.5149989694 * y[n- 2])

 + ( 12.9221261024 * y[n- 1])
2800 - 3200 Hz

Code: Selecteer alles

y[n] = (  1 * x[n-20])

 + (  0 * x[n-19])

 + (-10 * x[n-18])

 + (  0 * x[n-17])

 + ( 45 * x[n-16])

 + (  0 * x[n-15])

 + (-120 * x[n-14])

 + (  0 * x[n-13])

 + (210 * x[n-12])

 + (  0 * x[n-11])

 + (-252 * x[n-10])

 + (  0 * x[n- 9])

 + (210 * x[n- 8])

 + (  0 * x[n- 7])

 + (-120 * x[n- 6])

 + (  0 * x[n- 5])

 + ( 45 * x[n- 4])

 + (  0 * x[n- 3])

 + (-10 * x[n- 2])

 + (  0 * x[n- 1])

 + (  1 * x[n- 0])

 + ( -0.5704626844 * y[n-20])

 + (  4.7857821250 * y[n-19])

 + (-24.0284683388 * y[n-18])

 + ( 85.4887840459 * y[n-17])

 + (-238.8904176231 * y[n-16])

 + (545.7281804157 * y[n-15])

 + (-1051.4137873071 * y[n-14])

 + (1735.3533958296 * y[n-13])

 + (-2485.6859546088 * y[n-12])

 + (3109.0237757347 * y[n-11])

 + (-3412.5094999402 * y[n-10])

 + (3288.4133774610 * y[n- 9])

 + (-2780.8219833370 * y[n- 8])

 + (2053.4501158779 * y[n- 7])

 + (-1315.9675728903 * y[n- 6])

 + (722.4899533353 * y[n- 5])

 + (-334.5378349831 * y[n- 4])

 + (126.6359600065 * y[n- 3])

 + (-37.6507672803 * y[n- 2])

 + (  7.9324673441 * y[n- 1])
Moest je de kwaliteit niet goed genoeg vinden, ga je waarschijnlijk beter overstappen op een FIR met een convolutie.

Verborgen inhoud
1500e bericht ;)
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

geweldig, geweldig, geweldig, dankjewel

ik ga aan de slag
Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

Re: Ik zoek een algoritme om een ruisbandje te filteren.

dit zijn de coëfficiënten van gisteren moest je ze nog nodig hebben. Groeten.
Bijlagen
coef
(2.03 KiB) 72 keer gedownload
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

dankjewel Bert,

Het is hartstikke fijn dat mensen met je willen meedenken.

Alleen had ik het absoluut nooit voor elkaar gekregen!
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Heren, ik ben nog wat aan het stoeien met het 20 polige bessel banddoorlaatfilter geweest.

Ik laat een zender een signaal naar mijn ontvanger zenden , op een zodanige frequentie dat de ontvanger een toontje van

1000 Hz geeft , natuurlijk samen met wat ruis.

Dit signaal verwerk ik precies zo , zoals ik mijn sterrenruis verwerk.

Dus dit is een heel realistische meting van ongeveer 0.5 seconde.

Met de volgende grafiek wil ik laten zien dat er iets niet klopt...

Bovenaan links staat weer het frequentie spectrogram van de input,,, en rechts het spectrogram van de output van het filterproces.

Onderaan links staat weer het input signaal en rechts weer het signaal na de filtering.

De x- en y-as zijn voor links en rechts steeds hetzelfde!

[IMG] http://home.kpn.nl/apon001/forum2.jpg [\IMG]

even kijken of het werkt...Het werkt niet... kan iemand me svp helpen om deze grafiek te laten zien.

Links onder zie je de ijking: een golf van 1000 Hz bestaat hier dus uit 15 samples.

Rechtsonder zie je 2 golfjes.... een hele grote bestaande uit ongeveer 25 samples per golf

en een heleboel kleine golfjes van ongeveer 15 samples per golf.

Ik concludeer hieruit dat de grote golf de frequentie heeft van het midden van het filter en dat de kleine golfjes de frequentie hebben van

1000 Hz.

Ofwel.. het filter doet niet wat ik wil.... of ik begrijp het verkeerd.

Ik dacht dat filteren over de gewenste 8000 punten een golf zou opleveren van een frequentie van ongeveer 600 Hz.....

Wat het hier oplevert is dat alleen over een traject van ongeveer 120 samples de gefilterde frequentie aanwezig is..... verderop zitten

de ongewenste frequenties.....
mcs51mc
Artikelen: 0
Berichten: 473
Lid geworden op: za 23 jan 2010, 13:42

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Wim, ik zou graag wat verduidelijking hebben over de sample frekwentie.

Eerst spreek je over 8192 samples in 1/2 seconde en vervolgens 8192 samples in 0.4sec.

Dat levert wel andere resultaten op daar fs eerst 16384 is en dan 20480.

met fs = 20480

Afbeelding

nu met fs = 16384

Afbeelding

Bovenste grafiek geeft in rood jouw signaal, in wit gefilterd.

Onderste grafieken zijn FFT resultaat van gefilterde data.

Kan je de cijfermatige data van je 1000Hz signaal ergens dumpen en de gebruikte sample rate laten weten?

Ik haal het dan even door de LV code. Je kan dan beide resultaten vergelijken.
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Hoi mcs51mc,

dat ziet er flitsend uit....

Allereerst; ik ben niet in staat om de precieze sample rate te bepalen omdat ik niet kan meten hoelang mijn digitiser erover doet om al die

samples binnen te halen... ik laat bij het begin van het meten een ledje aangaan, en als de meting klaar is, laat ik het weer uitgaan.

Als ik het zo bekijk duurt het meten ongeveer 0.4 a 0.5 seconden.

Ik doe dan 2 kanalen sampelen.

eerst wordt kanaalA gesampeld, daarna kanaalB, en dan weer kanaalA, en daarna weer kanaalB... enz... dit gaat door tot het interne

SRam geheugen vol is.. en daar passen 32KBytes in... 1 sample bevat 2 Bytes.

De meting die ik steeds laat zien is de meting van KanaalA...... dus die 8 * 1024 samples worden in (ongeveer!) 0,4 seconden gedaan....

Ten Tweede: omdat ik op dezelfde schaal de in- en output laat zien.. doet de sample rate er niet toe... je ziet de sinussen op een

niet gedefinieerde schaal..... maar wel dezelfde!

Op deze manier probeer ik bezig te zijn.... tis wat sullig, ik weet het, maar ik kan niet beter. Ik zal het ermee moeten doen..

En voor strakjes als ik echt sterrenruis ga bekijken, ben ik niet in de absolute frequentie geinterresseerd, maar alleen in de fase ervan.

Of beter in het faseverschil tussen mijn 2 antennes ( en dus mijn 2 ontvangers) ( en dus mijn 2 output golfjes)

Omdat ik op dit moment vreemde fasen tegenkom.. probeer ik het te ontvangen signaal eens te filteren, om te zien of dat de boel

verbetert.......

Zou je de rood/witte grafiek eens kunnen laten zien met de x-as van 0 to 400.......
Gebruikersavatar
317070
Artikelen: 0
Berichten: 5.609
Lid geworden op: za 28 feb 2009, 17:05

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Wimapon schreef:Allereerst; ik ben niet in staat om de precieze sample rate te bepalen omdat ik niet kan meten hoelang mijn digitiser erover doet om al die

samples binnen te halen... ik laat bij het begin van het meten een ledje aangaan, en als de meting klaar is, laat ik het weer uitgaan.

Als ik het zo bekijk duurt het meten ongeveer 0.4 a 0.5 seconden.
Dat is wel een fout van 20%-25% ;)

Dus als je een filter vraagt van 400-800Hz, kan hij net zo goed 300-600Hz er uit filteren of 500-1000Hz.
Wimapon schreef:Ik dacht dat filteren over de gewenste 8000 punten een golf zou opleveren van een frequentie van ongeveer 600 Hz.....

Wat het hier oplevert is dat alleen over een traject van ongeveer 120 samples de gefilterde frequentie aanwezig is..... verderop zitten de ongewenste frequenties.....
Neen, die eerste 120 samples bevatten het overgangsverschijnsel. Dit is een stuk dat je dus beter kunt weglaten of verwaarlozen, aangezien die samples uitgaan van een nulsignaal.

Het zijn die samples daarna (dus met de kleine uitwijking) die de door jouw gewenste frequenties bevatten. Deze zijn kleiner, doordat je een stuk van de energie verloren hebt in je filter.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Hoi 317070

De echte filter frequentie vind ik niet belangrijk, als er maar een bandje gefilterd wordt....

Ik zie in de FFT wel welk bandje het is... in dit geval blijkt het goed te kloppen met wat ik mooi vind.

Okee de eerste heftige sinussen zal ik dan weglaten en met de kleine sinusjes aan de gang gaan.

Ik zal ze eens nader gaan bekijken... en met meerdere input-files gaan berekenen en bekijken.

Ik heb goede moed.

Nogmaals: de echte frequenties maken me niet uit.. dus die fout van 25 procent vind ik niet belangrijk.. hoe vreemd dat ook klinkt

Natuurlijk ben ik niet helemaal zeker van dit......

Maar vergeet niet.. de metingen die ik nu aan de sterren doe, kloppen al behoorlijk goed met de positie aan de hemelbol...

dus het werkt wel....

Elke meting over 2 kanalen van 8000 samples leveren na crosscorrelatie slechts 1 getal op.

Elke minuut krijg ik zo een getal.

Als ik dit getal in een grafiek uitzet tegen de tijd, krijg ik een grafiek waar alles om begonnen in...

en die grafiek ziet er redelijk uit...

Alleen de precieze callibratie gaat niet helemaal goed... Maar dit kan vele oorzaken hebben.

1. verschillen in kabel lengtes... en kabel eigenschappen

2. verschillen in de beide ontvangers

3. verschillen in de beide antenne versterkers

4. verschillen in de lucht tussen de antennes en de bronnen.

5. verschillen in nog wat kleine onderdelen tussen de ontvangers en de digitiser

6. verschillen in de aankoppeling van de coaxkabel met de ontvangers..

er zijn heel veel problemen die fouten kunnen opleveren.

het is nu aan mij om stap voor stap ze allemaal te vinden en op te lossen..en weg te rekenen.

Deze filtertruuk is een manier om 1 ontvanger probleem op te lossen.. ( misschien) .
mcs51mc
Artikelen: 0
Berichten: 473
Lid geworden op: za 23 jan 2010, 13:42

Re: Ik zoek een algoritme om een ruisbandje te filteren.

Wim,

Ga je de data van dat 1000Hz signaal nog posten?

Als ik die door LV jaag of Fred door zijn Mathlab code, dan moet jij hetzelfde uitkomen met jouw berekeningen. Wanneer dat zo is zit je goed met je berekeningen en kan je naar de hardware kijken.

Als ik het goed begrijp begin je te twijfelen aan zowel hard- als software ;)
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

hoi mcs51mc.

Ja, als je het niet erg vind zal ik morgen de data van het 1000hz signaal posten...

(ben nu helemaal op.. )

Ik twijfel niet direct overal aan. maar omdat er dingen mis gaan, heb ik geen andere keus, dan stap voor stap door het hele process heen lopen

en alles controleren...

Dit filteren wordt straks 1 van die stappen.

Maar ik geef toe.. het is allemaal nogal gecompliceerd...

maar dat is nu juist de hobbie.... met noeste arbeid hoop ik het voor elkaar te krijgen.

Vergeet niet dat ik bijna hetzelfde doe als de jongens van LOFAR.. alleen zij krijgen er 100 000 000 Euro voor...grin

en zij zitten er met vele mensen op... hardware jongens, ontvanger ontwerpers, electronici, programmeurs, astronomen....

Ik doe dus alles in mijn eentje..

wel moet ik bekennen dat ze bij lofar wel in mij geinteresseerd zijn.. Er is er al eentje van hun hier komen kijken...(!)

Ze zien mij natuurlijk als de dwerg tegen goliat...grin

maar ik vind dat wel leuk
Wimapon
Artikelen: 0
Berichten: 114
Lid geworden op: zo 29 nov 2009, 12:52

Re: Ik zoek een algoritme om een ruisbandje te filteren.

mcs51mc

Ik heb de meting van een zender die 1000 hz toontje geeft op mijn site gezet.

http://home.kpn.nl/apon001/vector2.htm

het zijn dus (ongeveer) 1024 * 8 samples van 1 ontvanger.

ik ben heel benieuwd

Terug naar “Elektrotechniek”