这是第 1 页中用于执行 Gram Schmidt 的 MATLAB 代码 http://web.mit.edu/18.06/www/Essays/gramschmidtmat.pdf
因为我没有 MATLAB,所以我正在尝试用 R 执行此操作数小时这是我的 R
f=function(x){
m=nrow(x);
n=ncol(x);
Q=matrix(0,m,n);
R=matrix(0,n,n);
for(j in 1:n){
v=x[,j,drop=FALSE];
for(i in 1:j-1){
R[i,j]=t(Q[,i,drop=FALSE])%*%x[,j,drop=FALSE];
v=v-R[i,j]%*%Q[,i,drop=FALSE]
}
R[j,j]=max(svd(v)$d);
Q[,j,,drop=FALSE]=v/R[j,j]}
return(list(Q,R))}
它一直说有以下任何一个错误:
v=v-R[i,j]%*%Q[,i,drop=FALSE]
或者
R[j,j]=max(svd(v)$d);
我在将 MATLAB 代码转换为 R 时做错了什么???