bonjour,
je débute en matlab (et aussi en programmation), j'ai fouillé ce forum très riche, mais je n'ai pas encore de soultion à mon probléme.
Dans un répertoire "Méthodes" j'ai un programme matlab : calcul.m (qui lui fonctionne)
Dans des répertoires "Enregistrement_date1", il y n répertoires "piece_i", dans chaque répertoire "piece_i" il y a un sous-répoertoire "piece_i" contenant le fichier qui m'intéresse (en l'occurrence AI.xlt).
le nom des pièces et donc des répertoires est en fait de la forme: 'AB123456'.
Ces fichiers AI.xlt sont générés par une carte d'acquisition de données.
Jusqu'à présent à la main : j'ouvrais un à un les fichiers AI.xlt sous ultraedit, changeais les virgule en point ( ',' en '.'), sauvegardais un à un les fichiers dans le répertoire "Enregistrement_date1", avant de pouvoir lancer le calcul.m depuis ce répertoire. en plus du temps pris, il y a des risque d'erreur chaque répertoire date pouvant contenir jusqu'à 30 pièces (voire plus)...
Les résultats de calculs sont enregistrés dans un fichier .xls (un fichier par date).
Pour info le programme calcul.m commence ainsi :
mon problème est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 % établir la liste des pièces à traiter dans le répertoire et récupérer les % données liste=ls('*.csv'); Nombrepiece = numel(liste)/12; % nombre de pièces à traiter numlignedebfichier = 2; % Numéro de ligne du fichier excel écriture des résultats Texte={'','','','','','','','','','','',''}; % ligne blanche pour séparer les résultats de chaque pièce nom1piece = [liste(1,1:8)]; % nom de la 1° pièce nomNpiece = [liste(Nombrepiece,1:8)]; % nom de la dernière pièce (utilisés pour contruire le nom du fichier résulats) range=['A1:A1']; xlswrite([nom1piece,'_',nomNpiece,'.xls'],Nombrepiece,'donnees',range); for i=1:1:Nombrepiece filename=[liste(i,1:12)];% nom de fichier .csv courant A=importdata(filename); % importation des données Titre=A.colheaders; % lecture du titre des colonnes if strcmp(Titre(2),'AI 5'),break, end nompiece=[liste(i,1:8)] % nom de pièce courante Time=A.data(1:end,1); %temps AI3=A.data(1:end,2); % signal hauteur en volt AI4=A.data(1:end,3); % signal déplacement horizontal en volt
- arriver à lister les répertoires, et uniquement les répertoires "AB123456" du répertoire "Enregistrement_date1" (qui peuvent contenir aussi des fichiers..)
- ouvrir le fichier AI.xlt du sous répertoire "AB123456" du réportoire "parent" "AB123456"
- lancer le calcul (étant entendu que le fichier sera modifié avec le code suivant :
j'espère que l'exposé est assez clair.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 fid = fopen('AI.xlt', 'rt'); car = fread(fid); data = strrep(char(car'), ',', '.') fid=fopen('data.csv','w') fwrite(fid,data) fclose(all) Importdata('data.csv')
d'avance merci pour l'aide apportée
snake-dam
Partager