Salut,
Pour mon TPE que je passe jeudi (29 mars) j’ai besoin de montrer l’effet d’un filtre ( ici passe-bas ) sur un signal périodique.
J’ai donc utilisé SciLab pour le faire. J’ai réussi à faire un signal carré, mais je n’arrive pas à appliquer le filtre, car il y a une erreur que je n’arrive pas à corriger:
[code]-1->exec(’/home/louis/Documents/textes/SciLab/analog_elliptic_filter.sce’, -1)
Warning: file ‘/home/louis/Documents/textes/SciLab/analog_elliptic_filter.sce’ already opened in Scilab.
!–error 60
Wrong size for argument: Incompatible dimensions.
at line 12 of function flts called by :
y = flts(s,eldtf); // Filter the signal
at line 28 of exec file called by :
exec(’/home/louis/Documents/textes/SciLab/analog_elliptic_filter.sce’, -1)[/code]
Voici le code:
// analog elliptic (Bessel), order 2, cutoff 1 Hz
Epsilon = 1; // ripple of filter in pass band (0<epsilon<A)
A = 2; // attenuation of filter in stop band (A>1)
OmegaC = 20; // pass band cut-off frequency in Hertz
OmegaR = 440; // stop band cut-off frequency in Hertz
[_zeros,pols,gain] = zpell(Epsilon,A,OmegaC,OmegaR);
num = gain * real(poly(_zeros,'s'));
den = real(poly(pols,'s'));
elatf = syslin('c',num,den);
//rand('normal');
//Input = rand(1,1000); // Produce a random gaussian noise
max_harm = 100;
t = 1:10000;
t = t*1/(1000000); // Convert sample index into time steps
amp = 3;
f = 440;
n = 1;
sig = 0;
while n<max_harm,
sig = sig+amp*(1/n)*sin(n*2*%pi*f*t);
n=n+2;
end
eldtf = dscr(elatf,1/100); // Discretization of the linear filter
// ici la fonction qui plante
y = flts(sig,eldtf); // Filter the signal
// affichage des graphes:
subplot(2,1,1);
plot(t,sig);
xtitle('Signal Carré','t','Amplitude');
subplot(2,1,2);
plot(t,y);
xtitle('The filtered gaussian noise','t','Amplitude');
J’essaie de mon côté, mais si vous avez la réponse à mon problème, je suis toute ouïe.
Merci d’avance,
Louis