J'ai besoin d'écrire une variable de chaîne en plusieurs lignes par exemple comme ci-dessous:

a = 1, b = 2, c = 3     
a = 0, b = 5, c = 1    
a = 4, b = 2, c = 0    
a = 8, b = 7, c = 3    
a = 3, b = 0, c = 8    
a = 2, b = 9, c = 3    
...    
a = 1, b = 5, c = 5

Et enregistrez-le dans un fichier texte.

J'ai une matrice contenant 3 colonnes de a, b et c. Ce qui pose problème, c'est la définition de la chaîne. Ce qui me vient à l'esprit mais qui est absolument faux est le suivant, je viens d'écrire ceci pour mieux expliquer mon problème:

for i = 1:100
s(i) = (['a = ',num2str(A(i,1)),'b = ',num2str(A(2,1)),'c = ',num2str(A(2,1))]);
end

Comment puis-je générer un tel fichier texte?

2
parisa 30 déc. 2015 à 19:39

3 réponses

Meilleure réponse

Vous pouvez enregistrer cette matrice avec:

    A = round(abs(10*randn(100,3)));             %generation of random matrix

    fid = fopen('data.txt','w');                 %creation of the file data.txt, w stand for writing
    fprintf(fid,'a = %d, b = %d, c = %d\n',...
A(:,1),A(:,2),A(:,3));                           %write the text
    fclose(fid);                                 %close the file
1
obchardon 30 déc. 2015 à 17:09

sprintf('a = %i, b = %i, c = %i\n',A(:,1),A(:,2),A(:,3))

Générera une chaîne de ce que vous souhaitez enregistrer dans votre fichier texte.

0
Some Guy 30 déc. 2015 à 16:52

Vous pouvez utiliser la fonction dlmwrite pour écrire les chaînes dans un fichier .txt comme suit:

dlmwrite('my_output_file.txt',sprintf('a = %i, b = %i, c = %i\n',A'),'delimiter','')

Remarquez, vous devriez utiliser le transpose de la matrice d'entrée. Sinon, les valeurs seront obtenues "par colonne".

J'espère que cela t'aides.

1
il_raffa 30 déc. 2015 à 17:20