Евклидова норма с использованием R - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу использовать приведенный ниже синтаксис matlab в терминах кода R, на самом деле 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)

Но проблемой в результате вывода была матрица 3x3 со всеми элементами = 1. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 13 сентября 2018

Вот ответ:

#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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...