6
votes

MATLAB: Comment insérez-vous une ligne de texte au début d'un fichier?

J'ai un fichier rempli de données ASCII. Comment puis-je ajouter une chaîne à la première ligne du fichier? Je ne trouve pas ce genre de fonctionnalité à l'aide de Fopen (il semble seulement ajouter à la fin et rien d'autre.)


2 commentaires

Sur quel système d'exploitation utilisez-vous MATLAB?


Windows 32X, malheureusement. Si c'était Linux, ce serait un non-question complet.


3 Réponses :


4
votes

Option 1:

Je suggérerais Commandes système à partir de Matlab . Une possibilité sur Windows consiste à écrire votre nouvelle ligne de texte dans son propre fichier, puis à utiliser le DOS pour forte> commande à concaténer les deux fichiers . Voici ce que l'appel ressemblerait à Matlab: p> xxx pré>

J'ai utilisé le ! code> (bang) opérateur pour appeler la commande à partir de MATLAB. La commande ci-dessus passe de manière séquentielle le contenu de "fichier1.txt" et "fichier2.txt" au fichier "new.txt". N'oubliez pas que vous devrez probablement mettre fin au premier fichier avec un nouveau personnage de ligne pour obtenir les choses à ajouter correctement. P>

Une autre alternative à la commande ci-dessus serait: p>

dlmwrite('file.txt',['first line' 13 10 fileread('file.txt')],'delimiter','');


2 commentaires

Y a-t-il un moyen d'utiliser Matlab Variables pour les noms de fichiers de la commande DOS?


@ TEMP2290: J'ai ajouté une discussion à ma réponse.



10
votes

Ce qui suit est une solution PURE MATLAB:

% write first line
dlmwrite('output.txt', 'string 1st line', 'delimiter', '')
% append rest of file
dlmwrite('output.txt', fileread('input.txt'), '-append', 'delimiter', '')
% overwrite on original file
movefile('output.txt', 'input.txt')


1 commentaires

+1: Cela convient à ce que je pensais pour l'option n ° 2, mais j'ai eu une prise légèrement différente sur la façon de le faire. Je posterai pour la comparaison.



0
votes

Que diriez-vous d'utiliser la fonction frewind (FID) pour prendre le pointeur au début du fichier?

J'ai eu une exigence similaire et j'ai essayé frewind () suivi de la déclaration fprintf () nécessaire () .

Mais, Avertissement: il écrasera sur la 1ère ligne. Depuis dans mon cas, j'étais celui qui écrit le fichier, j'ai mis des données factices au démarrage du fichier, puis à la fin, que cela soit écrasé après les opérations spécifiées ci-dessus.

BTW, même si je suis confronté à un problème avec cette solution, que, selon la longueur (/ taille) des données factices et des données réelles, le programme laisse une partie des données factices sur la même ligne ou apportez mon Nouvelles données à la 2e ligne .. Toute pointe à cette égarde est très appréciée.


0 commentaires