UNPKG

663 BJavaScriptView Raw
1/**
2 * Permutes a vector; x = P'b. In MATLAB notation, x(p)=b.
3 *
4 * @param {Array} p The permutation vector of length n. null value denotes identity
5 * @param {Array} b The input vector
6 *
7 * @return {Array} The output vector x = P'b
8 */
9export function csIpvec (p, b) {
10 // vars
11 let k
12 const n = b.length
13 const x = []
14 // check permutation vector was provided, p = null denotes identity
15 if (p) {
16 // loop vector
17 for (k = 0; k < n; k++) {
18 // apply permutation
19 x[p[k]] = b[k]
20 }
21 } else {
22 // loop vector
23 for (k = 0; k < n; k++) {
24 // x[i] = b[i]
25 x[k] = b[k]
26 }
27 }
28 return x
29}