Synthèse FIR par échantillonnage fréquentiel
Par défaut, SCILAB ne contient pas de routine pour la synthèse FIR
par échantillonage fréquentiel (équivalent de la fonction fir2
de MATLAB).
Il existe une fonction appelée fsfirlin
, mais elle ne fait
que calculer
la réponse fréquentielle continue, sans retourner les coefficients de filtrage.
Pourtant, cette méthode est pratique car c'est une méthode très simple pour
concevoir un
filtre avec une réponse arbitraire, ce qui peut servir notamment pour
réaliser des filtres de compensation.
Ce petit script est une implémentation (basique) de cette technique. Les remarques et les propositions d'améliorations sont donc les bienvenues !
Exemple 1 : filtre demi-bande, 32 coefficients
Dans cet example, on ne précise pas le nombre de coefficients souhaités. Il est alors automatiquement calculé à 2 fois la dimension du gabarit fréquentiel.
// Example : half-band filter
f = [ones(1,8) zeros(1,8)];
h = fsfir_plot(f);
// h = a + b * %z^-1 + ...


Exemple 2 : filtre demi-bande, 64 coefficients
Cet exemple permet d'illustrer le fait que si la dimension du gabarit fréquentiel n'est pas égal au nombre de coefficients, le gabarit est automatiquement interpolé (interpolation linéaire).
// Example : half-band filter, with automatic interpolation
f = [ones(1,8) zeros(1,8)];
h = fsfir_plot(f,64);


Exemple 3 : réponse arbitraire
Dans cet exemple, on conçoit un filtre de réponse arbitraire (rampe puis plateau constant) :
f = [0:10 10*ones(1,10)];
h = fsfir_plot(f);

