Commenti
- Quale software utilizzi? O hai bisogno di farlo a mano? Nota che le tue specifiche sono molto generali e per questo motivo sono possibili molti metodi.
- usando matlab ma non solo in funzioni
- Quindi non puoi usare nessuna funzione del Signal Processing Toolbox?
- No, non posso utilizzare nessuna delle funzioni della casella degli strumenti di elaborazione del segnale.
Risposta
Il tuo filtro è altamente sotto-specificato, quindi presumo che il tuo design dovrebbe essere molto semplice. Un metodo molto semplice sarebbe semplicemente troncare e spostare la risposta allimpulso di un filtro passa basso ideale con frequenza di taglio $ \ omega_c = 2 \ pi f_c / f_s = 0.4 \ pi $ (dove $ f_s $ è la frequenza di campionamento):
$$ h_ {ideal} (n) = \ frac {\ sin (\ omega_c n)} {\ pi n} $$
Nota che poiché il tuo filtro deve essere causale bisogno di spostare e troncare la risposta allimpulso ideale in modo che sia simmetrica rispetto al suo massimo:
$$ h (n) = \ frac {\ sin (\ omega_c (n-10))} { \ pi (n-10)}, \ quad n = 0,1, \ ldots, 20 \ tag {1} $$
Lequazione (1) fornisce i 21 coefficienti di filtro $ h (n) $ di un filtro FIR causale che approssima una risposta ideale del filtro passa-basso. Nota che lordine del filtro è 20.
Un semplice codice Matlab / Octave potrebbe essere simile a questo:
n = -10:10; omc = 0.4*pi; % normalized cut-off frequency in rad h = sin(omc*n)./(pi*n); % impulse response h(11) = omc/pi; % correct NaN value at n=0 H = fft(h,1024); % complex frequency response f = 1000/1024*(0:512); % FFT frequency grid up to fs/2 plot(f,abs(H(1:513))); % plot magnitude of frequency response
Commenti
- @farhan: ' sei il benvenuto! Se ritieni che la tua domanda abbia ricevuto una risposta soddisfacente, puoi accettarla premendo il pulsante ' accept ' accanto alla risposta.
- ci sono opzioni di attivo e meno recente nessuna opzione di accettare dove
- puoi aiutarmi se volessi disegnare un filtro usando una finestra rettangolare?
- @farhan : Cè ' un segno di spunta in alto a sinistra della risposta. Che cosa intendi esattamente con " disegnare un filtro utilizzando la finestra rettangolare "? Creare un grafico della sua risposta in frequenza?
- Sì, voglio davvero quel codice