av norman » 2003-09-03 22:35
Här kommer lite kod:
****************
Nlp=4 %ordningen på lågpassfilter
Nhp=4
Wclp=2700 %brytfrekvens i Hz
Wchp=2700
Wnlp=Wclp/22050; %normerad frekvens
Wnhp=Wchp/22050;
[Blp,Alp] = butter(Nlp,Wnlp); %skapar täljar och nämnarpolynom för ett LP butterworthfilter
[Bhp,Ahp] = butter(Nhp,Wnhp,'high'); %samma som ovan fast för HP
ljud=wavread('brus'); %läser in ljudfilen brus.wav till vektorn "ljud"
ljudlp=filter(Blp,Alp,ljud); %fixar filtrerade vektorer mha polynomen som skapades ovan
ljudhp=filter(Bhp,Ahp,ljud);
brusut=[ljudlp ljudhp2]; %skapar en "stereo"vektor
wavwrite(brusut,44100,16,'brusdk'); %skapar ljudfilen brusdk.wav från vektorn brusut
********************
Koden ovan tar alltså in en monoljudfil och filtrerar den i en LP och en HP del och skapar en stereoljudfil med HP i ena kanalen och LP i andra. (testade lite olika delningar till mina toppar)
Du kan t.ex. skriva "help butter" eller "help wavread" för att få veta mer om den funktionen.
Har inte riktigt koll på vilka färdiga filterfunktioner det finns i matlab, men man kan ju själv skriva in precis den överföringsfunktion man vill.
Det går rätt långsamt att behandla ljudfiler i matlab så jag rekommenderar att du börjar att testa med en kort fil (iof har jag en slö dator)