So ist die Formel, die umgesetzt werden muss, ist:Wie reproduziere ich diesen Mathematica-Code für die Berechnung der Übergangsmatrix von Pagerank auf 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}]];
Alles andere nur in Zahlen ist einstecken. Jetzt scheint das Hauptproblem, das A[[i,j]]/Sum[A[i,k]]
zu bekommen, um auf Matlab zu arbeiten.
On Matlab: wenn I-Eingang A[[i,j]]
als A, und sum[A[i,k]]
entweder als (sum (A, 2))‘oder die Summe (A, 1), die P, die Ausgabe auf Matlab wird ein Spaltenvektor ist, anstatt ein 8 bekommt x 8 Matrix.
Was fehlt mir?
Um alle mit den Daten arbeiten, habe ich es für Ihre Referenz in MATAB-Code eingegeben: '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]; 'damit du es nicht alleine machen musst. @ Kenshin: Ich bin kein Profi in Mathematica, also was genau willst du als Ausgang haben? Können Sie kurz erklären, was die erwartete Ausgabe ist, d. H. Welche Werte werden in einer Berechnung auf welche Weise kombiniert? EDIT: Bekam ^^ – tim