Quel est le moyen le plus rapide pour écrire une matrice dans un fichier texte en Octave?
J'ai une matrice de grande taille (2e6 x 3), qui, je dois l'écrire dans un fichier texte.
dlmwrite prend environ 230s pour réaliser cette tâche.
À partir de votre expérience, quel est le moyen le plus rapide d'écrire une grande matrice dans un fichier texte?
Avez-vous essayé le
Avez-vous besoin de simplement enregistrer les données ou est-il besoin d'être formaté dans un fichier texte? @petrichor l'idée devrait fonctionner correctement.
-ascii
option de save
. C'est, save -ascii output.txt variableName
Avez-vous besoin de simplement enregistrer les données ou est-il besoin d'être formaté dans un fichier texte? @petrichor l'idée devrait fonctionner correctement.
OriginalL'auteur Steven | 2012-10-17
Vous devez vous connecter pour publier un commentaire.
Ce qui suit s'applique à MATLAB, mais je vous suggère de l'essayer en Octave. Tout d'abord, si vous le pouvez - transposition de la matrice. Voici des exemples d'utilisation de
fprintf
etcsvwrite
(essentiellementdlmwrite
)Si non transposée, il faudra les âges, en effet. Par défaut,
fprintf
vide le tampon après chaque appel. Vous pouvez essayer d'utiliserW
au lieu dew
pour ouvrir le fichier, mais il n'améliore pas la situation ici, trop.Vous pouvez éviter de manière explicite de la boucle et l'utilisation d'un
fprintf(fid,'%f %f %f\n',A)
Aussi, fprintf recycle le format appliqué aux variables selon les colonnes. E. g:tic;fid = fopen('data.txt', 'w+'); fprintf(fid, 'a=%f b=%f c=%f\n', A); fclose(fid);toc
temps Écoulé est 2.019833 secondes. et donne trois chiffres et un saut de ligne sur chaque 1e6 lignes.OriginalL'auteur
Avez-vous essayé? Je ne suis pas sûr de la vitesse par rapport à dlmwrite.
OriginalL'auteur
Avoir une variable
data
vous pouvez l'enregistrer dans untext
format avec un espace de valeurs séparées (dont une en-tête):L'en-tête peut être tout simplement supprimé l'aide de la base de commande Unix
queue
par exemple (sur n'importe quel Linux/Mac OS):OriginalL'auteur
Théoriquement, selon ce que @angainor dit, on peut encore améliorer les performances
emballage en quelque sorte
en blocs pour éviter d'inutiles de la mémoire tampon de rinçage, j'.e.faire
Devraient essayer..
OriginalL'auteur
L'utiliser dans Matlab:
Utiliser cette Octave:
OriginalL'auteur