Преобразуйте функцию Matlab Eig в R Eigen

#r #matlab #eigenvector

#r #matlab #собственный вектор

Вопрос:

Я пытаюсь скрыть некоторый код Matlab в R и в настоящее время застрял на преобразовании функции Matlab Eig в R, некоторые элементы вектора отрицательны в Matlab и положительны в R или наоборот. Вот пример, который, как мне кажется, иллюстрирует эту проблему.

В Matlab:

 x=[1 2 3; 2 3 4; 3 4 5]; [u,lambda]=eig(x,'vector'); [lambda,isort]=sort(lambda); u=u(:,isort); disp(u) disp(lambda)  

U:

 0.8277 0.4082 0.3851  0.1424 -0.8165 0.5595  -0.5428 0.4082 0.7339  

В R у меня есть

 B = matrix(c(1, 2, 3, 2, 3, 4, 3, 4, 5), nrow=3, ncol=3)  B EVlt;-eigen(B) lambda=c(EV$values) lambda lambda[order(lambda)] U=EV$vectors U=U[,order(ncol(U):1)]  

U:

 0.8276709 0.4082483 -0.3850898  0.1424137 -0.8164966 -0.5595102 -0.5428436 0.4082483 -0.7339306  

Вы можете видеть в 3-м столбце в R, что все значения отрицательны, но не в Matlab. С фактическими данными, которые я использую, есть больше случаев, когда это происходит.

Кто-нибудь знает, как я могу воспроизвести результаты, которые я получаю в Matlab в R? Спасибо

Комментарии:

1. Рискуя показаться совершенно глупым, eigen решает только до sign( ,-) , и, учитывая это условие, мы должны быть рады, что результаты, достигнутые между Matlab и R, эквивалентны, вплоть до знака. Что это означает для вашего дальнейшего анализа…