dsp-collection 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +5 -2
  2. package/filter/SpecFilt.d.ts +10 -10
  3. package/filter/SpecFilt.js +98 -99
  4. package/math/Complex.d.ts +42 -42
  5. package/math/Complex.js +130 -130
  6. package/math/ComplexArray.d.ts +36 -36
  7. package/math/ComplexArray.js +170 -171
  8. package/math/MathUtils.d.ts +9 -7
  9. package/math/MathUtils.js +116 -82
  10. package/math/MutableComplex.d.ts +22 -22
  11. package/math/MutableComplex.js +64 -65
  12. package/math/NumApprox.d.ts +3 -3
  13. package/math/NumApprox.js +67 -68
  14. package/math/PolyReal.d.ts +13 -13
  15. package/math/PolyReal.js +226 -227
  16. package/package.json +11 -3
  17. package/signal/AdaptiveStft.d.ts +12 -12
  18. package/signal/AdaptiveStft.js +57 -58
  19. package/signal/Autocorrelation.d.ts +5 -5
  20. package/signal/Autocorrelation.js +53 -54
  21. package/signal/Dft.d.ts +9 -9
  22. package/signal/Dft.js +87 -88
  23. package/signal/EnvelopeDetection.d.ts +1 -1
  24. package/signal/EnvelopeDetection.js +9 -10
  25. package/signal/Fft.d.ts +9 -9
  26. package/signal/Fft.js +275 -276
  27. package/signal/Goertzel.d.ts +5 -5
  28. package/signal/Goertzel.js +48 -49
  29. package/signal/InstFreq.d.ts +8 -8
  30. package/signal/InstFreq.js +26 -27
  31. package/signal/PitchDetectionHarm.d.ts +26 -26
  32. package/signal/PitchDetectionHarm.js +68 -69
  33. package/signal/Resampling.d.ts +7 -7
  34. package/signal/Resampling.js +218 -219
  35. package/signal/WindowFunctions.d.ts +40 -40
  36. package/signal/WindowFunctions.js +194 -195
  37. package/utils/ArrayUtils.d.ts +9 -9
  38. package/utils/ArrayUtils.js +68 -69
  39. package/utils/DspUtils.d.ts +4 -2
  40. package/utils/DspUtils.js +12 -7
  41. package/utils/MiscUtils.d.ts +6 -6
  42. package/utils/MiscUtils.js +20 -21
  43. package/filter/SpecFilt.js.map +0 -1
  44. package/math/Complex.js.map +0 -1
  45. package/math/ComplexArray.js.map +0 -1
  46. package/math/MathUtils.js.map +0 -1
  47. package/math/MutableComplex.js.map +0 -1
  48. package/math/NumApprox.js.map +0 -1
  49. package/math/PolyReal.js.map +0 -1
  50. package/signal/AdaptiveStft.js.map +0 -1
  51. package/signal/Autocorrelation.js.map +0 -1
  52. package/signal/Dft.js.map +0 -1
  53. package/signal/EnvelopeDetection.js.map +0 -1
  54. package/signal/Fft.js.map +0 -1
  55. package/signal/Goertzel.js.map +0 -1
  56. package/signal/InstFreq.js.map +0 -1
  57. package/signal/PitchDetectionHarm.js.map +0 -1
  58. package/signal/Resampling.js.map +0 -1
  59. package/signal/WindowFunctions.js.map +0 -1
  60. package/utils/ArrayUtils.js.map +0 -1
  61. package/utils/DspUtils.js.map +0 -1
  62. package/utils/MiscUtils.js.map +0 -1
