csIpvec.js (663B)
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 */ 9 export function csIpvec(p, b) { 10 // vars 11 var k; 12 var n = b.length; 13 var x = []; // check permutation vector was provided, p = null denotes identity 14 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 29 return x; 30 }