salut
j'ai des données (sous forme d'un vecteur 26 lignes et une colonne )dans un fichier matlab "aa.mat"
comment je peu transférer ces donnés à un fichier texte ?
merci
salut
j'ai des données (sous forme d'un vecteur 26 lignes et une colonne )dans un fichier matlab "aa.mat"
comment je peu transférer ces donnés à un fichier texte ?
merci
je te conseille un peu de lecture : http://matlab.developpez.com/faq/?page=fileio
salut
j'ai un code débutant à propos ceci mais avec erreurs
je peux le publier ?
Bonjour,
bien sûr, tu peux nous montrer le code ainsi que les messages d'erreurs complets que tu obtiens.
bonsoir
j'ai trouvé les erreurs de mon code et ça fonctionne très bien mais pour un seul fichier source
comment je peu le modifier pour qu'il soit adéquat a partir de N fichiers sources et le résultat soit dans un seul fichier .txt
voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 clc clear load('C:\aa.mat') Conten=who; save('C:\\aa.txt',Conten{:},'-ascii')
Tu dois utiliser l'argument -append :
Code : Sélectionner tout - Visualiser dans une fenêtre à part save('C:\\aa.txt',Conten{:},'-ascii','-append')
bonjour
j'ai modifié mon code comme suit :
mais ça pas fonctionné avec une erreur en load
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 clc clear load('C:\workspace\*.mat') Conten=who; save('C:\workspace\aa.txt',Conten{:},'-ascii','-append')
Qu'est ce que je doit faire??? Error using ==> load Unable to read file C:\workspace\*.mat : Invalid argument. Error in ==> descript at 3 load('C:\workspace\*.mat')
tu ne peux pas charger tous les .mat d'un coup avec load('*.mat')il faut que tu récupères les nom de ces .mat avec la fonction dir, puis que tu les charge un par un dans une boucle for
voici mon nouveau code :
et voila les erreurs dégagés
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 clc clear %l'emplacement de la base fichiersapp = dir('C:\workspace\*.mat'); % nombre de fichier dans la base nombreapp = length(fichiersapp); %boucle for i = 1:nombreapp nameapp =getfield(fichiersapp,{i},'name'); nameappT=strcat('C:\workspace\', nameapp); load('C:\workspace\', nameapp); Conten=who; save('C:\workspace\aa.txt',Conten{:},'-ascii','-append'); end
??? Error using ==> load Unable to read file C:\workspace\: No such file or directory. Error in ==> descript_all at 11 load('C:\workspace\', nameapp);
Bonsoir,
nameapp =getfield(fichiersapp,{i},'name');, ou plus simplement :
nameappT=strcat('C:\workspace\', nameapp);, on préfèrera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part nameapp = fichiersapp(i).name;
Le problème vient de la ligne load('C:\workspace\', nameapp); : le premier argument passé 'C:\workspace\' correspond au nom du fichier (qui n'en est pas un ici) alors que le second correspond aux noms des variables à charger. Il te suffit de passer directement la variable nameappT qui contient le chemin complet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nameappT = fullfile('C:\workspace\', nameapp);
Autre chose : Conten=who; va récupérer toutes les variable présentes : à savoir i, nameapp, nombreapp etc. en plus des variables venant d'être chargées depuis le fichier. Le plus sûr serait soit de faire un :
ou charger le fichier sous forme de structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Conten = who('-file', nameappT);
et la passer avec l'option -struct à la fonction save :
Code : Sélectionner tout - Visualiser dans une fenêtre à part maStructure = load(nameappT);
Code : Sélectionner tout - Visualiser dans une fenêtre à part save('C:\workspace\aa.txt', '-struct', 'maStructure', '-ascii', '-append')
Dernière modification par Invité ; 24/02/2014 à 20h18.
bonsoir Mr
j'ai corrigé les erreurs comme vous avez mentionné mais il ne fonctionne pas encore
aussi,j'ai pas compris le type de l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ??? Attempt to execute SCRIPT descript_all as a function: C:\descript_all.m
Voir la FAQ : Attempt to execute SCRIPT <filename> as a function.
salut
le transfert de données de matlab à un fichier texte a été effectué avec succès
le fichier contient la description de N fichiers matlab dans un seul fichier texte
mais le probleme c'est comment séparer les données de chaque fichier.m à part soit par tabulation ou par caractères ( par exemple
j'ai essayé avec ce code à l’intérieur de boucle mais ça pas fonctionné:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fid = fopen('test.txt','w'); fprintf(fid,'\t'); fclose(fid);
La permission fid = fopen('test.txt','w'); efface le contenu du fichier (s'il existe, sinon il est créé).
Si tu mets cette ligne dans une boucle, tu effaces ton fichier à chaque exécution. La permission 'a' serait plus adaptée ici, si je comprends bien ce que tu souhaites faire... ou sortir l'ouverture/fermeture de ta boucle.
merci pour l'aide mais ça pas fonctionné encore
bah je vous explique mieux
j'ai trois fichiers a.mat b.mat et c.mat
j'ai transféré le contenu dans descript.txt
maintenant je veu séparé la description de chaque fichier avec un ';' tel que ce pseudo modèle
sachant que j'utilise la boucle fordescription de a.mat ; description de b.mat ; description de c.mat;
merci d'avance
Même si c'est faux, montre-nous ce que tu as codé afin de bien clarifier les choses.
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 clc clear %l'emplacement de la base fichiersapp = dir('C:\Users\dell\Desktop\PFE\issam matlab MFCC\workspace\*.mat'); % nombre de fichier dans la base nombreapp = length(fichiersapp); %boucle for i = 1:nombreapp nameapp =fichiersapp(i).name; nameappT=fullfile('C:\Users\dell\workspace\', nameapp); load(nameappT); Conten=whos('-file', nameappT); maStructure = load(nameappT); save('C:\Users\dell\workspace\description.txt','-struct', 'maStructure', '-ascii', '-append'); fid = fopen('description.txt','a'); fprintf(fid,';'); fclose(fid); end
Il me semble que ce code fait ce que tu attends, ou je ne comprends pas trop ce que tu veux faire...
Tu parles du format
Chacune de tes série de donnée est bien séparée par ton ';' non ?description de a.mat ; description de b.mat ; description de c.mat;
bonsoir
oui je veux que chaque description sera affiché à part et séparé par ;
chaque description m'a donné 26 valeurs dc je veu une séparation par ';' entre chaque 26 valeurs
Donc ce n'est pas UN ';' mais autant qu'il a de lignes...
Comme ceci :
Il faut déjà s'assurer que dans tous les cas les descriptions donneront le même nombre de lignes.desc_a_1 ; desc_b_1 ; desc_c_1
desc_a_2 ; desc_b_2 ; desc_c_2
...
desc_a_26 ; desc_b_26 ; desc_c_26
Ensuite tu ne pourras pas le faire de cette façon, il faudra tout stocker puis écrire à la fin de ta boucle.
Une solution :
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 nbLignes = 26; desc = zeros(nbLignes,nombreapp); for i = 1:nombreapp nameapp = fichiersapp(i).name; nameappT = fullfile('C:\Users\dell\workspace\', nameapp); maStructure = load(nameappT); Conten = who('-file', nameappT); desc(:,i) = cell2mat(cellfun(@(field) maStructure.(field)(:), ... Conten, 'UniformOutput', false)); end fmt = repmat('%f ; ', 1, nombreapp); fmt = [fmt(1:end-3) '\n']; fid = fopen('description.txt','wt'); fprintf(fid, fmt, desc.'); fclose(fid);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager