使用R的欧几里得范数

时间:2018-09-13 02:16:01

标签: r

我想在R代码方面使用下面的matlab语法,实际上 X nxm 矩阵:

Hs(i,j)=norm(X(i,:)-X(j,:))^2;
Hs(j,i)=Hs(i,j);
Hs=exp(-Hs/3);

这是我的R代码:

Hs[i,j]=sqrt(sum((X[i,]- X[j,])^2))
Hs[i,j]=Hs[j,i]
Hs=exp(-Hs/3)

但是问题是结果输出是所有元素= 1的矩阵3x3。请帮忙。

1 个答案:

答案 0 :(得分:0)

这是答案:

#Euclidean matrix

euc.dist <- function(p, q) {
    ed<-sqrt(sum((p - q)^2))
  return((ed))
}

#Gaussian kernel nxn matrix

get.gramm.nn <- function(X) {
  n <- dim(X)[1]
  Gramm<- matrix(0, n, n) #initializes Gramm array #i=index for rows
               #j=index for columns Gramm<-as.matrix(Gramm) # Gramm matrix
  for (i in 1:n) {
    for (j in 1:n) {
      Gramm[i, j] <- euc.dist(X[i,], X[j,])
    }
  } 
Gramm<- exp(-(Gramm)^2)
return(Gramm)
}