37 lines
727 B
R
37 lines
727 B
R
|
RadiusOfGyration <-
|
||
|
function(mat,ITRVL){
|
||
|
mat=matrix(mat,ncol=7)
|
||
|
IDskip=which(mat[,1]==4)
|
||
|
if(length(IDskip)>0){
|
||
|
mat=matrix(mat[-IDskip,],ncol=7)
|
||
|
}
|
||
|
N=nrow(mat)
|
||
|
w_v=rep(0,N)
|
||
|
x_v=rep(0,N)
|
||
|
y_v=rep(0,N)
|
||
|
for(i in 1:N){
|
||
|
if(mat[i,1]==4){
|
||
|
next
|
||
|
}
|
||
|
if(mat[i,1]==3){
|
||
|
x_v[i]=mat[i,2]
|
||
|
y_v[i]=mat[i,3]
|
||
|
w_v[i]=ITRVL
|
||
|
}
|
||
|
if(mat[i,1]==1){
|
||
|
x_v[i]=mean(mat[i,c(2,5)])
|
||
|
y_v[i]=mean(mat[i,c(3,6)])
|
||
|
w_v[i]=mat[i,7]-mat[i,4]
|
||
|
}
|
||
|
if(mat[i,1]==2){
|
||
|
x_v[i]=mat[i,2]
|
||
|
y_v[i]=mat[i,3]
|
||
|
w_v[i]=mat[i,7]-mat[i,4]
|
||
|
}
|
||
|
}
|
||
|
sumw_v=sum(w_v)
|
||
|
xavg=sum(w_v*x_v)/sumw_v
|
||
|
yavg=sum(w_v*y_v)/sumw_v
|
||
|
return(sqrt(sum(((x_v-xavg)^2+(y_v-yavg)^2)*w_v)/sumw_v))
|
||
|
}
|