2014-12-31 2 views
1

В R, учитывая вектор GEigen3: Матрица то есть отношение вектора записи

> G <- c(-0.44852453+0i, -0.40701659+0i, -0.65381971+0i, -0.37545331+0i, -0.05763717+0i, -0.24778175+0i) 

я могу сформировать отношения всех записей в G следующим образом:

> B<-outer(G, G, FUN='/') 
> 
> B 
      [,1]   [,2]   [,3]   [,4]   [,5]   [,6] 
[1,] 1.0000000+0i 1.1019810+0i 0.68600644+0i 1.1946213+0i 7.781862+0i 1.8101597+0i 
[2,] 0.9074567+0i 1.0000000+0i 0.62252114+0i 1.0840671+0i 7.061703+0i 1.6426415+0i 
[3,] 1.4577123+0i 1.6063712+0i 1.00000000+0i 1.7414142+0i 11.343716+0i 2.6386920+0i 
[4,] 0.8370853+0i 0.9224521+0i 0.57424593+0i 1.0000000+0i 6.514083+0i 1.5152581+0i 
[5,] 0.1285039+0i 0.1416089+0i 0.08815453+0i 0.1535135+0i 1.000000+0i 0.2326127+0i 
[6,] 0.5524375+0i 0.6087756+0i 0.37897565+0i 0.6599536+0i 4.298992+0i 1.0000000+0i 

Есть простой способ сделать это в собственном3?

Так что я могу сделать в C++

std::cout << vec1 * vec1.transpose() << std::endl; 

, но я не могу сделать

std::cout << vec1/vec1.transpose() << std::endl; 

Можно подумать, что с а/Ь = а * (1/б) там будет быть простым способом сделать это.

ответ

0

Это работает

станд :: соиЬ < < vec1.col (0) * vec1.col (0) .cwiseInverse() транспонирования() < < зЬй :: Endl.

Смежные вопросы