dsp-collection 0.2.2 → 0.2.5
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.
- package/README.md +19 -0
- package/filter/SpecFilt.d.ts +10 -0
- package/filter/SpecFilt.js +99 -0
- package/filter/SpecFilt.js.map +1 -0
- package/math/Complex.js +1 -1
- package/math/Complex.js.map +1 -1
- package/math/ComplexArray.d.ts +9 -5
- package/math/ComplexArray.js +49 -21
- package/math/ComplexArray.js.map +1 -1
- package/math/MathUtils.d.ts +2 -1
- package/math/MathUtils.js +6 -0
- package/math/MathUtils.js.map +1 -1
- package/math/MutableComplex.d.ts +1 -1
- package/math/MutableComplex.js +1 -1
- package/math/MutableComplex.js.map +1 -1
- package/math/PolyReal.d.ts +13 -8
- package/math/PolyReal.js +180 -32
- package/math/PolyReal.js.map +1 -1
- package/package.json +5 -7
- package/signal/AdaptiveStft.d.ts +6 -6
- package/signal/AdaptiveStft.js +3 -3
- package/signal/AdaptiveStft.js.map +1 -1
- package/signal/Autocorrelation.d.ts +5 -5
- package/signal/Autocorrelation.js +2 -2
- package/signal/Autocorrelation.js.map +1 -1
- package/signal/Dft.d.ts +6 -6
- package/signal/Dft.js +3 -3
- package/signal/Dft.js.map +1 -1
- package/signal/EnvelopeDetection.d.ts +1 -1
- package/signal/EnvelopeDetection.js +1 -1
- package/signal/EnvelopeDetection.js.map +1 -1
- package/signal/Fft.d.ts +7 -4
- package/signal/Fft.js +98 -9
- package/signal/Fft.js.map +1 -1
- package/signal/Goertzel.d.ts +5 -5
- package/signal/Goertzel.js +3 -3
- package/signal/Goertzel.js.map +1 -1
- package/signal/InstFreq.d.ts +3 -3
- package/signal/InstFreq.js +1 -1
- package/signal/InstFreq.js.map +1 -1
- package/signal/PitchDetectionHarm.d.ts +4 -4
- package/signal/PitchDetectionHarm.js +6 -6
- package/signal/PitchDetectionHarm.js.map +1 -1
- package/signal/Resampling.d.ts +7 -0
- package/signal/Resampling.js +219 -0
- package/signal/Resampling.js.map +1 -0
- package/signal/WindowFunctions.d.ts +3 -3
- package/signal/WindowFunctions.js +1 -1
- package/signal/WindowFunctions.js.map +1 -1
- package/utils/ArrayUtils.d.ts +4 -3
- package/utils/ArrayUtils.js +14 -10
- package/utils/ArrayUtils.js.map +1 -1
- package/utils/MiscUtils.d.ts +5 -0
- package/utils/MiscUtils.js +5 -0
- package/utils/MiscUtils.js.map +1 -1
package/math/PolyReal.js
CHANGED
|
@@ -1,39 +1,76 @@
|
|
|
1
|
-
import MutableComplex from "./MutableComplex";
|
|
2
|
-
export function
|
|
1
|
+
import MutableComplex from "./MutableComplex.js";
|
|
2
|
+
export function evaluateReal(a, x) {
|
|
3
3
|
if (a.length == 0) {
|
|
4
4
|
throw new Error("Zero length array.");
|
|
5
5
|
}
|
|
6
6
|
const n = a.length - 1;
|
|
7
|
-
|
|
7
|
+
let r = a[n];
|
|
8
8
|
for (let i = n - 1; i >= 0; i--) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
r *= x;
|
|
10
|
+
r += a[i];
|
|
11
11
|
}
|
|
12
|
-
return
|
|
12
|
+
return r;
|
|
13
13
|
}
|
|
14
|
-
export function
|
|
14
|
+
export function evaluateComplex(a, x) {
|
|
15
|
+
if (a.length == 0) {
|
|
16
|
+
throw new Error("Zero length array.");
|
|
17
|
+
}
|
|
18
|
+
const n = a.length - 1;
|
|
19
|
+
const r = new MutableComplex(a[n]);
|
|
20
|
+
for (let i = n - 1; i >= 0; i--) {
|
|
21
|
+
r.mulBy(x);
|
|
22
|
+
r.addRealTo(a[i]);
|
|
23
|
+
}
|
|
24
|
+
return r;
|
|
25
|
+
}
|
|
26
|
+
export function expand(zeros) {
|
|
27
|
+
const n = zeros.length;
|
|
28
|
+
if (n == 0) {
|
|
29
|
+
return Float64Array.of(1);
|
|
30
|
+
}
|
|
31
|
+
let a = Float64Array.of(-zeros[0], 1);
|
|
32
|
+
for (let i = 1; i < n; i++) {
|
|
33
|
+
const a2 = Float64Array.of(-zeros[i], 1);
|
|
34
|
+
a = multiply(a, a2);
|
|
35
|
+
}
|
|
36
|
+
return a;
|
|
37
|
+
}
|
|
38
|
+
export function compareEqual(a1, a2, eps = 0) {
|
|
39
|
+
const n1 = a1.length - 1;
|
|
40
|
+
const n2 = a2.length - 1;
|
|
41
|
+
const n = Math.max(n1, n2);
|
|
42
|
+
for (let i = 0; i <= n; i++) {
|
|
43
|
+
const v1 = (i <= n1) ? a1[i] : 0;
|
|
44
|
+
const v2 = (i <= n2) ? a2[i] : 0;
|
|
45
|
+
if (Math.abs(v1 - v2) > eps) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
export function add(a1, a2, eps = 0) {
|
|
15
52
|
const n1 = a1.length - 1;
|
|
16
53
|
const n2 = a2.length - 1;
|
|
17
54
|
const n3 = Math.max(n1, n2);
|
|
18
|
-
const a3 = new
|
|
55
|
+
const a3 = new Float64Array(n3 + 1);
|
|
19
56
|
for (let i = 0; i <= n3; i++) {
|
|
20
57
|
const v1 = (i <= n1) ? a1[i] : 0;
|
|
21
58
|
const v2 = (i <= n2) ? a2[i] : 0;
|
|
22
59
|
a3[i] = v1 + v2;
|
|
23
60
|
}
|
|
24
|
-
return a3;
|
|
61
|
+
return trim(a3, eps);
|
|
25
62
|
}
|
|
26
|
-
export function multiply(a1, a2) {
|
|
63
|
+
export function multiply(a1, a2, eps = 0) {
|
|
27
64
|
if (a1.length == 0 || a2.length == 0) {
|
|
28
65
|
throw new Error("Zero length arrays.");
|
|
29
66
|
}
|
|
30
67
|
if (a1.length == 1 && a1[0] == 0 || a2.length == 1 && a2[0] == 0) {
|
|
31
|
-
return
|
|
68
|
+
return Float64Array.of(0);
|
|
32
69
|
}
|
|
33
70
|
const n1 = a1.length - 1;
|
|
34
71
|
const n2 = a2.length - 1;
|
|
35
72
|
const n3 = n1 + n2;
|
|
36
|
-
const a3 = new
|
|
73
|
+
const a3 = new Float64Array(n3 + 1);
|
|
37
74
|
for (let i = 0; i <= n3; i++) {
|
|
38
75
|
let t = 0;
|
|
39
76
|
const p1 = Math.max(0, i - n2);
|
|
@@ -43,37 +80,148 @@ export function multiply(a1, a2) {
|
|
|
43
80
|
}
|
|
44
81
|
a3[i] = t;
|
|
45
82
|
}
|
|
46
|
-
return a3;
|
|
83
|
+
return trim(a3, eps);
|
|
47
84
|
}
|
|
48
|
-
export function
|
|
85
|
+
export function divide(a1r, a2r, eps = 0) {
|
|
86
|
+
if (a1r.length == 0 || a2r.length == 0) {
|
|
87
|
+
throw new Error("Zero length arrays.");
|
|
88
|
+
}
|
|
89
|
+
const a1 = trim(a1r, eps);
|
|
90
|
+
const a2 = trim(a2r, eps);
|
|
91
|
+
if (a2.length == 1) {
|
|
92
|
+
if (a2[0] == 0) {
|
|
93
|
+
throw new Error("Polynomial division by zero.");
|
|
94
|
+
}
|
|
95
|
+
if (a2[0] == 1) {
|
|
96
|
+
return [Float64Array.from(a1), Float64Array.of(0)];
|
|
97
|
+
}
|
|
98
|
+
return [divByReal(a1, a2[0]), Float64Array.of(0)];
|
|
99
|
+
}
|
|
49
100
|
const n1 = a1.length - 1;
|
|
50
101
|
const n2 = a2.length - 1;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
102
|
+
if (n1 < n2) {
|
|
103
|
+
return [Float64Array.of(0), Float64Array.from(a1)];
|
|
104
|
+
}
|
|
105
|
+
const a = Float64Array.from(a1);
|
|
106
|
+
const lc2 = a2[n2];
|
|
107
|
+
for (let i = n1 - n2; i >= 0; i--) {
|
|
108
|
+
const r = a[n2 + i] / lc2;
|
|
109
|
+
a[n2 + i] = r;
|
|
110
|
+
for (let j = 0; j < n2; ++j) {
|
|
111
|
+
a[i + j] -= r * a2[j];
|
|
57
112
|
}
|
|
58
113
|
}
|
|
59
|
-
|
|
114
|
+
const quotient = trim(a.subarray(n2), eps);
|
|
115
|
+
const remainder = trim(a.subarray(0, n2), eps);
|
|
116
|
+
return [quotient, remainder];
|
|
117
|
+
}
|
|
118
|
+
export function gcd(a1, a2, eps = 0) {
|
|
119
|
+
let r1 = trim(a1, eps);
|
|
120
|
+
let r2 = trim(a2, eps);
|
|
121
|
+
makeMonic(r1);
|
|
122
|
+
makeMonic(r2);
|
|
123
|
+
if (r1.length < r2.length) {
|
|
124
|
+
[r1, r2] = [r2, r1];
|
|
125
|
+
}
|
|
126
|
+
while (true) {
|
|
127
|
+
if (r2.length < 2) {
|
|
128
|
+
return Float64Array.of(1);
|
|
129
|
+
}
|
|
130
|
+
const r = divide(r1, r2, eps)[1];
|
|
131
|
+
if (r.length == 1 && r[0] == 0) {
|
|
132
|
+
return r2;
|
|
133
|
+
}
|
|
134
|
+
makeMonic(r);
|
|
135
|
+
r1 = r2;
|
|
136
|
+
r2 = r;
|
|
137
|
+
}
|
|
60
138
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
139
|
+
function trim(a, eps = 0) {
|
|
140
|
+
if (a.length == 0) {
|
|
141
|
+
throw new Error("Zero length array.");
|
|
142
|
+
}
|
|
143
|
+
if (Math.abs(a[a.length - 1]) > eps) {
|
|
144
|
+
return Float64Array.from(a);
|
|
145
|
+
}
|
|
146
|
+
let len = a.length - 1;
|
|
147
|
+
while (len > 0 && Math.abs(a[len - 1]) <= eps) {
|
|
148
|
+
len--;
|
|
149
|
+
}
|
|
150
|
+
if (len == 0) {
|
|
151
|
+
return Float64Array.of(0);
|
|
152
|
+
}
|
|
153
|
+
const a2 = new Float64Array(len);
|
|
154
|
+
for (let i = 0; i < len; i++) {
|
|
155
|
+
a2[i] = a[i];
|
|
156
|
+
}
|
|
157
|
+
return a2;
|
|
158
|
+
}
|
|
159
|
+
function makeMonic(a) {
|
|
160
|
+
const len = a.length;
|
|
161
|
+
if (len == 0) {
|
|
162
|
+
throw new Error("Zero length array.");
|
|
163
|
+
}
|
|
164
|
+
const lc = a[len - 1];
|
|
165
|
+
if (lc == 1) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (lc == 0) {
|
|
169
|
+
throw new Error("Leading coefficient is zero.");
|
|
170
|
+
}
|
|
171
|
+
a[len - 1] = 1;
|
|
172
|
+
for (let i = 0; i < len - 1; i++) {
|
|
173
|
+
a[i] /= lc;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function divByReal(a, b) {
|
|
177
|
+
const a2 = new Float64Array(a.length);
|
|
178
|
+
for (let i = 0; i < a.length; i++) {
|
|
179
|
+
a2[i] = a[i] / b;
|
|
180
|
+
}
|
|
181
|
+
return a2;
|
|
182
|
+
}
|
|
183
|
+
function divByRealInPlace(a, b) {
|
|
184
|
+
for (let i = 0; i < a.length; i++) {
|
|
185
|
+
a[i] /= b;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export function evaluateFractionComplex(f, x) {
|
|
189
|
+
const v1 = evaluateComplex(f[0], x);
|
|
190
|
+
const v2 = evaluateComplex(f[1], x);
|
|
64
191
|
return v1.div(v2);
|
|
65
192
|
}
|
|
66
|
-
export function addFractions(f1, f2) {
|
|
67
|
-
if (
|
|
68
|
-
return [add(f1[0], f2[0]), f1[1]
|
|
193
|
+
export function addFractions(f1, f2, eps = 0) {
|
|
194
|
+
if (compareEqual(f1[1], f2[1], eps)) {
|
|
195
|
+
return [add(f1[0], f2[0], eps), Float64Array.from(f1[1])];
|
|
196
|
+
}
|
|
197
|
+
const g = gcd(f1[1], f2[1], eps);
|
|
198
|
+
if (g.length == 1 && g[0] == 1) {
|
|
199
|
+
const top = add(multiply(f1[0], f2[1], eps), multiply(f2[0], f1[1], eps));
|
|
200
|
+
const bottom = multiply(f1[1], f2[1], eps);
|
|
201
|
+
return [top, bottom];
|
|
69
202
|
}
|
|
70
|
-
const
|
|
71
|
-
const
|
|
203
|
+
const q1 = divide(f1[1], g, eps);
|
|
204
|
+
const q2 = divide(f2[1], g, eps);
|
|
205
|
+
const m1 = q1[0];
|
|
206
|
+
const m2 = q2[0];
|
|
207
|
+
const top = add(multiply(f1[0], m2, eps), multiply(f2[0], m1, eps));
|
|
208
|
+
const bottom = multiply(f1[1], m2, eps);
|
|
72
209
|
return [top, bottom];
|
|
73
210
|
}
|
|
74
|
-
export function multiplyFractions(f1, f2) {
|
|
75
|
-
const top = multiply(f1[0], f2[0]);
|
|
76
|
-
const bottom = multiply(f1[1], f2[1]);
|
|
211
|
+
export function multiplyFractions(f1, f2, eps = 0) {
|
|
212
|
+
const top = multiply(f1[0], f2[0], eps);
|
|
213
|
+
const bottom = multiply(f1[1], f2[1], eps);
|
|
214
|
+
return [top, bottom];
|
|
215
|
+
}
|
|
216
|
+
export function normalizeFraction(f, eps = 0) {
|
|
217
|
+
const top = trim(f[0], eps);
|
|
218
|
+
const bottom = trim(f[1], eps);
|
|
219
|
+
const lc = bottom[bottom.length - 1];
|
|
220
|
+
if (lc == 0) {
|
|
221
|
+
throw new Error("Fraction denominator is zero.");
|
|
222
|
+
}
|
|
223
|
+
divByRealInPlace(top, lc);
|
|
224
|
+
divByRealInPlace(bottom, lc);
|
|
77
225
|
return [top, bottom];
|
|
78
226
|
}
|
|
79
227
|
//# sourceMappingURL=PolyReal.js.map
|
package/math/PolyReal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolyReal.js","sourceRoot":"","sources":["../../src/math/PolyReal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PolyReal.js","sourceRoot":"","sources":["../../src/math/PolyReal.ts"],"names":[],"mappings":"AAiBA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAYjD,MAAM,UAAU,YAAY,CAAE,CAAoB,EAAE,CAAS;IAC1D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KAAE;IAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,CAAC,IAAI,CAAC,CAAC;QACP,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IACf,OAAO,CAAC,CAAC;AAAC,CAAC;AAYd,MAAM,UAAU,eAAe,CAAE,CAAoB,EAAE,CAAU;IAC9D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KAAE;IAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IACvB,OAAO,CAAC,CAAC;AAAC,CAAC;AAKd,MAAM,UAAU,MAAM,CAAE,KAAwB;IAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,IAAI,CAAC,IAAI,CAAC,EAAE;QACT,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAAE;IAC/B,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAAE;IACzB,OAAO,CAAC,CAAC;AAAC,CAAC;AAKd,MAAM,UAAU,YAAY,CAAE,EAAqB,EAAE,EAAqB,EAAE,GAAG,GAAG,CAAC;IAChF,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE;YAC1B,OAAO,KAAK,CAAC;SAAE;KAAC;IACtB,OAAO,IAAI,CAAC;AAAC,CAAC;AAKjB,MAAM,UAAU,GAAG,CAAE,EAAqB,EAAE,EAAqB,EAAE,GAAG,GAAG,CAAC;IACvE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;KAAE;IACrB,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAAC,CAAC;AAK1B,MAAM,UAAU,QAAQ,CAAE,EAAqB,EAAE,EAAqB,EAAE,GAAG,GAAG,CAAC;IAC5E,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KAAE;IAC5C,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QAC/D,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAAE;IAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAC5B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAAE;QAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAAE;IACf,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAAC,CAAC;AAM1B,MAAM,UAAU,MAAM,CAAE,GAAsB,EAAE,GAAsB,EAAE,GAAG,GAAG,CAAC;IAC5E,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KAAE;IAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;QACjB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SAAE;QACrD,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACb,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;QACxD,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IACvD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,IAAI,EAAE,GAAG,EAAE,EAAE;QACV,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAAE;IACxD,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1B,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;YAC1B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SAAE;KAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAAC,CAAC;AAKlC,MAAM,UAAU,GAAG,CAAE,EAAqB,EAAE,EAAqB,EAAE,GAAG,GAAG,CAAC;IACvE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE;QACxB,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAAE;IACzB,OAAO,IAAI,EAAE;QACV,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YAChB,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAAE;QAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,EAAE,CAAC;SAAE;QACf,SAAS,CAAC,CAAC,CAAC,CAAC;QACb,EAAE,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,CAAC,CAAC;KAAE;AAAA,CAAC;AAGhB,SAAS,IAAI,CAAE,CAAoB,EAAE,GAAG,GAAG,CAAC;IACzC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;QAClC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAAE;IACjC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;QAC5C,GAAG,EAAE,CAAC;KAAE;IACX,IAAI,GAAG,IAAI,CAAC,EAAE;QACX,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAAE;IAC/B,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC3B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IAClB,OAAO,EAAE,CAAC;AAAC,CAAC;AAGf,SAAS,SAAS,CAAE,CAAe;IAChC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,IAAI,GAAG,IAAI,CAAC,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KAAE;IAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC,EAAE;QACV,OAAO;KAAE;IACZ,IAAI,EAAE,IAAI,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KAAE;IACrD,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAAE;AAAA,CAAC;AAEpB,SAAS,SAAS,CAAE,CAAoB,EAAE,CAAS;IAChD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAAE;IACtB,OAAO,EAAE,CAAC;AAAC,CAAC;AAEf,SAAS,gBAAgB,CAAE,CAAe,EAAE,CAAS;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAAE;AAAA,CAAC;AAOnB,MAAM,UAAU,uBAAuB,CAAE,CAAsB,EAAE,CAAU;IACxE,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAAC,CAAC;AAKvB,MAAM,UAAU,YAAY,CAAE,EAAuB,EAAE,EAAuB,EAAE,GAAG,GAAG,CAAC;IACpF,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;KAAE;IAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAKjC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAAC,CAAC;AAK1B,MAAM,UAAU,iBAAiB,CAAE,EAAuB,EAAE,EAAuB,EAAE,GAAG,GAAG,CAAC;IACzF,MAAM,GAAG,GAAM,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAAC,CAAC;AAK1B,MAAM,UAAU,iBAAiB,CAAE,CAAsB,EAAE,GAAG,GAAG,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,EAAE,IAAI,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAAE;IACtD,gBAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1B,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsp-collection",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "A collection of JavaScript modules for digital signal processing (written in TypeScript)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"DSP",
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
"Goertzel",
|
|
10
10
|
"FFT",
|
|
11
11
|
"Fourier Transform",
|
|
12
|
+
"Filter",
|
|
13
|
+
"Spectral filtering",
|
|
12
14
|
"Window functions",
|
|
13
15
|
"Instantaneous frequency",
|
|
14
16
|
"Pitch estimation"
|
|
@@ -19,7 +21,8 @@
|
|
|
19
21
|
"contributors": [
|
|
20
22
|
{
|
|
21
23
|
"name": "Christian d'Heureuse",
|
|
22
|
-
"email": "chdh@inventec.ch"
|
|
24
|
+
"email": "chdh@inventec.ch",
|
|
25
|
+
"url": "http://www.source-code.biz"
|
|
23
26
|
}
|
|
24
27
|
],
|
|
25
28
|
"scripts": {
|
|
@@ -29,10 +32,5 @@
|
|
|
29
32
|
"doPack": "cd dist && npm pack",
|
|
30
33
|
"doPublish": "cd dist && npm publish"
|
|
31
34
|
},
|
|
32
|
-
"devDependencies": {
|
|
33
|
-
"@types/node": "^11.13.4",
|
|
34
|
-
"rimraf": "^2.6.3",
|
|
35
|
-
"source-map-support": "^0.5.12"
|
|
36
|
-
},
|
|
37
35
|
"type": "module"
|
|
38
36
|
}
|
package/signal/AdaptiveStft.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import Complex from "../math/Complex";
|
|
2
|
-
import * as WindowFunctions from "./WindowFunctions";
|
|
1
|
+
import Complex from "../math/Complex.js";
|
|
2
|
+
import * as WindowFunctions from "./WindowFunctions.js";
|
|
3
3
|
export interface ComponentResult {
|
|
4
4
|
component: Complex;
|
|
5
5
|
frequency: number;
|
|
6
6
|
windowStartPosition: number;
|
|
7
7
|
windowWidth: number;
|
|
8
8
|
}
|
|
9
|
-
export declare function getSingle_relWindow(samples: Float64Array, roughFrequency: number, roughWindowCenterPosition: number, relWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
|
|
10
|
-
export declare function getSingle_maxWindow(samples: Float64Array, roughFrequency: number, roughWindowCenterPosition: number, maxWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
|
|
11
|
-
export declare function getSingle(samples: Float64Array, roughFrequency: number, windowFunction: WindowFunctions.WindowFunction | undefined): Complex;
|
|
12
|
-
export declare function getHarmonicAmplitudes(samples: Float64Array, windowCenterPosition: number, f0: number, harmonics: number, relWindowWidth?: number, windowFunction?: typeof WindowFunctions.flatTopWindowNorm): Float64Array | undefined;
|
|
9
|
+
export declare function getSingle_relWindow(samples: Float64Array | Float32Array, roughFrequency: number, roughWindowCenterPosition: number, relWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
|
|
10
|
+
export declare function getSingle_maxWindow(samples: Float64Array | Float32Array, roughFrequency: number, roughWindowCenterPosition: number, maxWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
|
|
11
|
+
export declare function getSingle(samples: Float64Array | Float32Array, roughFrequency: number, windowFunction: WindowFunctions.WindowFunction | undefined): Complex;
|
|
12
|
+
export declare function getHarmonicAmplitudes(samples: Float64Array | Float32Array, windowCenterPosition: number, f0: number, harmonics: number, relWindowWidth?: number, windowFunction?: typeof WindowFunctions.flatTopWindowNorm): Float64Array | undefined;
|
package/signal/AdaptiveStft.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Complex from "../math/Complex";
|
|
2
|
-
import * as Goertzel from "./Goertzel";
|
|
3
|
-
import * as WindowFunctions from "./WindowFunctions";
|
|
1
|
+
import Complex from "../math/Complex.js";
|
|
2
|
+
import * as Goertzel from "./Goertzel.js";
|
|
3
|
+
import * as WindowFunctions from "./WindowFunctions.js";
|
|
4
4
|
export function getSingle_relWindow(samples, roughFrequency, roughWindowCenterPosition, relWindowWidth, windowFunction) {
|
|
5
5
|
if (roughFrequency <= 0 || roughFrequency >= 0.5 || relWindowWidth < 1) {
|
|
6
6
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptiveStft.js","sourceRoot":"","sources":["../../src/signal/AdaptiveStft.ts"],"names":[],"mappings":"AASA,OAAO,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"AdaptiveStft.js","sourceRoot":"","sources":["../../src/signal/AdaptiveStft.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as WindowFunctions from "./WindowFunctions";
|
|
2
|
-
export declare function nonPeriodicAutocorrelationSingle(x:
|
|
3
|
-
export declare function findNonPeriodicAutocorrelationMaximum(x:
|
|
4
|
-
export declare function nonPeriodicAutocorrelation(x:
|
|
5
|
-
export declare function windowedNonPeriodicAutocorrelation(x:
|
|
1
|
+
import * as WindowFunctions from "./WindowFunctions.js";
|
|
2
|
+
export declare function nonPeriodicAutocorrelationSingle(x: ArrayLike<number>, distance: number, compensate: boolean): number;
|
|
3
|
+
export declare function findNonPeriodicAutocorrelationMaximum(x: ArrayLike<number>, minDistance: number, maxDistance: number, fixedOverlapWidth: boolean): number;
|
|
4
|
+
export declare function nonPeriodicAutocorrelation(x: ArrayLike<number>, normalize: boolean): Float64Array;
|
|
5
|
+
export declare function windowedNonPeriodicAutocorrelation(x: ArrayLike<number>, windowFunction: WindowFunctions.WindowFunction, normalize: boolean): Float64Array;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as WindowFunctions from "./WindowFunctions";
|
|
2
|
-
import * as ArrayUtils from "../utils/ArrayUtils";
|
|
1
|
+
import * as WindowFunctions from "./WindowFunctions.js";
|
|
2
|
+
import * as ArrayUtils from "../utils/ArrayUtils.js";
|
|
3
3
|
function autocorrelationKernel(x, distance, n) {
|
|
4
4
|
let sum = 0;
|
|
5
5
|
for (let i = 0; i < n; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocorrelation.js","sourceRoot":"","sources":["../../src/signal/Autocorrelation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,eAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"Autocorrelation.js","sourceRoot":"","sources":["../../src/signal/Autocorrelation.ts"],"names":[],"mappings":"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"}
|
package/signal/Dft.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import MutableComplex from "../math/MutableComplex";
|
|
2
|
-
import ComplexArray from "../math/ComplexArray";
|
|
3
|
-
export declare function dftRealSingle(x:
|
|
1
|
+
import MutableComplex from "../math/MutableComplex.js";
|
|
2
|
+
import ComplexArray from "../math/ComplexArray.js";
|
|
3
|
+
export declare function dftRealSingle(x: ArrayLike<number>, relativeFrequency: number): MutableComplex;
|
|
4
4
|
export declare function dftSingle(x: ComplexArray, relativeFrequency: number, direction: boolean): MutableComplex;
|
|
5
|
-
export declare function dftReal(x:
|
|
6
|
-
export declare function dftRealHalf(x:
|
|
5
|
+
export declare function dftReal(x: ArrayLike<number>): ComplexArray;
|
|
6
|
+
export declare function dftRealHalf(x: ArrayLike<number>): ComplexArray;
|
|
7
7
|
export declare function dft(x: ComplexArray, direction: boolean): ComplexArray;
|
|
8
|
-
export declare function dftRealSpectrum(x:
|
|
8
|
+
export declare function dftRealSpectrum(x: ArrayLike<number>, inclNyquist?: boolean): ComplexArray;
|
|
9
9
|
export declare function iDftRealSpectrum(x: ComplexArray, len: number): Float64Array;
|
package/signal/Dft.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Complex from "../math/Complex";
|
|
2
|
-
import MutableComplex from "../math/MutableComplex";
|
|
3
|
-
import ComplexArray from "../math/ComplexArray";
|
|
1
|
+
import Complex from "../math/Complex.js";
|
|
2
|
+
import MutableComplex from "../math/MutableComplex.js";
|
|
3
|
+
import ComplexArray from "../math/ComplexArray.js";
|
|
4
4
|
export function dftRealSingle(x, relativeFrequency) {
|
|
5
5
|
const n = x.length;
|
|
6
6
|
if (n == 0) {
|
package/signal/Dft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dft.js","sourceRoot":"","sources":["../../src/signal/Dft.ts"],"names":[],"mappings":"AAUA,OAAO,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"Dft.js","sourceRoot":"","sources":["../../src/signal/Dft.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function generateSignalEnvelope(signal:
|
|
1
|
+
export declare function generateSignalEnvelope(signal: ArrayLike<number>, windowWidthDc: number, windowWidthEnvelope: number): Float64Array;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as MathUtils from "../math/MathUtils";
|
|
1
|
+
import * as MathUtils from "../math/MathUtils.js";
|
|
2
2
|
export function generateSignalEnvelope(signal, windowWidthDc, windowWidthEnvelope) {
|
|
3
3
|
const a1 = MathUtils.movingAverage(signal, windowWidthDc);
|
|
4
4
|
for (let i = 0; i < a1.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvelopeDetection.js","sourceRoot":"","sources":["../../src/signal/EnvelopeDetection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"EnvelopeDetection.js","sourceRoot":"","sources":["../../src/signal/EnvelopeDetection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAoBlD,MAAM,UAAU,sBAAsB,CAAE,MAAyB,EAAE,aAAqB,EAAE,mBAA2B;IAClH,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IACzC,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC;AAAC,CAAC"}
|
package/signal/Fft.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import ComplexArray from "../math/ComplexArray";
|
|
1
|
+
import ComplexArray from "../math/ComplexArray.js";
|
|
2
2
|
export declare function fft(x: ComplexArray, direction?: boolean): ComplexArray;
|
|
3
|
-
export declare function fftReal(x:
|
|
4
|
-
export declare function fftRealHalf(x:
|
|
5
|
-
export declare function fftRealSpectrum(x:
|
|
3
|
+
export declare function fftReal(x: ArrayLike<number>): ComplexArray;
|
|
4
|
+
export declare function fftRealHalf(x: ArrayLike<number>, inclNyquist?: boolean): ComplexArray;
|
|
5
|
+
export declare function fftRealSpectrum(x: ArrayLike<number>, inclNyquist?: boolean): ComplexArray;
|
|
6
6
|
export declare function fftShift(x: ComplexArray): ComplexArray;
|
|
7
|
+
export declare function iFftRealHalfSimple(x: ComplexArray, len: number, inclNyquist?: boolean): Float64Array;
|
|
8
|
+
export declare function iFftRealHalfOpt(x: ComplexArray, len: number, inclNyquist?: boolean): Float64Array;
|
|
9
|
+
export declare function iFftRealHalf(x: ComplexArray, len: number, inclNyquist?: boolean): Float64Array;
|
package/signal/Fft.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import ComplexArray from "../math/ComplexArray";
|
|
2
|
-
import MutableComplex from "../math/MutableComplex";
|
|
3
|
-
import * as MathUtils from "../math/MathUtils";
|
|
1
|
+
import ComplexArray from "../math/ComplexArray.js";
|
|
2
|
+
import MutableComplex from "../math/MutableComplex.js";
|
|
3
|
+
import * as MathUtils from "../math/MathUtils.js";
|
|
4
|
+
var cooleyTukeySineTableCache;
|
|
4
5
|
export function fft(x, direction = true) {
|
|
5
6
|
const n = x.length;
|
|
6
7
|
if (n <= 1) {
|
|
@@ -13,7 +14,7 @@ export function fft(x, direction = true) {
|
|
|
13
14
|
}
|
|
14
15
|
function fftCooleyTukey(x) {
|
|
15
16
|
const n = x.length;
|
|
16
|
-
const sineTable =
|
|
17
|
+
const sineTable = getCachedCooleyTukeySineTable(n);
|
|
17
18
|
const a = copyBitReversed(x);
|
|
18
19
|
applyButterflies(a, sineTable);
|
|
19
20
|
return a;
|
|
@@ -95,6 +96,19 @@ function convolve(a1, a2) {
|
|
|
95
96
|
a5.mulAllByReal(1 / n);
|
|
96
97
|
return a5;
|
|
97
98
|
}
|
|
99
|
+
function getCachedCooleyTukeySineTable(n) {
|
|
100
|
+
if (!cooleyTukeySineTableCache) {
|
|
101
|
+
cooleyTukeySineTableCache = new Array(16);
|
|
102
|
+
}
|
|
103
|
+
const log2N = MathUtils.floorLog2(n);
|
|
104
|
+
if (!cooleyTukeySineTableCache[log2N]) {
|
|
105
|
+
cooleyTukeySineTableCache[log2N] = createCooleyTukeySineTable(n);
|
|
106
|
+
}
|
|
107
|
+
return cooleyTukeySineTableCache[log2N];
|
|
108
|
+
}
|
|
109
|
+
function createCooleyTukeySineTable(n) {
|
|
110
|
+
return createSineTable(n / 2, n, false);
|
|
111
|
+
}
|
|
98
112
|
function createSineTable(tableLength, waveLength, rotationalDirection = true) {
|
|
99
113
|
const w = 2 * Math.PI / waveLength;
|
|
100
114
|
const a = new ComplexArray(tableLength);
|
|
@@ -125,7 +139,7 @@ function swapReIm(a) {
|
|
|
125
139
|
export function fftReal(x) {
|
|
126
140
|
return fft(new ComplexArray(x));
|
|
127
141
|
}
|
|
128
|
-
export function fftRealHalf(x) {
|
|
142
|
+
export function fftRealHalf(x, inclNyquist = false) {
|
|
129
143
|
if (x.length <= 1) {
|
|
130
144
|
return new ComplexArray(x);
|
|
131
145
|
}
|
|
@@ -140,12 +154,16 @@ export function fftRealHalf(x) {
|
|
|
140
154
|
a1.im[i] = x[2 * i + 1];
|
|
141
155
|
}
|
|
142
156
|
const a2 = fft(a1);
|
|
143
|
-
const a3 = new ComplexArray(n);
|
|
144
|
-
const w = Math.PI / n;
|
|
157
|
+
const a3 = new ComplexArray(n + (inclNyquist ? 1 : 0));
|
|
145
158
|
a3.re[0] = a2.re[0] + a2.im[0];
|
|
146
159
|
a3.im[0] = 0;
|
|
160
|
+
if (inclNyquist) {
|
|
161
|
+
a3.re[n] = a2.re[0] - a2.im[0];
|
|
162
|
+
a3.im[n] = 0;
|
|
163
|
+
}
|
|
147
164
|
const temp1 = new MutableComplex();
|
|
148
165
|
const temp2 = new MutableComplex();
|
|
166
|
+
const w = Math.PI / n;
|
|
149
167
|
for (let i = 1; i < n; i++) {
|
|
150
168
|
const sRe = Math.sin(i * w);
|
|
151
169
|
const sIm = Math.cos(i * w);
|
|
@@ -162,8 +180,8 @@ export function fftRealSpectrum(x, inclNyquist = false) {
|
|
|
162
180
|
throw new Error("Input array must not be empty.");
|
|
163
181
|
}
|
|
164
182
|
let a;
|
|
165
|
-
if (n % 2 == 0
|
|
166
|
-
a = fftRealHalf(x);
|
|
183
|
+
if (n % 2 == 0) {
|
|
184
|
+
a = fftRealHalf(x, inclNyquist);
|
|
167
185
|
}
|
|
168
186
|
else {
|
|
169
187
|
const a0 = fftReal(x);
|
|
@@ -184,4 +202,75 @@ export function fftShift(x) {
|
|
|
184
202
|
}
|
|
185
203
|
return a;
|
|
186
204
|
}
|
|
205
|
+
export function iFftRealHalfSimple(x, len, inclNyquist = false) {
|
|
206
|
+
if (x.length == 0 || len <= 0) {
|
|
207
|
+
return new Float64Array(0);
|
|
208
|
+
}
|
|
209
|
+
const x2 = createFullSpectrumFromHalfSpectrum(x, len, inclNyquist);
|
|
210
|
+
const a = fft(x2, false);
|
|
211
|
+
return a.re;
|
|
212
|
+
}
|
|
213
|
+
function createFullSpectrumFromHalfSpectrum(x, len, inclNyquist) {
|
|
214
|
+
const x2 = new ComplexArray(len);
|
|
215
|
+
ComplexArray.copy1(x, 0, x2, 0);
|
|
216
|
+
if (inclNyquist && len % 2 == 0 && x.length > len / 2) {
|
|
217
|
+
ComplexArray.copy1(x, len / 2, x2, len / 2);
|
|
218
|
+
}
|
|
219
|
+
const n2 = Math.min(x.length - 1, Math.floor((len - 1) / 2));
|
|
220
|
+
for (let i = 0; i < n2; i++) {
|
|
221
|
+
const p1 = 1 + i;
|
|
222
|
+
const p2 = len - 1 - i;
|
|
223
|
+
x2.re[p2] = x.re[p1];
|
|
224
|
+
x2.im[p2] = -x.im[p1];
|
|
225
|
+
}
|
|
226
|
+
return x2;
|
|
227
|
+
}
|
|
228
|
+
export function iFftRealHalfOpt(x, len, inclNyquist = false) {
|
|
229
|
+
if (len <= 0) {
|
|
230
|
+
return new Float64Array(0);
|
|
231
|
+
}
|
|
232
|
+
if (len % 2 != 0) {
|
|
233
|
+
throw new Error("output length is not even.");
|
|
234
|
+
}
|
|
235
|
+
const n = len / 2;
|
|
236
|
+
const a1 = new ComplexArray(n);
|
|
237
|
+
a1.re[0] = xRe(0);
|
|
238
|
+
a1.im[0] = xRe(0);
|
|
239
|
+
if (inclNyquist) {
|
|
240
|
+
a1.re[0] += xRe(n);
|
|
241
|
+
a1.im[0] -= xRe(n);
|
|
242
|
+
}
|
|
243
|
+
const temp1 = new MutableComplex();
|
|
244
|
+
const temp2 = new MutableComplex();
|
|
245
|
+
const w = Math.PI / n;
|
|
246
|
+
for (let i = 1; i < n; i++) {
|
|
247
|
+
const sRe = Math.sin(i * w);
|
|
248
|
+
const sIm = Math.cos(i * w);
|
|
249
|
+
temp1.setMul(xRe(i), xIm(i), (1 - sRe) / 2, sIm / 2);
|
|
250
|
+
temp2.setMul(xRe(n - i), xIm(n - i), (1 + sRe) / 2, sIm / 2);
|
|
251
|
+
a1.re[i] = temp1.re + temp2.re;
|
|
252
|
+
a1.im[i] = temp1.im - temp2.im;
|
|
253
|
+
}
|
|
254
|
+
const a2 = fft(a1, false);
|
|
255
|
+
const a3 = new Float64Array(2 * n);
|
|
256
|
+
for (let i = 0; i < n; i++) {
|
|
257
|
+
a3[2 * i] = a2.re[i];
|
|
258
|
+
a3[2 * i + 1] = a2.im[i];
|
|
259
|
+
}
|
|
260
|
+
return a3;
|
|
261
|
+
function xRe(i) {
|
|
262
|
+
return (i < x.length) ? x.re[i] : 0;
|
|
263
|
+
}
|
|
264
|
+
function xIm(i) {
|
|
265
|
+
return (i < x.length) ? x.im[i] : 0;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
export function iFftRealHalf(x, len, inclNyquist = false) {
|
|
269
|
+
if (len % 2 == 0) {
|
|
270
|
+
return iFftRealHalfOpt(x, len, inclNyquist);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
return iFftRealHalfSimple(x, len, inclNyquist);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
187
276
|
//# sourceMappingURL=Fft.js.map
|