Je lis des données d'une table à l'aide de textscan () code>. La table compte 90 colonnes et je souhaite lire les valeurs de chaque colonne en tant que numéro de point flottant. En regardant la documentation, je dois utiliser le spécificateur
% f code> - mais il semble que je dois l'utiliser 90 fois, donc je me retrouve avec ceci:
c = textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f
%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f
%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f
%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f');
4 Réponses :
Pour un fichier ASCII très simple composé de 90 colonnes de nombres de points flottants séparés par un délimiteur connu, il serait peut-être plus simple d'utiliser la fonction MATLAB dlmread code>
.
Par exemple si votre fichier rand.txt est: p> Vous pouvez utiliser: randmat = dlmread ('rand.txt'); code> p> p>
HMM mais cette solution lit les données dans une matrice, alors que je dois la lire dans une matrice de cellule et utiliser également l'identifiant FID code> (quel
textscan code> fait).
Vous pouvez convertir une matrice en une matrice de cellule via la fonction MAT2Cell . Quant à l'identifiant de fichier, il est souvent le cas que le nom de fichier est également disponible, s'il ne s'agit pas dans le contexte de votre problème, Andrew Janke et les réponses de l'OLI fonctionneront très bien. Ceci est juste une alternative.
Vous pouvez simplement faire un textuscan avec un seul "% f" puis le remodeler comme vous le souhaitez ou la convertir à la cellule que vous le souhaitez:
fid=fopen('bla.txt','r'); M=textscan(fid,'%f') M=reshape(M{1},[],5) M=num2cell(M,1) fclose(fid);
Utilisez repmat code> pour créer votre chaîne de format en fonction du nombre de colonnes.
nNumberCols = 58;
format = ['%s%s' repmat('%f', [1 nNumberCols])];
c = textscan(fid, format);
Je suggérerais d'utiliser:
fileId=fopen('fileloc.txt'); formatSpec='%f'; N=90; data=textscan(fileId,formatSpec,N);
Ce code ne sera lu que dans la première ligne. Vous auriez besoin de la boucler pour lire dans toutes les lignes du fichier.