Re: Ik zoek een algoritme om een ruisbandje te filteren.
Geplaatst: ma 28 jun 2010, 13:21
Ik heb wat gelezen op je site en zie dat je toch al wat watertjes doorzwomen heb daarom denk ik ook dat volgende ook wel moet lukken:
dit is een stukje matlab code waarmee je snel een filter operaties kan doorvoeren.
*)specificeer je sample frequentie
*)specificeer wat je limits zijn van je bandpass filter
*)dit is een bandpass filter een lowpass is [1 0 0] een high pass [0 0 1]
*)specifeer je atenuaties in je gabarit
*)de functie kaiserord maakt met behulp van deze eigenschappen een aantal andere parameters die je dan op zijn beurt weer invoerd bij fir1
*)nu kan je een y = filter(b,a,X) waarbi X je getallen zijn je b net bepaalt hebt en a gewoon op 1 kan stellen
y geeft nu de gefilterde getallen terug.
Matlab is een duur pakket en enkel voor dit moet je dat niet aankopen maar octave is een gelijkaardig pakket, ik heb voor jouw nagekeken en volgens mij werkt bovenstaande stukje code ook daarin zie hier voor een referenties van de functies in oactav:
http://octave.sourceforge.net/functions_by_alpha.php
rest nu nog je getalen in te lezen deze in je vector x te steken een filter te kiezen door de getaltjes te veranderen en het resultaat terug in je tekst file op te slaan.
Het spijt me, maar ik heb gisteren net mijn computer geformateerd en mijn matlab cd ligt nog op mijn kot anders kon ik je snel wel eens een voorbeeldje geven post mss je getallen alvast in een gewoon tekst bestand.
Groeten.
Code: Selecteer alles
fs=20000;
% sampling rate
F=[3000 4000 6000 8000]; % band limits
A=[0 1 0];
% band type: 0='stop', 1='pass'
dev=[0.0001 10^(0.1/20)-1 0.0001]; % ripple/attenuation spec
[M,Wn,beta,typ]= kaiserord(F,A,dev,fs); % window parameters
b=fir1(M,Wn,typ,kaiser(M+1,beta),'noscale'); % filter design
*)specificeer je sample frequentie
*)specificeer wat je limits zijn van je bandpass filter
*)dit is een bandpass filter een lowpass is [1 0 0] een high pass [0 0 1]
*)specifeer je atenuaties in je gabarit
*)de functie kaiserord maakt met behulp van deze eigenschappen een aantal andere parameters die je dan op zijn beurt weer invoerd bij fir1
*)nu kan je een y = filter(b,a,X) waarbi X je getallen zijn je b net bepaalt hebt en a gewoon op 1 kan stellen
y geeft nu de gefilterde getallen terug.
Matlab is een duur pakket en enkel voor dit moet je dat niet aankopen maar octave is een gelijkaardig pakket, ik heb voor jouw nagekeken en volgens mij werkt bovenstaande stukje code ook daarin zie hier voor een referenties van de functies in oactav:
http://octave.sourceforge.net/functions_by_alpha.php
rest nu nog je getalen in te lezen deze in je vector x te steken een filter te kiezen door de getaltjes te veranderen en het resultaat terug in je tekst file op te slaan.
Het spijt me, maar ik heb gisteren net mijn computer geformateerd en mijn matlab cd ligt nog op mijn kot anders kon ik je snel wel eens een voorbeeldje geven post mss je getallen alvast in een gewoon tekst bestand.
Groeten.