How to write xyz files

66 views (last 30 days)
frank90
frank90 on 18 Jun 2019
Commented: frank90 on 18 Jun 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

Answers (1)

KSSV
KSSV on 18 Jun 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 Comment
frank90
frank90 on 18 Jun 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

Sign in to comment.

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!