#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, эквивалентны, вплоть до знака. Что это означает для вашего дальнейшего анализа…