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.
Files changed (76) hide show
  1. package/docs/.vscode/extensions.json +4 -0
  2. package/docs/.vscode/launch.json +11 -0
  3. package/docs/README.md +49 -0
  4. package/docs/astro.config.mjs +64 -0
  5. package/docs/package-lock.json +7592 -0
  6. package/docs/package.json +19 -0
  7. package/docs/public/favicon.svg +1 -0
  8. package/docs/src/assets/houston.webp +0 -0
  9. package/docs/src/content/docs/about.md +11 -0
  10. package/docs/src/content/docs/guides/example.md +11 -0
  11. package/docs/src/content/docs/index.mdx +40 -0
  12. package/docs/src/content/docs/philosophy.md +15 -0
  13. package/docs/src/content/docs/reference/complex/complex.mdx +66 -0
  14. package/docs/src/content/docs/reference/functions/arithmetic.md +14 -0
  15. package/docs/src/content/docs/reference/functions/mapfun.md +81 -0
  16. package/docs/src/content/docs/reference/functions/ufunc.md +41 -0
  17. package/docs/src/content/docs/reference/functions/utils.md +16 -0
  18. package/docs/src/content/docs/reference/matrix/matrix.mdx +97 -0
  19. package/docs/src/content/docs/reference/signal/functions/periodic/pulse-train.md +6 -0
  20. package/docs/src/content/docs/reference/signal/functions/periodic/pwm.md +6 -0
  21. package/docs/src/content/docs/reference/signal/functions/periodic/sawtooth-train.md +6 -0
  22. package/docs/src/content/docs/reference/signal/functions/periodic/sinusoid.md +6 -0
  23. package/docs/src/content/docs/reference/signal/functions/periodic/square.md +6 -0
  24. package/docs/src/content/docs/reference/signal/functions/periodic/triangle.md +6 -0
  25. package/docs/src/content/docs/reference/signal/functions/pulse/dirac.md +12 -0
  26. package/docs/src/content/docs/reference/signal/functions/pulse/noise.md +12 -0
  27. package/docs/src/content/docs/reference/signal/functions/pulse/rampe.md +12 -0
  28. package/docs/src/content/docs/reference/signal/functions/pulse/rect.md +12 -0
  29. package/docs/src/content/docs/reference/signal/functions/pulse/signum.md +12 -0
  30. package/docs/src/content/docs/reference/signal/functions/pulse/sinc.md +12 -0
  31. package/docs/src/content/docs/reference/signal/functions/pulse/trapezoid.md +12 -0
  32. package/docs/src/content/docs/reference/signal/functions/pulse/tri.md +12 -0
  33. package/docs/src/content/docs/reference/signal/functions/sequences/arange.md +21 -0
  34. package/docs/src/content/docs/reference/signal/functions/sequences/geomspace.md +21 -0
  35. package/docs/src/content/docs/reference/signal/functions/sequences/linspace.md +16 -0
  36. package/docs/src/content/docs/reference/signal/functions/sequences/logspace.md +20 -0
  37. package/docs/src/content/docs/reference/signal/functions/sequences/nums.md +17 -0
  38. package/docs/src/content/docs/reference/signal/functions/sequences/ones.md +19 -0
  39. package/docs/src/content/docs/reference/signal/functions/sequences/zeros.md +20 -0
  40. package/docs/src/content/docs/reference/stats/accum/accum-max.md +4 -0
  41. package/docs/src/content/docs/reference/stats/accum/accum-min.md +4 -0
  42. package/docs/src/content/docs/reference/stats/accum/accum-prod.md +4 -0
  43. package/docs/src/content/docs/reference/stats/accum/accum-sum.md +4 -0
  44. package/docs/src/content/docs/reference/stats/averages/contraharmonic-mean.md +4 -0
  45. package/docs/src/content/docs/reference/stats/averages/geo_mean.md +6 -0
  46. package/docs/src/content/docs/reference/stats/averages/harmonic_mean.md +4 -0
  47. package/docs/src/content/docs/reference/stats/averages/iq-mean.md +4 -0
  48. package/docs/src/content/docs/reference/stats/averages/mean.md +6 -0
  49. package/docs/src/content/docs/reference/stats/averages/midhinge.md +4 -0
  50. package/docs/src/content/docs/reference/stats/averages/midrange.md +4 -0
  51. package/docs/src/content/docs/reference/stats/averages/power_mean.md +4 -0
  52. package/docs/src/content/docs/reference/stats/averages/rms.md +12 -0
  53. package/docs/src/content/docs/reference/stats/averages/trimmed_mean.md +4 -0
  54. package/docs/src/content/docs/reference/stats/averages/weighted_mean.md +4 -0
  55. package/docs/src/content/docs/reference/stats/averages/winsorized_mean.md +4 -0
  56. package/docs/src/content.config.ts +7 -0
  57. package/docs/src/pages/a.astro +0 -0
  58. package/docs/src/styles/custom.css +21 -0
  59. package/docs/tsconfig.json +5 -0
  60. package/package.json +2 -2
  61. package/src/signal/conv/conv.js +43 -0
  62. package/src/signal/conv/conv2.js +71 -0
  63. package/src/signal/conv/index.js +2 -0
  64. package/src/signal/fft/fft.js +47 -0
  65. package/src/signal/fft/ifft.js +16 -0
  66. package/src/signal/fft/index.js +2 -52
  67. package/src/signal/fft/utils/index.js +1 -19
  68. package/src/signal/functions/index.js +2 -1
  69. package/src/signal/functions/sequence/index.js +13 -3
  70. package/src/signal/functions/window/index.js +142 -0
  71. package/src/signal/index.js +1 -1
  72. package/src/stats/average/index.js +2 -2
  73. package/test/index.js +52 -0
  74. package/test/index.py +14 -0
  75. package/src/signal/fft/fft1d/index.js +0 -18
  76. 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
@@ -0,0 +1,14 @@
1
+ from scipy import signal
2
+ image = [
3
+ [1, 2, 3],
4
+ [4, 5, 6],
5
+ [7, 8, 9]
6
+ ]
7
+
8
+ kernel = [
9
+ [1, 0],
10
+ [0, 1]
11
+ ]
12
+ print(
13
+ signal.convolve2d(image, kernel, 'full')
14
+ )
@@ -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
- }