Navigation | Overlay |
---|---|
t Navigate files | h Toggle hits |
y Change url to tip of branch | m Toggle misses |
b / v Jump to prev/next hit line | p Toggle partial |
z / x Jump to prev/next missed or partial line | 1..9 Toggle flags |
shift + o Open current page in GitHub | a Toggle all on |
/ or ? Show keyboard shortcuts dialog | c Toggle context lines or commits |
1 |
#include <RcppArmadillo.h> |
|
2 |
using namespace Rcpp; |
|
3 |
|
|
4 |
// [[Rcpp::export]]
|
|
5 | 1 |
arma::mat dependRspn(std::vector<std::vector<int> > A,arma::mat Z, |
6 |
arma::mat Zdiv, arma::mat W, int n) { |
|
7 | 1 |
arma::mat betmat(n,n); |
8 | 1 |
betmat.fill(0); |
9 |
|
|
10 | 1 |
arma::colvec e(n); |
11 | 1 |
e.fill(1); |
12 | 1 |
for(int i=0;i<n; ++i){ |
13 |
|
|
14 | 1 |
arma::colvec z_ci = Z.col(i); |
15 | 1 |
arma::rowvec z_ri = Z.row(i); |
16 | 1 |
for(std::vector<int>::size_type jiter = 0; jiter!=A[i].size(); ++jiter){ |
17 | 1 |
int j = A[i][jiter]; |
18 |
|
|
19 | 1 |
arma::colvec z_cj = Z.col(j); |
20 | 1 |
arma::rowvec z_rj = Z.row(j); |
21 |
|
|
22 | 1 |
arma::mat s1_ij = (z_ci*z_rj) % Zdiv; |
23 | 1 |
arma::mat s1_ji = (z_cj*z_ri) % Zdiv; |
24 |
|
|
25 | 1 |
arma::colvec s2_vec_ij = (z_ci % z_rj.t()) % Zdiv.diag(); |
26 | 1 |
arma::mat s2_ij = e*s2_vec_ij.t(); |
27 |
|
|
28 | 1 |
arma::colvec s2_vec_ji = (z_cj % z_ri.t()) % Zdiv.diag(); |
29 | 1 |
arma::mat s2_ji = e * s2_vec_ji.t(); |
30 |
|
|
31 | 1 |
arma::mat N_ij = arma::as_scalar(W(i,j)) * (s1_ij - s2_ij); |
32 | 1 |
arma::mat N_ji = arma::as_scalar(W(j,i)) * (s1_ji - s2_ji); |
33 |
|
|
34 | 1 |
arma::mat N = abs(N_ij - N_ji); |
35 | 1 |
arma::colvec e_i = e; |
36 | 1 |
e_i[i] = 0; |
37 | 1 |
arma::colvec e_j = e; |
38 | 1 |
e_j[j] = 0; |
39 |
|
|
40 | 1 |
betmat.row(i) += (N * e_i).t(); |
41 | 1 |
betmat.row(j) += (N * e_j).t(); |
42 |
}
|
|
43 |
}
|
|
44 | 1 |
betmat= betmat - arma::diagmat(betmat.diag()); |
45 | 1 |
return betmat; |
46 |
}
|
Read our documentation on viewing source code .