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(transformee_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