2017-10-10 39 views
-1

Je dispose d'un fichier .dat avec une table contenant des données en ordre suivant:Problème avec spécification de format lors de la lecture du fichier Matlab

0,000E+0 4,069E-2 -5,954E+0 1,851E-2 

Ce que je dois faire est de lire ces données avec Matlab et en quelque sorte poignée il.
Voici mon code:

path = 'C:/Users/user/Desktop/file1.dat'; 
fileID = fopen(path,'r'); 
formatSpec = '%e'; 
A = fscanf(fileID,formatSpec); 
fclose(fileID); 
disp(A); 

Malheureusement, cela ne fonctionne pas. Qu'ai-je fait de mal?

+0

S'il vous plaît préciser ce que « ne fonctionne pas » signifie. Avez-vous une erreur? Si oui, postez le texte ou donnez plus de détails sur ce qui se passe. – theFunkyEngineer

+0

Après disp() je reçois un tableau vide sans données, donc c'est ce que je veux corriger – PetukhovLive

+0

vous avez une virgule dans les données? Vous devriez le remplacer par un point. – OmG

Répondre

1

Après le remplacement de la virgule avec un point dans les données que vous pouvez le lire en utilisant la fonction dlmread:

M = dlmread('filename', ' '); 

M est ce que vous voulez. Pour la première partie, le remplacement d'un caractère, vous pouvez utiliser le code suivant:

% read the file 
fid = fopen('input.txt','r'); 
f=fread(fid,'*char')'; 
fclose(fid); 

%replace the char 
f = strrep(f,',','.'); 

% write into the another file  
fid = fopen('output.txt','w'); 
fprintf(fid,'%s',f); 
fclose(fid); 
+0

Je ne peux pas remplacer la virgule manuellement, il y a de nombreux numéros dans le tableau – PetukhovLive

+0

@PetukhovLive le remplacer par un éditeur de texte aime notepad ++. en utilisant Remplacer tout, pas à la main. – OmG

+0

@PetukhovLive ma réponse est mise à jour pour soutenir votre cas pour le remplacement. – OmG