|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 13
|
FILTRO ELIMINA BANDA IN MATLAB
Buongiorno, devo eliminare un rumore del tipo A*cos(w0*t), causato da effetto Larsen, da un segnale audio. Ipotizzando di conoscere la frequenza fondamentale 'f0'del rumore devo costruire un filtro.
Io avevo pensato ad un gradino+rect+gradino, opportunamente scalati e traslati, con il quale moltiplicare la trasformata di fourier del segnale. Il filtro in codice è questo: Codice:
function [y]= filtro2(s, Fs, f0)
N=length(s);
FTs=fftshift(fft(s));
ff=(-Fs/2):Fs/N:((Fs/2)-(Fs/N)); %asse freq
Df=abs(ff(2)-ff(1));
%Filtro
filtro=(gradino(-ff-(f0+Df))+rect(ff/(2*(f0-Df)))+gradino(ff-(f0+Df)));
figure(2)
plot(ff, filtro)
xlabel('f')
ylabel('S(f)')
title('Filtro applicato al segnale')
FTsnr= FTs.*filtro; %tolgo il rumore
%grafici
figure(3);
subplot(2,1,1)
semilogy(ff, abs(FTs))
xlabel('f')
ylabel('S(f)')
title('Trasformata segnale si ingresso al filtro')
subplot(2,1,2)
semilogy(ff, abs(FTsnr))
xlabel('f')
ylabel('S(f)')
title('Trasformata segnale in uscita dal filtro');
y=ifft(ifftshift(FTsnr));
![]() La trasformata FTsnr (segnale senza rumore)viene identica alla FTs (segnale con rumore) a parte i due impulsi del cos che sono stati eliminati dal filtro. ![]() Il mio problema è che sento un tic all'inizio e uno alla fine della riproduzione, ma se la trasformata graficamente è uguale perché non riesco a sentire il segnale? All'inizio pensavo fosse per questa istruzione "y=ifft(ifftshift(FTsnr));" ma al posto di FTsnr ho provato a mettere FTs e funziona. Sapete dirmi dov'è il problema? Grazie |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 13
|
allora, ho provato con la funzione wavwrite e il file di uscita è perfetto, senza il rumore. Dopodichè ho fatto qualche confronto e ho scoperto che l'ultima funzione non mi toglie la parte immaginaria, ho quindi usato la funzione real() e va alla grande senza rumore. Ma come mai l'antitrasformata non mi toglie l'esponenziale immaginario? Ho sbagliato a costruire il filtro?
Ultima modifica di gela : 31-05-2010 alle 23:40. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:06.





