@@ -1,65 +1,64 @@
1
- import Complex from "./Complex.js";
2
- export default class MutableComplex extends Complex {
3
- constructor(re = 0, im = 0) {
4
- super(re, im);
5
- }
6
- static fromComplex(x) {
7
- return new MutableComplex(x.re, x.im);
8
- }
9
- static expj(arg) {
10
- return new MutableComplex(Math.cos(arg), Math.sin(arg));
11
- }
12
- static fromPolar(abs, arg) {
13
- return new MutableComplex(abs * Math.cos(arg), abs * Math.sin(arg));
14
- }
15
- set(x) {
16
- this.re = x.re;
17
- this.im = x.im;
18
- }
19
- setReIm(re, im = 0) {
20
- this.re = re;
21
- this.im = im;
22
- }
23
- setExpj(arg) {
24
- this.re = Math.cos(arg);
25
- this.im = Math.sin(arg);
26
- }
27
- addRealTo(x) {
28
- this.re += x;
29
- }
30
- addTo(x) {
31
- this.re += x.re;
32
- this.im += x.im;
33
- }
34
- subRealFrom(x) {
35
- this.re -= x;
36
- }
37
- subFrom(x) {
38
- this.re -= x.re;
39
- this.im -= x.im;
40
- }
41
- mulByReal(x) {
42
- this.re *= x;
43
- this.im *= x;
44
- }
45
- mulBy(x) {
46
- this.setMul(this.re, this.im, x.re, x.im);
47
- }
48
- divByReal(x) {
49
- this.re /= x;
50
- this.im /= x;
51
- }
52
- divBy(x) {
53
- this.setDiv(this.re, this.im, x.re, x.im);
54
- }
55
- setMul(re1, im1, re2, im2) {
56
- this.re = re1 * re2 - im1 * im2;
57
- this.im = re1 * im2 + im1 * re2;
58
- }
59
- setDiv(re1, im1, re2, im2) {
60
- const m = re1 * re1 + im1 * im1;
61
- this.re = (re1 * re2 + im1 * im2) / m;
62
- this.im = (im1 * re2 - re1 * im2) / m;
63
- }
64
- }
65
- //# sourceMappingURL=MutableComplex.js.map
1
+ import Complex from "./Complex.js";
2
+ export default class MutableComplex extends Complex {
3
+ constructor(re = 0, im = 0) {
4
+ super(re, im);
5
+ }
6
+ static fromComplex(x) {
7
+ return new MutableComplex(x.re, x.im);
8
+ }
9
+ static expj(arg) {
10
+ return new MutableComplex(Math.cos(arg), Math.sin(arg));
11
+ }
12
+ static fromPolar(abs, arg) {
13
+ return new MutableComplex(abs * Math.cos(arg), abs * Math.sin(arg));
14
+ }
15
+ set(x) {
16
+ this.re = x.re;
17
+ this.im = x.im;
18
+ }
19
+ setReIm(re, im = 0) {
20
+ this.re = re;
21
+ this.im = im;
22
+ }
23
+ setExpj(arg) {
24
+ this.re = Math.cos(arg);
25
+ this.im = Math.sin(arg);
26
+ }
27
+ addRealTo(x) {
28
+ this.re += x;
29
+ }
30
+ addTo(x) {
31
+ this.re += x.re;
32
+ this.im += x.im;
33
+ }
34
+ subRealFrom(x) {
35
+ this.re -= x;
36
+ }
37
+ subFrom(x) {
38
+ this.re -= x.re;
39
+ this.im -= x.im;
40
+ }
41
+ mulByReal(x) {
42
+ this.re *= x;
43
+ this.im *= x;
44
+ }
45
+ mulBy(x) {
46
+ this.setMul(this.re, this.im, x.re, x.im);
47
+ }
48
+ divByReal(x) {
49
+ this.re /= x;
50
+ this.im /= x;
51
+ }
52
+ divBy(x) {
53
+ this.setDiv(this.re, this.im, x.re, x.im);
54
+ }
55
+ setMul(re1, im1, re2, im2) {
56
+ this.re = re1 * re2 - im1 * im2;
57
+ this.im = re1 * im2 + im1 * re2;
58
+ }
59
+ setDiv(re1, im1, re2, im2) {
60
+ const m = re1 * re1 + im1 * im1;
61
+ this.re = (re1 * re2 + im1 * im2) / m;
62
+ this.im = (im1 * re2 - re1 * im2) / m;
63
+ }
64
+ }
@@ -1,3 +1,3 @@
1
- export declare function argMax_scanArith(f: (x: number) => number, argLo: number, argHi: number, argIncr: number): number;
2
- export declare function argMax_scanGeom(f: (x: number) => number, argLo: number, argHi: number, argFactor: number): number;
3
- export declare function argMax_goldenSectionSearch(f: (x: number) => number, argLo: number, argHi: number, tolerance: number): number;
1
+ export declare function argMax_scanArith(f: (x: number) => number, argLo: number, argHi: number, argIncr: number): number;
2
+ export declare function argMax_scanGeom(f: (x: number) => number, argLo: number, argHi: number, argFactor: number): number;
3
+ export declare function argMax_goldenSectionSearch(f: (x: number) => number, argLo: number, argHi: number, tolerance: number): number;
package/math/NumApprox.js CHANGED
@@ -1,68 +1,67 @@
1
- export function argMax_scanArith(f, argLo, argHi, argIncr) {
2
- let maxArg = NaN;
3
- let maxVal = -Infinity;
4
- let lastArg = NaN;
5
- for (let x = argLo; x < argHi; x += argIncr) {
6
- const v = f(x);
7
- if (v > maxVal) {
8
- maxArg = x;
9
- maxVal = v;
10
- }
11
- lastArg = x;
12
- }
13
- if (lastArg != argHi && argHi > argLo && f(argHi) > maxVal) {
14
- maxArg = argHi;
15
- }
16
- return maxArg;
17
- }
18
- export function argMax_scanGeom(f, argLo, argHi, argFactor) {
19
- let maxArg = NaN;
20
- let maxVal = -Infinity;
21
- let lastArg = NaN;
22
- for (let x = argLo; x < argHi; x *= argFactor) {
23
- const v = f(x);
24
- if (v > maxVal) {
25
- maxArg = x;
26
- maxVal = v;
27
- }
28
- lastArg = x;
29
- }
30
- if (lastArg != argHi && argHi > argLo && f(argHi) > maxVal) {
31
- maxArg = argHi;
32
- }
33
- return maxArg;
34
- }
35
- export function argMax_goldenSectionSearch(f, argLo, argHi, tolerance) {
36
- const invPhi = (Math.sqrt(5) - 1) / 2;
37
- const invPhi2 = 1 - invPhi;
38
- let lo = argLo;
39
- let hi = argHi;
40
- let width = hi - lo;
41
- let x1 = lo + width * invPhi2;
42
- let x2 = lo + width * invPhi;
43
- let y1 = f(x1);
44
- let y2 = f(x2);
45
- if (width <= tolerance) {
46
- return (lo + hi) / 2;
47
- }
48
- const n = Math.ceil(Math.log(tolerance / width) / Math.log(invPhi));
49
- for (let i = 0; i < n; i++) {
50
- width *= invPhi;
51
- if (y1 >= y2) {
52
- hi = x2;
53
- x2 = x1;
54
- y2 = y1;
55
- x1 = lo + width * invPhi2;
56
- y1 = f(x1);
57
- }
58
- else {
59
- lo = x1;
60
- x1 = x2;
61
- y1 = y2;
62
- x2 = lo + width * invPhi;
63
- y2 = f(x2);
64
- }
65
- }
66
- return (y1 >= y2) ? (lo + x2) / 2 : (x1 + hi) / 2;
67
- }
68
- //# sourceMappingURL=NumApprox.js.map
1
+ export function argMax_scanArith(f, argLo, argHi, argIncr) {
2
+ let maxArg = NaN;
3
+ let maxVal = -Infinity;
4
+ let lastArg = NaN;
5
+ for (let x = argLo; x < argHi; x += argIncr) {
6
+ const v = f(x);
7
+ if (v > maxVal) {
8
+ maxArg = x;
9
+ maxVal = v;
10
+ }
11
+ lastArg = x;
12
+ }
13
+ if (lastArg != argHi && argHi > argLo && f(argHi) > maxVal) {
14
+ maxArg = argHi;
15
+ }
16
+ return maxArg;
17
+ }
18
+ export function argMax_scanGeom(f, argLo, argHi, argFactor) {
19
+ let maxArg = NaN;
20
+ let maxVal = -Infinity;
21
+ let lastArg = NaN;
22
+ for (let x = argLo; x < argHi; x *= argFactor) {
23
+ const v = f(x);
24
+ if (v > maxVal) {
25
+ maxArg = x;
26
+ maxVal = v;
27
+ }
28
+ lastArg = x;
29
+ }
30
+ if (lastArg != argHi && argHi > argLo && f(argHi) > maxVal) {
31
+ maxArg = argHi;
32
+ }
33
+ return maxArg;
34
+ }
35
+ export function argMax_goldenSectionSearch(f, argLo, argHi, tolerance) {
36
+ const invPhi = (Math.sqrt(5) - 1) / 2;
37
+ const invPhi2 = 1 - invPhi;
38
+ let lo = argLo;
39
+ let hi = argHi;
40
+ let width = hi - lo;
41
+ let x1 = lo + width * invPhi2;
42
+ let x2 = lo + width * invPhi;
43
+ let y1 = f(x1);
44
+ let y2 = f(x2);
45
+ if (width <= tolerance) {
46
+ return (lo + hi) / 2;
47
+ }
48
+ const n = Math.ceil(Math.log(tolerance / width) / Math.log(invPhi));
49
+ for (let i = 0; i < n; i++) {
50
+ width *= invPhi;
51
+ if (y1 >= y2) {
52
+ hi = x2;
53
+ x2 = x1;
54
+ y2 = y1;
55
+ x1 = lo + width * invPhi2;
56
+ y1 = f(x1);
57
+ }
58
+ else {
59
+ lo = x1;
60
+ x1 = x2;
61
+ y1 = y2;
62
+ x2 = lo + width * invPhi;
63
+ y2 = f(x2);
64
+ }
65
+ }
66
+ return (y1 >= y2) ? (lo + x2) / 2 : (x1 + hi) / 2;
67
+ }
@@ -1,13 +1,13 @@
1
- import Complex from "./Complex.js";
2
- export declare function evaluateReal(a: ArrayLike<number>, x: number): number;
3
- export declare function evaluateComplex(a: ArrayLike<number>, x: Complex): Complex;
4
- export declare function expand(zeros: ArrayLike<number>): Float64Array;
5
- export declare function compareEqual(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): boolean;
6
- export declare function add(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): Float64Array;
7
- export declare function multiply(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): Float64Array;
8
- export declare function divide(a1r: ArrayLike<number>, a2r: ArrayLike<number>, eps?: number): Float64Array[];
9
- export declare function gcd(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): Float64Array;
10
- export declare function evaluateFractionComplex(f: ArrayLike<number>[], x: Complex): Complex;
11
- export declare function addFractions(f1: ArrayLike<number>[], f2: ArrayLike<number>[], eps?: number): Float64Array[];
12
- export declare function multiplyFractions(f1: ArrayLike<number>[], f2: ArrayLike<number>[], eps?: number): Float64Array[];
13
- export declare function normalizeFraction(f: ArrayLike<number>[], eps?: number): Float64Array[];
1
+ import Complex from "./Complex.ts";
2
+ export declare function evaluateReal(a: ArrayLike<number>, x: number): number;
3
+ export declare function evaluateComplex(a: ArrayLike<number>, x: Complex): Complex;
4
+ export declare function expand(zeros: ArrayLike<number>): Float64Array;
5
+ export declare function compareEqual(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): boolean;
6
+ export declare function add(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): Float64Array;
7
+ export declare function multiply(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): Float64Array;
8
+ export declare function divide(a1r: ArrayLike<number>, a2r: ArrayLike<number>, eps?: number): Float64Array[];
9
+ export declare function gcd(a1: ArrayLike<number>, a2: ArrayLike<number>, eps?: number): Float64Array;
10
+ export declare function evaluateFractionComplex(f: ArrayLike<number>[], x: Complex): Complex;
11
+ export declare function addFractions(f1: ArrayLike<number>[], f2: ArrayLike<number>[], eps?: number): Float64Array[];
12
+ export declare function multiplyFractions(f1: ArrayLike<number>[], f2: ArrayLike<number>[], eps?: number): Float64Array[];
13
+ export declare function normalizeFraction(f: ArrayLike<number>[], eps?: number): Float64Array[];