[url]http://matlab null函数算得完全不对[/url]代码是这样的:
na=input('总原子数=')
i1=input('第一个原子编号=')
i2=input('第二个原子编号=')
i3=input('第三个原子编号=')
i4=input('第四个原子编号=')
f=input('总帧数=')
for n=1:f
x1=data(i1-3+(n-1)*(na+2),1);y1=data(i1-3+(n-1)*(na+2),2);z1=data(i1-3+(n-1)*(na+2),3)
x2=data(i2-3+(n-1)*(na+2),1);y2=data(i2-3+(n-1)*(na+2),2);z2=data(i2-3+(n-1)*(na+2),3)
x3=data(i3-3+(n-1)*(na+2),1);y3=data(i3-3+(n-1)*(na+2),2);z3=data(i3-3+(n-1)*(na+2),3)
x4=data(i4-3+(n-1)*(na+2),1);y4=data(i4-3+(n-1)*(na+2),2);z4=data(i4-3+(n-1)*(na+2),3)
v1=[x2-x1,y2-y1,z2-z1]
v2=[x3-x2,y3-y2,z3-z2]
v3=[x4-x3,y4-y3,z4-z3]
A1=[v1;v2]
A2=[v2;v3]
v11=null(A1)
v22=null(A2)
t=dot(v11,v22)
thet(n)=acos(t)./pi*180
end
想通过四个原子坐标计算通过法向量计算二面角,可是发现null算得完全不对,和那俩个向量点积不得零,请大神帮忙修改修改。
na=input('总原子数=')
i1=input('第一个原子编号=')
i2=input('第二个原子编号=')
i3=input('第三个原子编号=')
i4=input('第四个原子编号=')
f=input('总帧数=')
for n=1:f
x1=data(i1-3+(n-1)*(na+2),1);y1=data(i1-3+(n-1)*(na+2),2);z1=data(i1-3+(n-1)*(na+2),3)
x2=data(i2-3+(n-1)*(na+2),1);y2=data(i2-3+(n-1)*(na+2),2);z2=data(i2-3+(n-1)*(na+2),3)
x3=data(i3-3+(n-1)*(na+2),1);y3=data(i3-3+(n-1)*(na+2),2);z3=data(i3-3+(n-1)*(na+2),3)
x4=data(i4-3+(n-1)*(na+2),1);y4=data(i4-3+(n-1)*(na+2),2);z4=data(i4-3+(n-1)*(na+2),3)
v1=[x2-x1,y2-y1,z2-z1]
v2=[x3-x2,y3-y2,z3-z2]
v3=[x4-x3,y4-y3,z4-z3]
A1=[v1;v2]
A2=[v2;v3]
v11=null(A1)
v22=null(A2)
t=dot(v11,v22)
thet(n)=acos(t)./pi*180
end
想通过四个原子坐标计算通过法向量计算二面角,可是发现null算得完全不对,和那俩个向量点积不得零,请大神帮忙修改修改。