[Matlab] Traitement de données textuelles (fichier.txt)

Tout ce qui concerne notamment les outils de calcul numérique, de calcul formel ou de géométrie.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
NoBusy

[Matlab] Traitement de données textuelles (fichier.txt)

Message non lu par NoBusy »

Bonjour tout le monde!
Pour commencer bonne année!

Je vous explique mon problème ahah, je me débrouille plutôt bien en C/Cpp, VHDL et assembleur (sur PIC surtout) donc vous pouvez me parler en language barbare de programmeur.
J'ai plusieurs fichiers de 800.000 lignes à traiter, alors pour commencer je l'avais fait avec Excel, mais... le temps de traitement est horriblement long! Je voudrais essayer de faire les traitements avec MatLab pour gagner en temps, automatiser la fonction et surtout apprendre de nouvelles choses!

Les lignes de texte dans mon fichier .txt ressemble à ça:


Device@:6B:Register@:00;Value:E0
Device@:6B:Register@:01;Value:D8
Device@:6B:Register@:02;Value:E1 %lecture des valeurs des registres de 00 à F4 du device 6B
...
Device@:6B:Register@:F4;Value:00
INFO: tralalilalalala
Device@:6B:Register@:21BF;Value:00
INFO: tralalilalalala
Device@:4C:Register@:00;Value:E0
Device@:4C:Register@:01;Value:D8
Device@:4C:Register@:02;Value:E1 %lecture des valeurs des registres de 00 à F4 du device 4C
...
Device@:4C:Register@:F4;Value:00
INFO: tralalilalalala
Device@:6B:Register@:00;Value:E3
Device@:6B:Register@:01;Value:D2
Device@:6B:Register@:02;Value:E4 %lecture des valeurs des registres de 00 à F4 du device 6B
...
Device@:6B:Register@:F4;Value:00
INFO: tralalilalalala
Device@:6B:Register@:21BF;Value:00
INFO: tralalilalalala
Device@:4C:Register@:00;Value:E0
Device@:4C:Register@:01;Value:D8
Device@:4C:Register@:02;Value:E1 %lecture des valeurs des registres de 00 à F4 du device 4C
...
Device@:4C:Register@:F4;Value:00




Je n'aurais Matlab que demain, j'ai commencé à faire quelque ligne de Matlab sans avoir le logiciel entre les main pour le moment... (j'ai quelques notions de matlab vu en cours il y a 3-4 ans)

-----
clear all
close all

%Ouverture et acquisition des données dans la matrice Data
[FileName,PathName] = uigetfile('*.txt','Sélectionnez le fichier texte');
fid=fopen(fullfile(PathName,FileName),'r');
Data = textscan(fid, '%s', 'delimiter', '\n');
fclose(fid);
------

Là j'ouvre le fichier qui m'interresse, et le stock dans la variable Data.

J'ai lu qu'on pouvait utiliser la fonction textscan pour extraire des données bien particulière de mon fichier Data et les mettre dans un tableau.

Dans l'absolue je voudrais creer une matrice pour devices 6B et une pour device 4C de X colonnes représentant le nombre de fois où j'ai lu les valeurs registres et de 245(F4h+1) lignes (nombre de registres lu). et dans la case je voudrai mettre la valeur courante lu.
Ah et je voudrais aussi ne pas prendre en compte les registres avec les 4 chiffre hexa, juste prendre les 00 à F4.
En gros ca donnerait ça sous forme de tableau du device 6B avec comme première colonne l'adresse du registre

C1 C2 C3
00 E0 E3
01 D8 D2
02 E1 E4
...
4F 00 00


Pouvez-vous me dire quelle fonction utiliser pour me donner les bons outils pour essayer de réussir par moi même. Je pense pas que ça soit très dure à faire sous matlab et que ca nécéssite juste quelques lignes de code...

J'attend vos aides charitables!

Merci d'avance!

Kevin (oui je sais triste prénom...)
OG
Modérateur honoraire
Modérateur honoraire
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Matlab] Traitement de données textuelles (fichier.txt)

Message non lu par OG »

Bonjour

Je ne travaille pas avec Matlab. Comme tu connais C++ et autres, pourquoi ne pas utiliser Python
qui propose une bonne gestion de traitement de fichiers, les expressions régulières, etc, et, via Numpy, Scipy, Matplotlib
(et peut-être d'autres extensions adaptées au pb) du calcul scientifique ?

O.G.