Bonjour,
je cherche actuellement à comparer le temps de calcul d'un produit de convolution en utilisant la convolution directe et en utilisant la convolution par transformées de Fourier. Le code que j'ai développé est ci-dessous, or il ne me donne pas la même courbe selon le type de convolution utilisée, je n'arrive pas à trouver mon erreur, quelqu'un peut m'aider ?
Citation :
//Initialisation
xdel(winsid()); // Fermeture des fenetres
clear // Suppression des variables
clc // effacement des lignes de la console
lines(0);
// définition des constantes
N=300 ; //nombre de points,
Te=0.1e-3 ; // période d'échantillonange
F=100 ; // fréquence du signal
t=Te*(0:N-1);// description du vecteur temps
f1=cos(2*%pi*F*t);//description du vecteur signal f1
f2=sin(2*%pi*F*t);//description du vecteur signal f2
////////////////////////////////////////////////////////////////////////////
//Calcul par convolution directe
timer()
y = convol(f1, f2);
timer();
//Calcul par transformée de fourrier
timer()
z = fft( abs(fft(f1)) .* abs(fft(f2)) , 1);
timer();
// affichage sur la fenêtre 0
xset('window',0); // sélection de la fenêtre 0
xbasc(0); //effacer la fenetre 0
xset("font size",4); //définition de la taille de la police
xsetech([0, 0, 0.5,0.5]); // le haut gauche de la fenetre coupée en 4
plot(f1) // affichage de s en fonction du rang
xtitle('Sinusoide 1');
// affichage du module brut de forme
xsetech([0,0.5,0.5,0.5]) ;// le bas gauche de la fenetre coupée en 4
plot(f2) ;
xtitle('Sinusoide 2');
// affichage du module corrigé de 0 à fe/2
xsetech([0.5,0,0.5,0.5]) ; //le haut droit de la fenetre coupée en 4
plot(y);
xtitle('Convolution directe');
// zoom sur la raie, de la fréquence nulle à fe/5
xsetech([0.5,0.5,0.5,0.5]) ; //le bas droit de la fenetre coupée en 4
plot(z);
xtitle('Convolution par transformées de Fourier');
Merci par avance !