numz 0.1.0 → 0.3.0
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/docs/.vscode/extensions.json +4 -0
- package/docs/.vscode/launch.json +11 -0
- package/docs/README.md +49 -0
- package/docs/astro.config.mjs +64 -0
- package/docs/package-lock.json +7592 -0
- package/docs/package.json +19 -0
- package/docs/public/favicon.svg +1 -0
- package/docs/src/assets/houston.webp +0 -0
- package/docs/src/content/docs/about.md +11 -0
- package/docs/src/content/docs/guides/example.md +11 -0
- package/docs/src/content/docs/index.mdx +40 -0
- package/docs/src/content/docs/philosophy.md +15 -0
- package/docs/src/content/docs/reference/complex/complex.mdx +66 -0
- package/docs/src/content/docs/reference/functions/arithmetic.md +14 -0
- package/docs/src/content/docs/reference/functions/mapfun.md +81 -0
- package/docs/src/content/docs/reference/functions/ufunc.md +41 -0
- package/docs/src/content/docs/reference/functions/utils.md +16 -0
- package/docs/src/content/docs/reference/matrix/matrix.mdx +97 -0
- package/docs/src/content/docs/reference/signal/functions/periodic/pulse-train.md +6 -0
- package/docs/src/content/docs/reference/signal/functions/periodic/pwm.md +6 -0
- package/docs/src/content/docs/reference/signal/functions/periodic/sawtooth-train.md +6 -0
- package/docs/src/content/docs/reference/signal/functions/periodic/sinusoid.md +6 -0
- package/docs/src/content/docs/reference/signal/functions/periodic/square.md +6 -0
- package/docs/src/content/docs/reference/signal/functions/periodic/triangle.md +6 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/dirac.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/noise.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/rampe.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/rect.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/signum.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/sinc.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/trapezoid.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/pulse/tri.md +12 -0
- package/docs/src/content/docs/reference/signal/functions/sequences/arange.md +21 -0
- package/docs/src/content/docs/reference/signal/functions/sequences/geomspace.md +21 -0
- package/docs/src/content/docs/reference/signal/functions/sequences/linspace.md +16 -0
- package/docs/src/content/docs/reference/signal/functions/sequences/logspace.md +20 -0
- package/docs/src/content/docs/reference/signal/functions/sequences/nums.md +17 -0
- package/docs/src/content/docs/reference/signal/functions/sequences/ones.md +19 -0
- package/docs/src/content/docs/reference/signal/functions/sequences/zeros.md +20 -0
- package/docs/src/content/docs/reference/stats/accum/accum-max.md +4 -0
- package/docs/src/content/docs/reference/stats/accum/accum-min.md +4 -0
- package/docs/src/content/docs/reference/stats/accum/accum-prod.md +4 -0
- package/docs/src/content/docs/reference/stats/accum/accum-sum.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/contraharmonic-mean.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/geo_mean.md +6 -0
- package/docs/src/content/docs/reference/stats/averages/harmonic_mean.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/iq-mean.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/mean.md +6 -0
- package/docs/src/content/docs/reference/stats/averages/midhinge.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/midrange.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/power_mean.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/rms.md +12 -0
- package/docs/src/content/docs/reference/stats/averages/trimmed_mean.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/weighted_mean.md +4 -0
- package/docs/src/content/docs/reference/stats/averages/winsorized_mean.md +4 -0
- package/docs/src/content.config.ts +7 -0
- package/docs/src/pages/a.astro +0 -0
- package/docs/src/styles/custom.css +21 -0
- package/docs/tsconfig.json +5 -0
- package/package.json +2 -2
- package/src/signal/conv/conv.js +43 -0
- package/src/signal/conv/conv2.js +71 -0
- package/src/signal/conv/index.js +2 -0
- package/src/signal/fft/fft.js +47 -0
- package/src/signal/fft/ifft.js +16 -0
- package/src/signal/fft/index.js +2 -52
- package/src/signal/fft/utils/index.js +1 -19
- package/src/signal/functions/index.js +2 -1
- package/src/signal/functions/sequence/index.js +13 -3
- package/src/signal/functions/window/index.js +142 -0
- package/src/signal/index.js +1 -1
- package/src/stats/average/index.js +2 -2
- package/test/index.js +52 -0
- package/test/index.py +14 -0
- package/src/signal/fft/fft1d/index.js +0 -18
- package/src/signal/fft/fftnd/index.js +0 -27
package/test/index.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// import { fft, ifft } from "../src/signal/fft/index.js";
|
|
2
|
+
// import { conv, conv2 } from '../src/signal/conv/index.js'
|
|
3
|
+
// import { Complex } from "ziko/math/complex";
|
|
4
|
+
// // import { cos } from 'ziko/math/functions'
|
|
5
|
+
|
|
6
|
+
// // const x = Array.from({ length: 100 }, (_, j)=> j/10)
|
|
7
|
+
// // const y = cos(x)
|
|
8
|
+
|
|
9
|
+
// // const ff = fft(x)
|
|
10
|
+
// // // const ff = fft([1,2,3])
|
|
11
|
+
// // // console.log(ff)
|
|
12
|
+
|
|
13
|
+
// // // console.log(ifft(ff))
|
|
14
|
+
// const signal = [1, 2, 3, 4, 5];
|
|
15
|
+
// let kernel = [1, 0.5];
|
|
16
|
+
// // kernel = [1, new Complex(0, 0.5)];
|
|
17
|
+
// const result = conv(signal, kernel);
|
|
18
|
+
// console.log(
|
|
19
|
+
// result
|
|
20
|
+
// )
|
|
21
|
+
|
|
22
|
+
// // console.log(ff)
|
|
23
|
+
// // console.log(ifft(ff).map(n=>+ n.a.toFixed(7)))
|
|
24
|
+
// // console.log(x)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// // Example usage:
|
|
28
|
+
// const image = [
|
|
29
|
+
// [1, 2, 3],
|
|
30
|
+
// [4, 5, 6],
|
|
31
|
+
// [7, 8, 9]
|
|
32
|
+
// ];
|
|
33
|
+
|
|
34
|
+
// const filter = [
|
|
35
|
+
// [1, 0],
|
|
36
|
+
// [0, 1]
|
|
37
|
+
// ];
|
|
38
|
+
|
|
39
|
+
// console.log(conv2(image, filter, 'full', 'fill'));
|
|
40
|
+
|
|
41
|
+
function hanning(N, ArrayType = Float64Array) {
|
|
42
|
+
const w = new ArrayType(N);
|
|
43
|
+
const factor = 2 * Math.PI / N;
|
|
44
|
+
|
|
45
|
+
for (let n = 0; n < N; n++) {
|
|
46
|
+
w[n] = 0.5 - 0.5 * Math.cos(factor * n);
|
|
47
|
+
}
|
|
48
|
+
return w;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
console.log(hanning(10).map(a=>a*20))
|
|
52
|
+
|
package/test/index.py
ADDED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { twiddle } from "../utils/index.js";
|
|
2
|
-
export function fft1d(arr) {
|
|
3
|
-
const N = arr.length;
|
|
4
|
-
if (N === 1) return [arr[0]];
|
|
5
|
-
|
|
6
|
-
// Split even/odd
|
|
7
|
-
const even = fft1d(arr.filter((_, i) => i % 2 === 0));
|
|
8
|
-
const odd = fft1d(arr.filter((_, i) => i % 2 === 1));
|
|
9
|
-
|
|
10
|
-
const out = new Array(N);
|
|
11
|
-
for (let k = 0; k < N/2; k++) {
|
|
12
|
-
const w = twiddle(N, k);
|
|
13
|
-
const t = w.mul(odd[k]);
|
|
14
|
-
out[k] = even[k].add(t);
|
|
15
|
-
out[k + N/2] = even[k].sub(t);
|
|
16
|
-
}
|
|
17
|
-
return out;
|
|
18
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { normalizeComplexND } from '../utils/index.js'
|
|
2
|
-
import { fft1d } from '../fft1d/index.js';
|
|
3
|
-
function fftND(arr) {
|
|
4
|
-
arr = normalizeComplexND(arr);
|
|
5
|
-
|
|
6
|
-
// Base case: 1-D
|
|
7
|
-
if (!Array.isArray(arr[0]))
|
|
8
|
-
return fft1d(arr);
|
|
9
|
-
|
|
10
|
-
const transformed = arr.map(sub => fftND(sub));
|
|
11
|
-
|
|
12
|
-
const rows = transformed.length;
|
|
13
|
-
const cols = transformed[0].length;
|
|
14
|
-
|
|
15
|
-
const colsData = Array.from({ length: cols }, (_, c) =>
|
|
16
|
-
Array.from({ length: rows }, (_, r) => transformed[r][c])
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
const colsTransformed = colsData.map(col => fft1d(col));
|
|
20
|
-
|
|
21
|
-
// Transpose back
|
|
22
|
-
const out = Array.from({ length: rows }, (_, r) =>
|
|
23
|
-
Array.from({ length: cols }, (_, c) => colsTransformed[c][r])
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
return out;
|
|
27
|
-
}
|