csIpvec.js 663 B

1234567891011121314151617181920212223242526272829
  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 = [];
  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. }