Extraire chaine de caratcère via matlab
karaq
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
O!!!u!!!i!!!s!!!t!!!i!!!t!!!i -
O!!!u!!!i!!!s!!!t!!!i!!!t!!!i -
Bonjour,
je suis nouveau donc d'avance je m'excuse si ma mise en page ne correspond pas à ce qui est attendu, je reste à l'écoute de toutes remarques à ce sujet.
Sinon pour rentrer dans le vif du sujet mon problèmeest le suivant:
J'ai un fichier trace dans lequel je retrouve divers informations concernant le déroulement d'une éxpérimentation.
Chaque début de ligne commence par l'heure avec une précision à la ms du genre "17:25:42.658". Cette information a son importance.
Ce que je souhaite c'est pouvoir récupérer cette information sur 2 lignes précise. Le truc c'est que le fichier peut être composer de plus de 10000 lignes.
Je souhaite donc extraires les lignes qui ont pour info une valeur en Héxa précise.
Par exemple isoler les lignes qui on la valeur "x035". Pour que je puisse derrière récupérer l'heure qui est défini en début de ligne.
Je vois comment faire sous linux mais le hic c'est que je dois faire ça sous matlab.
y a pas une option avec "fgetl" qui permette d'obtenir les lignes ayant un caractère précis.
Je reste à disposition pour toutes autres informations merci à vous tous
je suis nouveau donc d'avance je m'excuse si ma mise en page ne correspond pas à ce qui est attendu, je reste à l'écoute de toutes remarques à ce sujet.
Sinon pour rentrer dans le vif du sujet mon problèmeest le suivant:
J'ai un fichier trace dans lequel je retrouve divers informations concernant le déroulement d'une éxpérimentation.
Chaque début de ligne commence par l'heure avec une précision à la ms du genre "17:25:42.658". Cette information a son importance.
Ce que je souhaite c'est pouvoir récupérer cette information sur 2 lignes précise. Le truc c'est que le fichier peut être composer de plus de 10000 lignes.
Je souhaite donc extraires les lignes qui ont pour info une valeur en Héxa précise.
Par exemple isoler les lignes qui on la valeur "x035". Pour que je puisse derrière récupérer l'heure qui est défini en début de ligne.
Je vois comment faire sous linux mais le hic c'est que je dois faire ça sous matlab.
y a pas une option avec "fgetl" qui permette d'obtenir les lignes ayant un caractère précis.
Je reste à disposition pour toutes autres informations merci à vous tous
A voir également:
- Extraire chaine de caratcère via matlab
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Extraire image pdf - Guide
5 réponses
Je n'ai pas connaissance d'une telle option et la page d'aide de fgetl n'en fait pas mention.
Mais tu peux utiliser fgetl puis le regexp dont je parlais.
fid = fopen('myfile.txt','r');
tline = fgetl(fid);
nl = 1;
while ischar(tline)
if size(regexp(tline,'.*x025.*','match'),1)~=0; disp(['Line ' num2str(nl) ' : ' tline]); end;
nl=nl+1;
tline = fgetl(fid);
end
fclose(fid);
Ou pour enregistrer les lignes dans un tableau de cellules de caractères...
clear M;
fid = fopen('myfile.txt','r');
tline = fgetl(fid);
nl = 1;
while ischar(tline)
if size(regexp(tline,'.*x025.*','match'),1)~=0; M{nl}=tline; end;
nl=nl+1;
tline = fgetl(fid);
end
fclose(fid);
Ou pour enregistrer les lignes dans un fichier...
fid = fopen('myfile.txt','r');
fidout = fopen('myfileout.txt','w');
tline = fgetl(fid);
nl = 1;
while ischar(tline)
if size(regexp(tline,'.*x025.*','match'),1)~=0; fprintf(fidout,'%sn',tline); end;
nl=nl+1;
tline = fgetl(fid);
end
fclose(fid);
fclose(fidout);
Pour finir, si tu es sûr que le programme ne sera utilisé que sous une machine unix ou linux (mac aussi), tu peux utiliser les commandes relatives à l'OS, il suffit de les faire précéder d'un point d'exclamation.
!grep 'x025' myfile.txt > foundlines.txt
Bye
Mais tu peux utiliser fgetl puis le regexp dont je parlais.
fid = fopen('myfile.txt','r');
tline = fgetl(fid);
nl = 1;
while ischar(tline)
if size(regexp(tline,'.*x025.*','match'),1)~=0; disp(['Line ' num2str(nl) ' : ' tline]); end;
nl=nl+1;
tline = fgetl(fid);
end
fclose(fid);
Ou pour enregistrer les lignes dans un tableau de cellules de caractères...
clear M;
fid = fopen('myfile.txt','r');
tline = fgetl(fid);
nl = 1;
while ischar(tline)
if size(regexp(tline,'.*x025.*','match'),1)~=0; M{nl}=tline; end;
nl=nl+1;
tline = fgetl(fid);
end
fclose(fid);
Ou pour enregistrer les lignes dans un fichier...
fid = fopen('myfile.txt','r');
fidout = fopen('myfileout.txt','w');
tline = fgetl(fid);
nl = 1;
while ischar(tline)
if size(regexp(tline,'.*x025.*','match'),1)~=0; fprintf(fidout,'%sn',tline); end;
nl=nl+1;
tline = fgetl(fid);
end
fclose(fid);
fclose(fidout);
Pour finir, si tu es sûr que le programme ne sera utilisé que sous une machine unix ou linux (mac aussi), tu peux utiliser les commandes relatives à l'OS, il suffit de les faire précéder d'un point d'exclamation.
!grep 'x025' myfile.txt > foundlines.txt
Bye
Hi
Tu peux te débrouiller de la même manière qu'avec linux en trifouillant textscan et regexp je pense, mais il y a peut-être mieux.
Quelque chose de ce genre :
fid=fopen('myfile.dat','r');
M=textscan(fid,'%s','delimiter','\n');
M=regexp(M{1},'.*x035.*','match');
M=strvcat([M{:}]);
fclose(fid);
Pense à demander de l'aide ailleurs que sur ce forum miteux la prochaine fois, si tu attends après les habitués pour te répondre, tu risques d'attendre longtemps, il n'y a que des incompétents ici. Les chances d'obtenir une réponse intelligente à une question par là sont quasi nulles, les seuls cas où cela peut arriver, c'est quand quelqu'un tombe malencontreusement sur ton sujet lors d'une recherche fortuite sous un moteur de recherche, comme ce fut le cas pour moi.
Bye
Tu peux te débrouiller de la même manière qu'avec linux en trifouillant textscan et regexp je pense, mais il y a peut-être mieux.
Quelque chose de ce genre :
fid=fopen('myfile.dat','r');
M=textscan(fid,'%s','delimiter','\n');
M=regexp(M{1},'.*x035.*','match');
M=strvcat([M{:}]);
fclose(fid);
Pense à demander de l'aide ailleurs que sur ce forum miteux la prochaine fois, si tu attends après les habitués pour te répondre, tu risques d'attendre longtemps, il n'y a que des incompétents ici. Les chances d'obtenir une réponse intelligente à une question par là sont quasi nulles, les seuls cas où cela peut arriver, c'est quand quelqu'un tombe malencontreusement sur ton sujet lors d'une recherche fortuite sous un moteur de recherche, comme ce fut le cas pour moi.
Bye
Merci pour ton aide, je vais essayer ça.
On m'a parlé de la fonction "fgetl" mais en mettant une condition ça te dit quelque chose.
J'ai toujours utilisé cette fonction sans condition. je sais pas comment lui dire de prendre la ligne avec le caractère "x025" par exemple. Est-ce possible?
En tout cas merci pour ton aide au combien précieuse
On m'a parlé de la fonction "fgetl" mais en mettant une condition ça te dit quelque chose.
J'ai toujours utilisé cette fonction sans condition. je sais pas comment lui dire de prendre la ligne avec le caractère "x025" par exemple. Est-ce possible?
En tout cas merci pour ton aide au combien précieuse
Merci pour toutes tes infos
je vais me dépatouiller avec ce que tu m'as donné
et je te tiens au jus merci en tout cas
je vais me dépatouiller avec ce que tu m'as donné
et je te tiens au jus merci en tout cas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question