Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB > Signal
Signal Forum d'entraide sur le traitement du signal en MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/11/2012, 13h09   #1
gc001
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 59
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 59
Points : 14
Points : 14
Par défaut problème fonction fft

Bonjour à tous,

Je cherche à faire une fft de deux signaux relativement simple. Malheureusement, lorsque je fais la fft, je n'obtiens pas les deux fréquences représentées, à savoir 244 et 250.

Voici mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Fs = 32768;                   % Sampling frequency
T = 1/Fs;                     % Sample time
L = 2048;                     % Length of signal
t=(0:L-1)*T;                 % 2048*dt Time vector

% Sum of a 244 Hz sinusoid and a 250 Hz sinusoid
x = sin(2*pi*244*t);
y = sin(2*pi*250*t);
z = x+y;

%fft
figure(1)
FFT_size=2048;
X=fft(z,FFT_size);
f=(0:FFT_size/2)/(FFT_size/2)*Fs/2;
plot(f,abs(X(1:FFT_size/2+1))); % on voit bien que le signal est à 10 Hz
title('FFT - Pré');
xlabel('Fréquence(Hz)');
ylabel('Amplitude');
Avez-vous une idée de la raison pour laquelle le pic sur 250 n’apparaît pas?
Merci d'avance pour votre aide.
gc001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 13h32   #2
tubaas
Membre émérite
 
Avatar de tubaas
 
Homme Mathieu Martinez
Acousticien
Inscription : août 2009
Messages : 641
Détails du profil
Informations personnelles :
Nom : Homme Mathieu Martinez
Âge : 28
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Acousticien
Secteur : Industrie

Informations forums :
Inscription : août 2009
Messages : 641
Points : 864
Points : 864
salut
je ne vais pas exactement répondre à ta question mais essayer tout de même de t'aiguiller : d'après toi, quelle est la résolution fréquentielle de ta fft (étant donné que le code est plutôt bien écrit, il est surprenant que tu ne te sois pas posé la question) ?
tubaas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 13h37   #3
L'hermine
Nouveau Membre du Club
 
Daudet Alphonse
Inscription : septembre 2010
Messages : 36
Détails du profil
Informations personnelles :
Nom : Daudet Alphonse
Âge : 28

Informations forums :
Inscription : septembre 2010
Messages : 36
Points : 26
Points : 26
Bonjour,

Il apparaît, mais caché...
Ta résolution n'est pas bonne, les deux pics sont mélangés.
Passe "L" et FFT_size" à 2^20 et tu les verras distinctement
Ou bien teste les fréquences "240" et "300".

Cdt,
L'hermine
L'hermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 14h05   #4
gc001
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 59
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 59
Points : 14
Points : 14
Merci beaucoup pour vos réponses!

Citation:
Envoyé par tubaas Voir le message
d'après toi, quelle est la résolution fréquentielle de ta fft (étant donné que le code est plutôt bien écrit, il est surprenant que tu ne te sois pas posé la question) ?
En fait, je ne me suis pas posé la question car la résolution de ma fft est fixe et ce n'est donc pas un paramètre que je peux modifier pour améliorer la résolution. Donc,

Citation:
Envoyé par L'hermine
Passe "L" et FFT_size" à 2^20 et tu les verras distinctement
Ou bien teste les fréquences "240" et "300".
c'est impossible pour moi...

Je pensais à faire ce que l'on appel un zoom fft pour contourner le problème.
gc001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 16h27   #5
gc001
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 59
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 59
Points : 14
Points : 14
Par défaut fonction fft et zoom fft

Alors, je me suis déjà un peu engagé dans le codage de ce type de fonction mais après un 'Heterodyning', je suis coincé dans le filtrage. D'après mes lectures, il est conseillé de faire une fir mais je ne suis pas convaincu de l'utilisé correctement.

Voici ce que j'ai eu l'occasion de coder:
Code :
1
2
3
b = fir1(16,Fs2/2); % 16 a été mis au hasard et Fs2/2 correspond à la fréquence
A=1;      
ycv = filter(b,A,ab);% ab correspond au signal après l'heterodyning
Parmi les paramètres dont je ne suis pas sure, il y a les deux dans fir1 ainsi que le A pour le filtrage.
gc001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h42.


 
 
 
 
Partenaires

Hébergement Web