How to write xyz files

61 次查看(过去 30 天)
frank90
frank90 2019-6-18
评论: frank90 2019-6-18
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

回答(1 个)

KSSV
KSSV 2019-6-18
Let A(x,y,z) be your m*3 array.
fid = fopen('test.txt') ;
fprintf(fid,'%f %f %f\n', A') ;
fclose(fid) ;
  1 个评论
frank90
frank90 2019-6-18
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Workspace Variables and MAT-Files 的更多信息

产品


版本

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by