comment transformer le domaine de fréquence dans le domaine temporel
J'avais créé un 3 trois différents signal de fréquence et de filtrer le signal que je ne veux pas. Mais quand je l'aide ifft dans matlab, il montre une mauvaise graphique.Comment transformer mon domaine de fréquence du spectre de nouveau dans mes 3 secondes domaine graphique? Ci-dessous mon code est comme ci-dessous:
clc
clear all
Fs = 8192;
T = 1/Fs;
%create tones with different frequency
t=0:T:1;
t2=1:T:2;
t3=2:T:3;
y1 = sin(2*pi*220*t);
y2 = sin(2*pi*300*t2);
y3 = sin(2*pi*440*t3);
at=y1+y2+y3;
figure;
plot(t,y1,t2,y2,t3,y3),title('Tones with noise');
[b,a]=butter(2,[2*290/Fs,2*350/Fs],'stop');
e=filter(b,a,at);
et=(ifft(abs(e)));
figure,
plot(et)
- vous effacez les informations de phase lorsque vous ne
abs(ffs(..
- hmmm...je ne suis pas d'obtenir ce que l'on entend
- Je vois que vous editted la question et il l'a...
- ok..j'ai tort essuyer..XD
Vous devez vous connecter pour publier un commentaire.
Comme il est maintenant,
et
est dans le domaine de fréquence, en raison de la fft. Vous n'avez pas besoin de la fft. justeplot(e)
et vous aurez le temps de domaine filtré de la forme d'onde. Yo peut vérifier les performances du filtre dans la freq. domaine par fft si, justeEdit:
Votre code comme il est écrit sur la question a le bug suivant:
at
a exactement 1 seconde de l'info en elle (ou 8192 éléments). Si vousplot(at)
vous verrez la somme des fréquences d'accord, mais ils ont toushappen
dans le même temps. C'est la façon de résoudre le problème:true
(valeur 1) pour tous les éléments det
dans la gamme de t<1 etfalse
(ou 0) pour le reste, rendant ainsiy1
l'égalité dessin(2*pi*220*t)
seulement à l'intervalle [0,1], ety1=0
pour le reste de la gamme, [1 3].