csIpvec.js (764B)
1 "use strict"; 2 3 Object.defineProperty(exports, "__esModule", { 4 value: true 5 }); 6 exports.csIpvec = csIpvec; 7 8 /** 9 * Permutes a vector; x = P'b. In MATLAB notation, x(p)=b. 10 * 11 * @param {Array} p The permutation vector of length n. null value denotes identity 12 * @param {Array} b The input vector 13 * 14 * @return {Array} The output vector x = P'b 15 */ 16 function csIpvec(p, b) { 17 // vars 18 var k; 19 var n = b.length; 20 var x = []; // check permutation vector was provided, p = null denotes identity 21 22 if (p) { 23 // loop vector 24 for (k = 0; k < n; k++) { 25 // apply permutation 26 x[p[k]] = b[k]; 27 } 28 } else { 29 // loop vector 30 for (k = 0; k < n; k++) { 31 // x[i] = b[i] 32 x[k] = b[k]; 33 } 34 } 35 36 return x; 37 }