Comment créer une matrice à partir d'un fichier texte dans MATLAB?
J'ai un fichier texte qui a 4 colonnes, chaque colonne ayant 65536 points de données. Chaque élément de la ligne est séparée par une virgule. Par exemple:
X,Y,Z,AU
4010.0,3210.0,-440.0,0.0
4010.0,3210.0,-420.0,0.0
etc.
Donc, j'ai 65536 rangées, chaque rangée de 4 valeurs de données comme indiqué ci-dessus. Je veux le convertir en une matrice. J'ai essayé de l'importation de données à partir du fichier texte vers un fichier excel, parce que de cette façon il est facile de créer une matrice, mais j'ai perdu plus de la moitié des données.
source d'informationauteur Amit Jha
Vous devez vous connecter pour publier un commentaire.
Si toutes les entrées dans votre fichier sont numériques, vous pouvez simplement utiliser
a = load('file.txt')
. Il doit créer une 65536x4 matricea
. Il est même plus facile quecsvread
Avez-vous déjà essayé d'utiliser 'importdata'?
Les paramètres que vous avez besoin seulement de nom de fichier et un délimiteur.
Au lieu de vous embêter avec Excel, vous devriez être en mesure de lire le fichier texte directement dans MATLAB (en utilisant les fonctions FOPENFGETLFSCANFet FCLOSE):
La meilleure façon de le faire serait d'utiliser MATLAB
csvread
fonction.Il est également cette outil qui lit les fichiers CSV.
Vous pourriez le faire vous-même sans trop de difficulté, soit: Juste une boucle sur chaque ligne dans le fichier et le répartir sur les virgules et les mettre dans votre tableau.
Vous suggérons de vous familiariser avec
dlmread
ettextscan
.dlmread
est commecsvread
mais parce qu'il peut gérer n'importe quel délimiteur (tab, espace, etc), j'ai tendance à l'utiliser plutôt que decsvread
.textscan
est le véritable bourreau de travail: beaucoup d'options, +, il fonctionne sur les fichiers ouverts et est un peu plus robuste pour la manipulation de "mauvais" d'entrée (par exemple, données non numériques dans le fichier). Il peut être utilisé commefscanf
dans gnovice de la suggestion, mais je pense que c'est plus rapide (ne pas me citer sur ce bien).