Таким образом, формула, которая должна быть реализована в:Как воспроизвести этот математический код для вычисления переходной матрицы pagerank на matlab?
P = ((1 - delta)/n) + ((delta)*(A)ij/(Sigma(k=1 to n)(A)ik))
where delta = 0.85
n = 8
and A = the adjacency matrix for web pages being surfed
The mathematica code for it is:
A = {{1, 1, 1, 0, 0, 1, 0, 1}, {0, 0, 1, 0, 0, 1, 0, 1}, {1, 1, 0, 1,
0, 1, 1, 0}, {0, 1, 1, 0, 1, 0, 1, 0}, {1, 1, 1, 1, 0, 1, 1,
1}, {1, 1, 1, 0, 0, 1, 1, 0}, {1, 0, 1, 0, 1, 0, 1, 0}, {0, 0, 0,
0, 1, 0, 0, 1}};
n = 8;
\[Delta] = 0.85;
P = Transpose[Table[(1 - \[Delta])/n + (\[Delta]*A[[i, j]])/(Sum[A[[i, k]], {k, 1, n}]), {i, 1, n}, {j, 1, n}]];
Все остальное просто затыкать в цифрах. Теперь главная проблема, с которой я, похоже, получаю: A[[i,j]]/Sum[A[i,k]]
для работы над matlab.
В MATLAB: когда я ввода A[[i,j]]
, как А, а sum[A[i,k]]
либо как (сумма (А, 2))»или сумма (А, 1), Р, который получает выходной сигнал от MATLAB становится вектор-столбец, а не 8 x 8.
Что мне не хватает?
Для работы с данными я ввел его для вашей ссылки в код MATAB: 'A = [1, 1, 1, 0, 0, 1, 0, 1; 0, 0, 1, 0, 0, 1, 0, 1; 1, 1, 0, 1, 0, 1, 1, 0; 0, 1, 1, 0, 1, 0, 1, 0; 1, 1, 1, 1, 0, 1, 1, 1; 1, 1, 1, 0, 0, 1, 1, 0; 1, 0, 1, 0, 1, 0, 1, 0; 0, 0, 0, 0, 1, 0, 0, 1]; 'поэтому вам не нужно делать это самостоятельно. @Kenshin: Я не профессионал в Mathematica, так что же вы хотите получить в качестве результата? Не могли бы вы вкратце объяснить, каков ожидаемый результат, т. Е. Какие значения объединены в вычислении, каким образом? EDIT: Получил это ^^ – tim