How to write xyz files

21 vues (au cours des 30 derniers jours)
frank90
frank90 le 18 Juin 2019
Commenté : frank90 le 18 Juin 2019
Hi everyone,
I would ask some trick to write atom number in xyz file created from Nx1 char array (atom_n) and Nx3 matrix (X_ads).
I'm doing struct array with:
struct_XYZ=struct( 'atom_n' , atom_n , 'X_ads' , X_ads );
and after converting to dataset:
structXYZdata = struct2dataset( struct_XYZ );
I'm able to export to .xyz file with:
export(structXYZdata,'file','myfile.xyz');
My problem is how to add the number of atoms in the first line of file, leave blank the second line and write data from the third line? So i can open this file directly with molecular editor without any manually modification.
Thanks in advance,
Francesco

Réponses (1)

KSSV
KSSV le 18 Juin 2019
Let A(x,y,z) be your m*3 array.
fid = fopen('test.txt') ;
fprintf(fid,'%f %f %f\n', A') ;
fclose(fid) ;
  1 commentaire
frank90
frank90 le 18 Juin 2019
Thank so much,
I tryed to write whit fprintf command like you suggested me with these modification:
fID = fopen('myfile.xyz , 'w');
fprintf(fID,'%d\n',N); %to add number of atoms to first line
fprintf(fID,'\n'); %to leave one blank line
for i=1:N-1
fprintf(fID,'N %16.10f %16.10f %16.10f\n' , X_ads(i,:));
end
fprintf(fID,'N %16.10f %16.10f %16.10f' , X_ads(N,:));
fclose(fID);
Finally I obtained the file but now I have the reverse problem. Ho to have back X_ads matrix from these file?
importdata command that I was using before don't function for these type of files.
Thanks
Francesco

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by