[Matlab] Filtro elimina-banda
Salve a tutti!Volevo sapere se qualcuno di voi conosce lo script per implementare un filtro elimina-banda in Matlab con banda $B$ e centrato ad una frequenza $v_0$
Vi ringrazio!
Vi ringrazio!
Risposte
che tipo di filtro? Ideale? In tal caso è semplice basta usare una funzione che è 1 ovunque tranne nella banda B dove vale 0. Altrimenti puoi moltiplicare tale funzione per una particolare finestra per avere una qualcosa di + reale
"raff5184":
che tipo di filtro? Ideale? In tal caso è semplice basta usare una funzione che è 1 ovunque tranne nella banda B dove vale 0. Altrimenti puoi moltiplicare tale funzione per una particolare finestra per avere una qualcosa di + reale
In pratica dovrei progettare un filtro direttamente nel dominio della frequenza ed ho provato in questo modo:
x = [4 4 4 4 16 16 16 16 16 16 16]; % x è una sequenza in ingresso N = length(x); v=[0:1/N:(N-1)/N]; v0 = 0.25; B = 0.4; Hbp=((v <= v0+B/2) & (v >= v0-B/2)) | ((v <= 1-( v0-B/2)) & (v >= 1-( v0+B/2))); % filtro passa-banda Hbr=1-Hbp; plot(v,abs(Hbr));
Andando a plottare sembra proprio un filtro elimina-banda!Tu cosa ne pensi?
"folgore":
Andando a plottare sembra proprio un filtro elimina-banda!Tu cosa ne pensi?
A dire il vero a me non viene elimina banda ma una cosa del genere
\ /--\ \ / \ \ / \ \___/ \______
un elimina banda (ideale) dovrebbe essere
---------------------| |----------------------- | | | | | | |______|
Allora nella lezione si fà un esempio di filtro passa-basso:
e dal grafico si evince che è un filtro non ideale.Ora mi viene chiesto di generare un filtro passa-alto,passa-banda e elimina-banda.Così ho applicato la definizione di ciascun filtro:
>> x = [4 4 4 4 16 16 16 16 16 16 16]; >> B = 0.4; >> N = length(x); >> X = fft(x,N); >> v = [0:(1/N):(N-1)/N]; >> H = (v <= B) | (v >= 1-B); >> plot(v,abs(H));
e dal grafico si evince che è un filtro non ideale.Ora mi viene chiesto di generare un filtro passa-alto,passa-banda e elimina-banda.Così ho applicato la definizione di ciascun filtro:
% Filtro passa-alto : Hhp=1-H; % Filtro passa-banda : v0 = 0.25; Hbp=((v <= v0+B/2) & (v >= v0-B/2)) | ((v <= 1-( v0-B/2)) & (v >= 1-( v0+B/2))); % Filtro elimina-banda : Hbr=1-Hbp;
"folgore":
Allora nella lezione si fà un esempio di filtro passa-basso:
... >> H = (v <= B) | (v >= 1-B);
sicuro che sia corretto? Un filtro passa basso è H = (v <= B)
Va bene l'idea dell'elimina banda come 1-Pbanda
"raff5184":
[quote="folgore"]Allora nella lezione si fà un esempio di filtro passa-basso:
... >> H = (v <= B) | (v >= 1-B);
sicuro che sia corretto? Un filtro passa basso è H = (v <= B)
Va bene l'idea dell'elimina banda come 1-Pbanda[/quote]
Si deduco proprio di si visto che ho fatto copia e incolla dalla dispensa http://www.diet.unina.it/luisa.verdoliva/ (vedi sezione "Laboratorio"-->Lezione n.8:Trasformata discreta di Fourier (DFT)-->pagina 4 )
del mio prof.