Bonjour à tous,
j'aimerais de l'aide pour m'aider à comprendre l'utilisation de la fonction textscan.
Mon fichier se compose d'une en-tête avec différents paramètres que je lis en limitant la lecture complète comme ceci:
En fonction de cette en-tête, je sais que je vais avoir 420 fois un ensemble de données à lire, le numéro de la ligne où ça va commencé. L'ensemble des données se présente sous la forme suivante : 44 lignes de 44 valeurs séparées par des virgules.
Code : Sélectionner tout - Visualiser dans une fenêtre à part data = textscan(fid, '%s',30, 'delimiter', '\n', 'whitespace', ''); % lit les 30 premières lignes entières
Pour les lire, j'utilise ce code :
Pour la première itération, j'ai bien mon premier ensemble de données, pour le second je n'ai plus que 23 lignes puis je passe à 21 lignes jusqu'à la 28ème itération et finalement, Y{a>28} est vide...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 delimString = repmat('%d', 1, 44); for a=1:420 startLine = ligne_debut_premiere_frame+(a-1)*(44+2); %correspond vraiment au numéro de ligne de chaque début d'ensemble des données Y{a} = cell2mat(textscan(fid, delimString, 44, 'headerlines', 44-1, 'delimiter', ',')); end
Pourtant si je teste la lecture de mon premier ou dernier ensemble cela fonctionne :
Par contre, cela ne fonctionne plus dès lors que j'enchaine les textscan. En reprenant, la lecture du premier et du dernier, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 fid = fopen(filename); % ouvre le fichier temp1=cell2mat(textscan(fid, delimString, 44, 'headerlines', 25-1, 'delimiter', ',')); fclose(fid) fid = fopen(filename); % ouvre le fichier temp2=cell2mat(textscan(fid, delimString, 44, 'headerlines', 19299-1, 'delimiter', ',')); fclose(fid)
J'obtient ce que je veux dans "temp11" mais "temp21" est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 fid = fopen(filename); % ouvre le fichier temp11=cell2mat(textscan(fid, delimString, 44, 'headerlines', 25-1, 'delimiter', ',')); temp21=cell2mat(textscan(fid, delimString, 44, 'headerlines', 19299-1, 'delimiter', ',')); fclose(fid)
Y'aurait-il un truc que je n'aurais pas vu ? Bien sûr si j'ouvre et ferme à chaque itération le fichier, ça doit fonctionner mais quand même, y'a plus jolie !!!
Merci de votre aide
Christophe
Partager