2

次のコードを作成しました。示されているように、6、7、8 番目の列のみで操作を行う必要がありますが、入力ファイルの他の列を含む結果の .pdb ファイルも必要です。つまり、他の列に影響を与えずに、入力ファイルの 6,7,8 列を最終結果に置き換えたいだけです。私はこれを理解することができません。

% 
phi1 =188.7*pi/180;
PHI = 82.3*pi/180;
phi2 = 150.4*pi/180;

%%%%% to be change ary euler angles


%%%%%%% rotation_matrix defining

R(1,1) = cos(phi1)*cos(phi2)-sin(phi1)*sin(phi2)*cos(PHI);
R(1,2) = sin(phi1)*cos(phi2)+cos(phi1)*sin(phi2)*cos(PHI);
R(1,3) = sin(phi2)*sin(PHI);
R(2,1) = -cos(phi1)*sin(phi2)-sin(phi1)*cos(phi2)*cos(PHI);
R(2,2) = -sin(phi1)*sin(phi2)+cos(phi1)*cos(phi2)*cos(PHI);
R(2,3) = cos(phi2)*sin(PHI);
R(3,1) = sin(phi1)*sin(PHI);
R(3,2) = -cos(phi1)*sin(PHI);
R(3,3) = cos(PHI);

%%output
rotationMatrix=R;

fid2 = fopen('final_result.pdb','wt');

for k=1:100

fid = fopen('ipp31.pdb'); 
A =  textscan(fid, '%s %s %f %s %s %f %f %f %s ') ;
%read the file
a = A{6};
b = A{7};
c = A{8};
p=[a b c];
p_t=p.';
M=rotationMatrix*p_t;
M_T=M.';


fid = fopen('ipp31.pdb', 'wt'); % Open for writing
fprintf(fid,' %f\t %f\t %f\n',M_T);
fclose(fid);

% 
textfilename = [num2str(k) '.pdb'];
fid1 = fopen(textfilename,'wt');
fprintf(fid1,' %f\t %f\t %f\n',M_T);
fclose(fid1);


fprintf(fid2,' %f\t %f\t %f\n',M_T); 
end
 fclose(fid2);
4

0 に答える 0