ifft.js 1.0 KB

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