Rechercher : dans
Par :

Probleme matlab transformee fourrier (SOS)

Dernière réponse le 15 nov 2008 à 19:26:53 Rousseau, le 15 nov 2008 à 17:05:37 
 Signaler ce message aux modérateurs

Bonjour,
je suis etudiant en géologie et on m'oblige a subir la programmation
le but de mon étude est d'effectuer un traitement du signal
et voila plus de 3455325h que je suis bloqué, je n'arrive pas a afficher la transformée de fourier inverse. En effet, peu importe mon filtre mon programme m'affiche toujours la même chose... c'est assez énervant
SVP j ai vraiment besoin d'aide
voici mon progamme:


clc
clear all
close all
P=[];
[filename, pathname] = uigetfile('*.dat','Selectionnez le fichier de données à ouvrir');
nom_fich=fullfile(pathname,filename);
%nom_fich=strcat(pathname,filename);
entree=fopen(nom_fich,'r');
nbr_echant = fscanf(entree,'%f',1);
nbr_col = fscanf(entree,'%f',1);
unit_1 = fscanf(entree,'%s',1);
unit_2 = fscanf(entree,'%s',1);
while not (feof(entree))
P=[P; fscanf(entree,'%f',1),fscanf(entree,'%f',1)];
end
fclose(entree);
%Affichage du graphe des données
figure;
plot(P(:,1),P(:,2),'-b');
title('Signal initial');
xlabel(unit_1);
ylabel(unit_2);
%_____________________________CALCUL DE LA FFT_____________________________

transformee_fourier=fft(P(:,2),length(P(:,2)));
%N = nombre de valeurs
N=length(P);
%pas = incrémentation de la première colone
pas=P(N,1)/N;
%normailsation de la transformee de fourier comme indiqué sur poly
transformee_fourier_normalisee=transformee_fourier/N;
%calcul de l'amplitude de la transformée de fourier= complexe*conjugué(complexe)=-i^2=1
A = transformee_fourier.* conj(transformee_fourier) / N;

%fréquence d'étalement des valeurs de la transformee : on tient compte du pas
%en multipliant les fréquences par le pas
figure
f1 = (1:N/2)/(N*pas);
f2 = (-N/2:-1)/(N*pas);
f=[f2,f1];
%f = (1:N)./N
%T=1./f
plot(f,A)
axis([min(f) max(f) min(A) max(A)])
title('FFT du signal')
xlabel('fréquence (m-1)')
ylabel('amplitude')

%plot(matrice_transforme(:,1),matrice_transforme(:,2),'*')

%______________________polaires_____________________________­_____________

%mise en matrice de la transformée de fourier pour le plot en polaire:
matrice_transformee=[real(transformee_fourier),imag(transfor­mee_fourier)];
figure
polar(matrice_transformee(:,1),matrice_transformee(:,2),'.r'­)

%_________________________PSD_______________________________­________________
%figure
%loglog(matrice_transformee,'-r')

%______________________________filtre_______________________­_______________

freq=input('entrez la valeur de frequence de coupure :');
Z=[];
%find(-freq<f<freq)
for x=1:N
s=f(1,x);
if s>-freq & s<freq;
s=0;
Z=[Z,s];
else
s=1;
Z=[Z,s];
end
end
valeur_filtre=A.*Z';
jd=ifft(valeur_filtre);

figure
plot(f,valeur_filtre)

figure
plot(P(:,1),jd)

merci d'avance

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « probleme matlab transformee fourrier (SOS) » dans :
Transformer un fichier Word (.doc) en PDF VoirTransformer en fichier PDF un fichier Microsoft Word (.doc) Rien de plus simple ! Ouvrez votre fichier *.doc avec OpenOffice.org Réglez éventuellement la mise en page par le menu Format / Page... Dès lors, 2 solutions pour transformer...
Transformer un fichier Microsoft Excel (.xls) en PDF VoirTransformer en fichier PDF un fichier Microsoft Excel (.xls) Rien de plus simple ! Ouvrez votre fichier *.xls avec OpenOffice.org Réglez éventuellement la mise en page par le menu Format / Page... Dès lors, 2 solutions pour transformer en...
Transformer une photo en dessin avec Gimp 2.4 VoirVous aimeriez transformer vos photos en dessins, nous allons voir ici comment faire avec Gimp Pour notre "dessin", nous allons prendre cette photo : La voici dans la fenêtre de travail de Gimp : Cliquez sur "calques" et ensuite sur...
Télécharger Transform XP to Vista VoirSi vous cherchez quelque chose de nouveau pour personnaliser l'interface de votre Windows XP, mais que vous n'avez pas le temps pour des tests. Ce thème est fait pour vous. Transform Xp to Vista est un pack complet pour la personnalisation de votre...

1

Sacabouffe, le 15 nov 2008 à 17:41:59

Salut
fft donne un spectre qui est pas centré.
Pour qu'il soit centré, il faut utiliser fftshift, c'est nécessaire si tu veux appliquer un filtre. Tape help fftshift ou doc fftshift pour plus d'infos.
Bonne soirée Thought I heard a rumbling, calling to my name
Two hundred million guns are loaded, Satan cries "Take aim!"

Répondre à Sacabouffe

2

Rousseau, le 15 nov 2008 à 18:12:52

Je ne comprend pas pourquoi le faite de centrer ma fft change mon probleme
j ai essayé shiftfft, cela m'inverse et m'allonge mon signal quand je donne la valeur 0 au filtre alors que je devrai retomber sur mon signal de départ...
merci

Répondre à Rousseau

3

Sacabouffe, le 15 nov 2008 à 19:01:45

Il faut ensuite shifter de nouveau avant d'appliquer ifft. Thought I heard a rumbling, calling to my name
Two hundred million guns are loaded, Satan cries "Take aim!"

Répondre à Sacabouffe

4

Rousseau, le 15 nov 2008 à 19:09:36

Oui c'est ce que j'ai fait
le problème est que je ne comprend pas les signaux qui me sont rendus par matlab (ce n'est pas vraiment ce à quoi je m'attendais) j'aurai voulu un signal ne m'affichant que les sinusoides des longueurs d'onde qui m'interesse; mais là j'ai l'impression que tout mes signal sont déformés et ne correspondent plus

Répondre à Rousseau

5

 Sacabouffe, le 15 nov 2008 à 19:26:53
  • +1

Ah...
Mais il y a un truc que je comprends pas dans ton code.
T'appliques l'IFT à l'amplitude filtrée de la FFT. C'est normal ?
Pourquoi t'appliques pas l'IFT à la FFT filtrée ? Thought I heard a rumbling, calling to my name
Two hundred million guns are loaded, Satan cries "Take aim!"

Répondre à Sacabouffe