我想在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。请帮忙。
答案 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)
}