Voici mon code pour un signal à deux tons, où j'utilise une bande d'arrêt pour supprimer la tonalité plus élevée, puis tracé le avant (en bleu) et après (en rouge) dans le domaine fréquentiel après avoir convolu mon signal avec les coefficients de filtre .
Si vous mettez ce code dans Matlab, vous pouvez clairement voir que la fréquence supérieure a été supprimée avec succès par le filtre, mais pour une raison quelconque, l'amplitude de la fréquence inférieure a été réduite de moitié, et plus j'augmente le nombre de coefficients de filtre, plus cela aplatit toute ma courbe, pourquoi cela se produit-il? Et comment puis-je l'empêcher pour que la bande d'arrêt ne se propage pas vers l'extérieur? Voici l'image et le code:
fSampling = 8000; tSampling = 1 / fSampling; t = 0: t Échantillonnage: 0,005; F0 = 1000; F1 = 3000; xt = sin (2 * pi * F0 * t) + sin (2 * pi * F1 * t); ht = fir1 (40, 0,25, «stop»); yt = conv (xt, ht); fAxis = -4000: 125: 4000-125; xF = fft (xt, 64); MagXF = fftshift (abs (xF)); tracé (fAxis, MagXF); attendez yF = fft (yt, 64); MagYF = fftshift (abs (yF)); plot (fAxis, MagYF, 'r')