csIpvec.js 763 B

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