[MATLAB] Pb: Symétrie spectre et noms fichier
Résolu
Newenda
Messages postés
83
Statut
Membre
-
Sacabouffe Messages postés 10427 Statut Membre -
Sacabouffe Messages postés 10427 Statut Membre -
Bonjour,
Voici mon programme pour afficher le spectre d'un signal acoustique :
------------------------------------------------------------------------------------------------------------------
clear all
close all
%rdir n'est pas une fonction incrémentée dans matlab (la copier dans chaque
%dossier du programme qui l'utilise)
A=rdir('D:\Travail\DOSSIER_TEST\TEST_BOUCLE\test01BF\*.txt');
%boucle permettant de lire tous les fichiers du dossier
for p=1:size(A,1)
disp(A(p).name)
[fid]=fopen(A(p).name,'rt')
% boucle permettant d'éliminer les N premières lignes du fichier
N = 15;
for n=2:N;
fgetl(fid);
end;
%frequence echantillonage
f_ech = 10000;
%tmax = temps d'enregistrement d'un événement
tmax = 0.500;
%axe fréquence
%freq = [1:1:5000]
freq = [0:1/tmax:f_ech-1/tmax];
freq = freq';
%axe de temps
t = [0:1/f_ech:tmax-1/f_ech];
t=t';
% Lecture des données qui se trouvent sur deux colonnes
donnee=fscanf(fid,'%g %g',[2 inf]);
% Mettre le vecteur de donnees dans le bon ordre
donnee=donnee';
%donnees de la voie n°1 (1ere colonne)
voie1 = donnee(:,1);
%Fermeture du fichier texte
fclose(fid);
%%%%%%%%%%%%%%SPECTRE SIGNAUX%%%%%%%%%%%%%
voie1_fft = fft(voie1);
spi = abs(voie1_fft).^2;
size(t)
size(freq)
size(spi)
figure;
plot(freq, spi);
title('name.txt');
------------------------------------------------------------------------------------------------------------------
retourne les size suivants:
------------------------------------
ans =
5000 1
ans =
5000 1
ans =
5000 1
-------------------------------
J'ai une question et un problème :
1- Le problème est que, comme vous pouvez le voir sur une des figures jointe (lien dessous), mon spectre à une symétrie en 5000 Hz et ça je ne vois pas du tout pourquoi...
J'ai mis les size des différentes matrices pour vérification...
2- Ma question est: Comment nommé automatiquement les figures par les nom de leurs fichiers correspondant ?
http://img24.imageshack.us/img24/993/figure6.jpg
Merci d'avance !
Voici mon programme pour afficher le spectre d'un signal acoustique :
------------------------------------------------------------------------------------------------------------------
clear all
close all
%rdir n'est pas une fonction incrémentée dans matlab (la copier dans chaque
%dossier du programme qui l'utilise)
A=rdir('D:\Travail\DOSSIER_TEST\TEST_BOUCLE\test01BF\*.txt');
%boucle permettant de lire tous les fichiers du dossier
for p=1:size(A,1)
disp(A(p).name)
[fid]=fopen(A(p).name,'rt')
% boucle permettant d'éliminer les N premières lignes du fichier
N = 15;
for n=2:N;
fgetl(fid);
end;
%frequence echantillonage
f_ech = 10000;
%tmax = temps d'enregistrement d'un événement
tmax = 0.500;
%axe fréquence
%freq = [1:1:5000]
freq = [0:1/tmax:f_ech-1/tmax];
freq = freq';
%axe de temps
t = [0:1/f_ech:tmax-1/f_ech];
t=t';
% Lecture des données qui se trouvent sur deux colonnes
donnee=fscanf(fid,'%g %g',[2 inf]);
% Mettre le vecteur de donnees dans le bon ordre
donnee=donnee';
%donnees de la voie n°1 (1ere colonne)
voie1 = donnee(:,1);
%Fermeture du fichier texte
fclose(fid);
%%%%%%%%%%%%%%SPECTRE SIGNAUX%%%%%%%%%%%%%
voie1_fft = fft(voie1);
spi = abs(voie1_fft).^2;
size(t)
size(freq)
size(spi)
figure;
plot(freq, spi);
title('name.txt');
------------------------------------------------------------------------------------------------------------------
retourne les size suivants:
------------------------------------
ans =
5000 1
ans =
5000 1
ans =
5000 1
-------------------------------
J'ai une question et un problème :
1- Le problème est que, comme vous pouvez le voir sur une des figures jointe (lien dessous), mon spectre à une symétrie en 5000 Hz et ça je ne vois pas du tout pourquoi...
J'ai mis les size des différentes matrices pour vérification...
2- Ma question est: Comment nommé automatiquement les figures par les nom de leurs fichiers correspondant ?
http://img24.imageshack.us/img24/993/figure6.jpg
Merci d'avance !
A voir également:
- [MATLAB] Pb: Symétrie spectre et noms fichier
- Gnu octave matlab - Télécharger - Édition & Programmation
- Intervalle sur matlab ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
- Matlab 6.5 download - Forum Windows
- Boucle for matlab - Forum Matlab
3 réponses
Salut
C'est comme d'habitude, si t'es habitué à travailler en analyse du signal, tu fais avec les dft et t'exploites ça avec la fréquence centrale que t'obtiens, soit t'essaies de te ramener à quelque chose de plus... ben je sais pas, de plus visuel peut-être... et tu centres tout. Les dft, c'est ni plus ni moins des ft mais y a quand même des différences. Alors soit tu bidouilles avec fftshift, soit tu fais le calcul à la main.
Si tu veux centrer le tout, tu peux faire un truc de ce genre-là :
Ciao
C'est comme d'habitude, si t'es habitué à travailler en analyse du signal, tu fais avec les dft et t'exploites ça avec la fréquence centrale que t'obtiens, soit t'essaies de te ramener à quelque chose de plus... ben je sais pas, de plus visuel peut-être... et tu centres tout. Les dft, c'est ni plus ni moins des ft mais y a quand même des différences. Alors soit tu bidouilles avec fftshift, soit tu fais le calcul à la main.
Si tu veux centrer le tout, tu peux faire un truc de ce genre-là :
%Plage fréquence fmax = 10000; %Temps d'enregistrement d'un événement tmax = 0.500; %Nombre de points N=5000; %Doit être égal à %N=f_ech*tmax; %Axe fréquence freq=linspace(0,fmax/2-fmax/(2*N),N); %Pareil que %freq=-fmax/2+fmax/(2*N)+fmax/N*(0:N-1); %Axe de temps t=linspace(0,tmax/2-tmax/(2*N),N); %Pareil que %t=-tmax/2+tmax/(2*N)+tmax/N*(0:N-1); %blablabla... voie1_fft=-T/N*exp(-1i*pi*(N/2-1/(2*N)))*... exp(1i*pi*(1-1/N)*(0:N-1)).*... fft(voie1.*exp(1i*pi*(1-1/N)*(0:N-1))); %blablabla...Pour nommer les figures par le nom du fichier correspondant, tu mets ça dans le code :
name_figure=A(p).name; deb=find(name_figure=='\',1,'last')+1; fin=find(name_figure=='.',1,'last')-1; name_figure=name_figure(deb:fin);Rajoute le .txt si t'en as envie.
Ciao