MATLAB er en ledende analyse pakke for digital signalbehandling og andre varianter av teknisk analyse. Signalbehandling er av den oppfatning at en vilkårlig data signal består av summen av mange signaler av forskjellige frekvenser . Ofte signaler fra ulike kilder , eller støy , vil ha ulike frekvenser . Høy - frekvens -signaler kan fjernes ved å konvolvere et signal med en lav- pass-filter . Low- pass filter
filtrering for å fjerne frekvenser er basert på å finne en overføring funksjon i frekvensdomenet som velger rekkevidden og omfanget av frekvenser som skal inkluderes i det filtrerte signalet. En invers Fouriertransform påføres deretter den frekvens - domenet funksjon for å skaffe den tid - domene filter med den valgte frekvens overføringsfunksjonen . Klokka - domenefilter brukes deretter til din signal om valg med konvolusjon operasjonen . Alternativt kan du ta Fourier transform av din tidsdomenesignalet og multipliser med frekvens - domenet overføring funksjon av filteret, før du påfører en invers Fourier transform . Dette kan være raskere å utføre, som konvolusjon er en beregningsmessig kostbar operasjon .
Bruk glatt ( )
MATLAB inneholder den glatte ()-funksjonen til å fjerne høyfrekvent støy i et signal uten behov for å bestemme den nøyaktige frekvens cutoff for en lav -pass- filter . Som standard bruker MATLAB et glidende gjennomsnitt filter av fem tilstøtende datapunkter . Det andre eksemplet bruker et spenn på 10 datapunkter og robuste vektet lineær minste kvadraters fungere med en annengrads polynom modell
my_smoothed_data = glatt ( my_data ) ; . My_smoothed_data = glatt ( my_data , 10, ' rloess ') ;
bruke filter ( )
MATLAB filter funksjonen brukes til å bruke en en-dimensjonal digital filter til et signal . For å bruke en low-pass filter med en viss frekvens cutoff , bruker du følgende kode :
my_filtered_data = filter ( freq, [ 1 freq - 1 ] , my_data ) ;
freq variabelen er lik T /t , der " T" er tiden mellom prøver og " t" er tiden konstant av frekvensen filter .
Custom Filters
< p > Ofte vil lavpassfiltre ikke har en nøyaktig frekvens cutoff , passerer alle frekvenser under cut-off -og utelukker alle frekvenser over cut-off . Faktisk, fordi data er atskilt, er en perfekt lavpassfilter umulig å gjennomføre. Vilkårlig filter kan utformes i MATLAB og påføres ved hjelp av conv ( )-funksjonen , bruke konvolusjon , som følger : en
my_new_signal = conv ( my_signal , my_filter , ' samme ');