回复 第1楼 的 ieieya:这是gram-schmidt分解的两个方法,normal是一个矩阵,你参考一下自己再改改。 算法参考维基。
<br />
mean.normal = colMeans(normal)<br />
#### gram-schmidt general method<br />
U = normal.center = sweep(normal,2,mean.normal)<br />
for(j in 2:nvar)<br />
for(i in 1:(j-1))<br />
U[,j] = U[,j] - sum(normal.center[,j]*U[,i])/sum(U[,i]*U[,i])*U[,i]</p>
<p>#### gram-schmidt numerical stability method<br />
U = normal.center = sweep(normal,2,mean.normal)<br />
for(j in 2:nvar)<br />
for(i in 1:(j-1)) #gram-schmidt numerical stability method<br />
U[,j] = U[,j] - sum(U[,i]*U[,j])/sum(U[,i]*U[,i])*U[,i]<br />
</p>