ifft.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.createIfft = void 0;
  6. var _array = require("../../utils/array.js");
  7. var _factory = require("../../utils/factory.js");
  8. var _is = require("../../utils/is.js");
  9. var name = 'ifft';
  10. var dependencies = ['typed', 'fft', 'dotDivide', 'conj'];
  11. var createIfft = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
  12. var typed = _ref.typed,
  13. fft = _ref.fft,
  14. dotDivide = _ref.dotDivide,
  15. conj = _ref.conj;
  16. /**
  17. * Calculate N-dimensional inverse fourier transform
  18. *
  19. * Syntax:
  20. *
  21. * math.ifft(arr)
  22. *
  23. * Examples:
  24. *
  25. * math.ifft([[2, 2], [0, 0]]) // returns [[{re:1, im:0}, {re:0, im:0}], [{re:1, im:0}, {re:0, im:0}]]
  26. *
  27. * See Also:
  28. *
  29. * fft
  30. *
  31. * @param {Array | Matrix} arr An array or matrix
  32. * @return {Array | Matrix} N-dimensional fourier transformation of the array
  33. */
  34. return typed(name, {
  35. 'Array | Matrix': function ArrayMatrix(arr) {
  36. var size = (0, _is.isMatrix)(arr) ? arr.size() : (0, _array.arraySize)(arr);
  37. return dotDivide(conj(fft(conj(arr))), size.reduce(function (acc, curr) {
  38. return acc * curr;
  39. }, 1));
  40. }
  41. });
  42. });
  43. exports.createIfft = createIfft;