[Matlab] Filtro elimina-banda

folgore1
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!

Risposte
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

folgore1
"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?

raff5184
"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

\         /--\
 \       /     \
  \     /       \
   \___/         \______



raff5184
un elimina banda (ideale) dovrebbe essere
 
---------------------|      |-----------------------
                     |      |
                     |      |
                     |      |
                     |______| 

folgore1
Allora nella lezione si fà un esempio di filtro passa-basso:
>> 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;

raff5184
"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

folgore1
"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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.