runmat 0.4.3 → 0.4.4

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 (230) hide show
  1. package/artifacts/stdlib.snapshot +0 -0
  2. package/dist/builtins.d.ts +12 -0
  3. package/dist/builtins.d.ts.map +1 -1
  4. package/dist/builtins.js.map +1 -1
  5. package/dist/generated/builtin-examples-catalog.d.ts.map +1 -1
  6. package/dist/generated/builtin-examples-catalog.js +1 -1
  7. package/dist/generated/builtin-examples-catalog.js.map +1 -1
  8. package/dist/generated/builtins/area.d.ts.map +1 -1
  9. package/dist/generated/builtins/area.js +36 -0
  10. package/dist/generated/builtins/area.js.map +1 -1
  11. package/dist/generated/builtins/axis.d.ts.map +1 -1
  12. package/dist/generated/builtins/axis.js +30 -0
  13. package/dist/generated/builtins/axis.js.map +1 -1
  14. package/dist/generated/builtins/bar.d.ts.map +1 -1
  15. package/dist/generated/builtins/bar.js +36 -0
  16. package/dist/generated/builtins/bar.js.map +1 -1
  17. package/dist/generated/builtins/box.d.ts.map +1 -1
  18. package/dist/generated/builtins/box.js +26 -0
  19. package/dist/generated/builtins/box.js.map +1 -1
  20. package/dist/generated/builtins/cellfun.d.ts.map +1 -1
  21. package/dist/generated/builtins/cellfun.js +20 -0
  22. package/dist/generated/builtins/cellfun.js.map +1 -1
  23. package/dist/generated/builtins/chol.d.ts.map +1 -1
  24. package/dist/generated/builtins/chol.js +32 -0
  25. package/dist/generated/builtins/chol.js.map +1 -1
  26. package/dist/generated/builtins/colorbar.d.ts.map +1 -1
  27. package/dist/generated/builtins/colorbar.js +30 -0
  28. package/dist/generated/builtins/colorbar.js.map +1 -1
  29. package/dist/generated/builtins/colormap.d.ts.map +1 -1
  30. package/dist/generated/builtins/colormap.js +30 -0
  31. package/dist/generated/builtins/colormap.js.map +1 -1
  32. package/dist/generated/builtins/containers.Map.d.ts.map +1 -1
  33. package/dist/generated/builtins/containers.Map.js +29 -0
  34. package/dist/generated/builtins/containers.Map.js.map +1 -1
  35. package/dist/generated/builtins/contour.d.ts.map +1 -1
  36. package/dist/generated/builtins/contour.js +36 -0
  37. package/dist/generated/builtins/contour.js.map +1 -1
  38. package/dist/generated/builtins/contourf.d.ts.map +1 -1
  39. package/dist/generated/builtins/contourf.js +36 -0
  40. package/dist/generated/builtins/contourf.js.map +1 -1
  41. package/dist/generated/builtins/conv2.d.ts.map +1 -1
  42. package/dist/generated/builtins/conv2.js +36 -0
  43. package/dist/generated/builtins/conv2.js.map +1 -1
  44. package/dist/generated/builtins/cross.d.ts +4 -0
  45. package/dist/generated/builtins/cross.d.ts.map +1 -0
  46. package/dist/generated/builtins/cross.js +131 -0
  47. package/dist/generated/builtins/cross.js.map +1 -0
  48. package/dist/generated/builtins/cumtrapz.d.ts +4 -0
  49. package/dist/generated/builtins/cumtrapz.d.ts.map +1 -0
  50. package/dist/generated/builtins/cumtrapz.js +125 -0
  51. package/dist/generated/builtins/cumtrapz.js.map +1 -0
  52. package/dist/generated/builtins/datetime.d.ts.map +1 -1
  53. package/dist/generated/builtins/datetime.js +1 -25
  54. package/dist/generated/builtins/datetime.js.map +1 -1
  55. package/dist/generated/builtins/eig.d.ts.map +1 -1
  56. package/dist/generated/builtins/eig.js +42 -0
  57. package/dist/generated/builtins/eig.js.map +1 -1
  58. package/dist/generated/builtins/errorbar.d.ts.map +1 -1
  59. package/dist/generated/builtins/errorbar.js +36 -0
  60. package/dist/generated/builtins/errorbar.js.map +1 -1
  61. package/dist/generated/builtins/exist.d.ts.map +1 -1
  62. package/dist/generated/builtins/exist.js +25 -1
  63. package/dist/generated/builtins/exist.js.map +1 -1
  64. package/dist/generated/builtins/fgets.d.ts.map +1 -1
  65. package/dist/generated/builtins/fgets.js +24 -0
  66. package/dist/generated/builtins/fgets.js.map +1 -1
  67. package/dist/generated/builtins/flipud.d.ts.map +1 -1
  68. package/dist/generated/builtins/flipud.js +23 -0
  69. package/dist/generated/builtins/flipud.js.map +1 -1
  70. package/dist/generated/builtins/fopen.d.ts.map +1 -1
  71. package/dist/generated/builtins/fopen.js +26 -0
  72. package/dist/generated/builtins/fopen.js.map +1 -1
  73. package/dist/generated/builtins/get.d.ts.map +1 -1
  74. package/dist/generated/builtins/get.js +30 -0
  75. package/dist/generated/builtins/get.js.map +1 -1
  76. package/dist/generated/builtins/getfield.js +1 -1
  77. package/dist/generated/builtins/getfield.js.map +1 -1
  78. package/dist/generated/builtins/gradient.d.ts +4 -0
  79. package/dist/generated/builtins/gradient.d.ts.map +1 -0
  80. package/dist/generated/builtins/gradient.js +129 -0
  81. package/dist/generated/builtins/gradient.js.map +1 -0
  82. package/dist/generated/builtins/grid.d.ts.map +1 -1
  83. package/dist/generated/builtins/grid.js +30 -0
  84. package/dist/generated/builtins/grid.js.map +1 -1
  85. package/dist/generated/builtins/hist.d.ts.map +1 -1
  86. package/dist/generated/builtins/hist.js +26 -0
  87. package/dist/generated/builtins/hist.js.map +1 -1
  88. package/dist/generated/builtins/histcounts2.d.ts.map +1 -1
  89. package/dist/generated/builtins/histcounts2.js +25 -0
  90. package/dist/generated/builtins/histcounts2.js.map +1 -1
  91. package/dist/generated/builtins/histogram.d.ts.map +1 -1
  92. package/dist/generated/builtins/histogram.js +36 -0
  93. package/dist/generated/builtins/histogram.js.map +1 -1
  94. package/dist/generated/builtins/image.d.ts.map +1 -1
  95. package/dist/generated/builtins/image.js +30 -0
  96. package/dist/generated/builtins/image.js.map +1 -1
  97. package/dist/generated/builtins/imagesc.d.ts.map +1 -1
  98. package/dist/generated/builtins/imagesc.js +36 -0
  99. package/dist/generated/builtins/imagesc.js.map +1 -1
  100. package/dist/generated/builtins/isfield.js +1 -1
  101. package/dist/generated/builtins/isfield.js.map +1 -1
  102. package/dist/generated/builtins/isnan.d.ts.map +1 -1
  103. package/dist/generated/builtins/isnan.js +23 -0
  104. package/dist/generated/builtins/isnan.js.map +1 -1
  105. package/dist/generated/builtins/join.js +2 -2
  106. package/dist/generated/builtins/join.js.map +1 -1
  107. package/dist/generated/builtins/legend.d.ts.map +1 -1
  108. package/dist/generated/builtins/legend.js +30 -0
  109. package/dist/generated/builtins/legend.js.map +1 -1
  110. package/dist/generated/builtins/log1p.d.ts.map +1 -1
  111. package/dist/generated/builtins/log1p.js +23 -0
  112. package/dist/generated/builtins/log1p.js.map +1 -1
  113. package/dist/generated/builtins/loglog.d.ts.map +1 -1
  114. package/dist/generated/builtins/loglog.js +30 -0
  115. package/dist/generated/builtins/loglog.js.map +1 -1
  116. package/dist/generated/builtins/mesh.d.ts.map +1 -1
  117. package/dist/generated/builtins/mesh.js +36 -0
  118. package/dist/generated/builtins/mesh.js.map +1 -1
  119. package/dist/generated/builtins/meshc.d.ts.map +1 -1
  120. package/dist/generated/builtins/meshc.js +30 -0
  121. package/dist/generated/builtins/meshc.js.map +1 -1
  122. package/dist/generated/builtins/num2str.d.ts.map +1 -1
  123. package/dist/generated/builtins/num2str.js +24 -0
  124. package/dist/generated/builtins/num2str.js.map +1 -1
  125. package/dist/generated/builtins/numel.d.ts.map +1 -1
  126. package/dist/generated/builtins/numel.js +19 -0
  127. package/dist/generated/builtins/numel.js.map +1 -1
  128. package/dist/generated/builtins/pie.d.ts.map +1 -1
  129. package/dist/generated/builtins/pie.js +36 -0
  130. package/dist/generated/builtins/pie.js.map +1 -1
  131. package/dist/generated/builtins/plot.d.ts.map +1 -1
  132. package/dist/generated/builtins/plot.js +36 -0
  133. package/dist/generated/builtins/plot.js.map +1 -1
  134. package/dist/generated/builtins/plot3.d.ts.map +1 -1
  135. package/dist/generated/builtins/plot3.js +30 -0
  136. package/dist/generated/builtins/plot3.js.map +1 -1
  137. package/dist/generated/builtins/polyder.js +1 -1
  138. package/dist/generated/builtins/polyder.js.map +1 -1
  139. package/dist/generated/builtins/polyval.d.ts.map +1 -1
  140. package/dist/generated/builtins/polyval.js +37 -0
  141. package/dist/generated/builtins/polyval.js.map +1 -1
  142. package/dist/generated/builtins/quiver.d.ts.map +1 -1
  143. package/dist/generated/builtins/quiver.js +36 -0
  144. package/dist/generated/builtins/quiver.js.map +1 -1
  145. package/dist/generated/builtins/readmatrix.d.ts.map +1 -1
  146. package/dist/generated/builtins/readmatrix.js +24 -0
  147. package/dist/generated/builtins/readmatrix.js.map +1 -1
  148. package/dist/generated/builtins/replace.js +2 -2
  149. package/dist/generated/builtins/replace.js.map +1 -1
  150. package/dist/generated/builtins/round.d.ts.map +1 -1
  151. package/dist/generated/builtins/round.js +20 -0
  152. package/dist/generated/builtins/round.js.map +1 -1
  153. package/dist/generated/builtins/scatter.d.ts.map +1 -1
  154. package/dist/generated/builtins/scatter.js +30 -0
  155. package/dist/generated/builtins/scatter.js.map +1 -1
  156. package/dist/generated/builtins/scatter3.d.ts.map +1 -1
  157. package/dist/generated/builtins/scatter3.js +36 -0
  158. package/dist/generated/builtins/scatter3.js.map +1 -1
  159. package/dist/generated/builtins/semilogx.d.ts.map +1 -1
  160. package/dist/generated/builtins/semilogx.js +30 -0
  161. package/dist/generated/builtins/semilogx.js.map +1 -1
  162. package/dist/generated/builtins/semilogy.d.ts.map +1 -1
  163. package/dist/generated/builtins/semilogy.js +30 -0
  164. package/dist/generated/builtins/semilogy.js.map +1 -1
  165. package/dist/generated/builtins/set.d.ts.map +1 -1
  166. package/dist/generated/builtins/set.js +30 -0
  167. package/dist/generated/builtins/set.js.map +1 -1
  168. package/dist/generated/builtins/setfield.js +1 -1
  169. package/dist/generated/builtins/setfield.js.map +1 -1
  170. package/dist/generated/builtins/sgtitle.d.ts +4 -0
  171. package/dist/generated/builtins/sgtitle.d.ts.map +1 -0
  172. package/dist/generated/builtins/sgtitle.js +99 -0
  173. package/dist/generated/builtins/sgtitle.js.map +1 -0
  174. package/dist/generated/builtins/shading.d.ts.map +1 -1
  175. package/dist/generated/builtins/shading.js +30 -0
  176. package/dist/generated/builtins/shading.js.map +1 -1
  177. package/dist/generated/builtins/sortrows.d.ts.map +1 -1
  178. package/dist/generated/builtins/sortrows.js +20 -0
  179. package/dist/generated/builtins/sortrows.js.map +1 -1
  180. package/dist/generated/builtins/split.js +2 -2
  181. package/dist/generated/builtins/split.js.map +1 -1
  182. package/dist/generated/builtins/stairs.d.ts.map +1 -1
  183. package/dist/generated/builtins/stairs.js +36 -0
  184. package/dist/generated/builtins/stairs.js.map +1 -1
  185. package/dist/generated/builtins/std.d.ts.map +1 -1
  186. package/dist/generated/builtins/std.js +37 -0
  187. package/dist/generated/builtins/std.js.map +1 -1
  188. package/dist/generated/builtins/stem.d.ts.map +1 -1
  189. package/dist/generated/builtins/stem.js +36 -0
  190. package/dist/generated/builtins/stem.js.map +1 -1
  191. package/dist/generated/builtins/strcat.js +2 -2
  192. package/dist/generated/builtins/strcat.js.map +1 -1
  193. package/dist/generated/builtins/strcmpi.d.ts.map +1 -1
  194. package/dist/generated/builtins/strcmpi.js +24 -0
  195. package/dist/generated/builtins/strcmpi.js.map +1 -1
  196. package/dist/generated/builtins/subplot.d.ts.map +1 -1
  197. package/dist/generated/builtins/subplot.js +30 -0
  198. package/dist/generated/builtins/subplot.js.map +1 -1
  199. package/dist/generated/builtins/surf.d.ts.map +1 -1
  200. package/dist/generated/builtins/surf.js +36 -0
  201. package/dist/generated/builtins/surf.js.map +1 -1
  202. package/dist/generated/builtins/surfc.d.ts.map +1 -1
  203. package/dist/generated/builtins/surfc.js +30 -0
  204. package/dist/generated/builtins/surfc.js.map +1 -1
  205. package/dist/generated/builtins/trapz.d.ts +4 -0
  206. package/dist/generated/builtins/trapz.d.ts.map +1 -0
  207. package/dist/generated/builtins/trapz.js +129 -0
  208. package/dist/generated/builtins/trapz.js.map +1 -0
  209. package/dist/generated/builtins/view.d.ts.map +1 -1
  210. package/dist/generated/builtins/view.js +30 -0
  211. package/dist/generated/builtins/view.js.map +1 -1
  212. package/dist/generated/builtins/zlabel.d.ts.map +1 -1
  213. package/dist/generated/builtins/zlabel.js +30 -0
  214. package/dist/generated/builtins/zlabel.js.map +1 -1
  215. package/dist/generated/builtins-manifest.d.ts.map +1 -1
  216. package/dist/generated/builtins-manifest.js +115 -15
  217. package/dist/generated/builtins-manifest.js.map +1 -1
  218. package/dist/index.d.ts +10 -0
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js.map +1 -1
  221. package/dist/lsp/runmat_lsp.d.ts +2 -2
  222. package/dist/lsp/runmat_lsp.js +4 -4
  223. package/dist/lsp/runmat_lsp_bg.wasm +0 -0
  224. package/dist/lsp/runmat_lsp_bg.wasm.d.ts +2 -2
  225. package/dist/pkg-web/runmat_wasm_web.d.ts +21 -24
  226. package/dist/pkg-web/runmat_wasm_web.js +94 -96
  227. package/dist/pkg-web/runmat_wasm_web_bg.wasm +0 -0
  228. package/dist/pkg-web/runmat_wasm_web_bg.wasm.d.ts +13 -13
  229. package/dist/runtime/stdlib.snapshot +0 -0
  230. package/package.json +1 -1
@@ -0,0 +1,129 @@
1
+ // @generated by scripts/generate-builtins.cjs
2
+ // Do not edit by hand.
3
+ const builtinDoc = {
4
+ "title": "gradient",
5
+ "category": "math/reduction",
6
+ "keywords": [
7
+ "gradient",
8
+ "numerical gradient",
9
+ "finite difference",
10
+ "derivative",
11
+ "gpu"
12
+ ],
13
+ "summary": "Numerical gradients using central differences with MATLAB-compatible output ordering.",
14
+ "references": [],
15
+ "gpu_support": {
16
+ "elementwise": false,
17
+ "reduction": false,
18
+ "precisions": [
19
+ "f32",
20
+ "f64"
21
+ ],
22
+ "broadcasting": "matlab",
23
+ "notes": "Scalar-spacing gradients call the provider's `gradient_dim` hook and can stay GPU-resident. Coordinate-vector spacing falls back to the host in this implementation."
24
+ },
25
+ "fusion": {
26
+ "elementwise": false,
27
+ "reduction": false,
28
+ "max_inputs": 1,
29
+ "constants": "inline"
30
+ },
31
+ "requires_feature": null,
32
+ "tested": {
33
+ "unit": "builtins::math::reduction::gradient::tests",
34
+ "integration": "builtins::math::reduction::gradient::tests::gradient_gpu_scalar_spacing_matches_cpu_and_stays_resident"
35
+ },
36
+ "description": "`gradient(F)` computes numerical derivatives with central differences in the interior and one-sided differences at the boundaries. For matrices, a single output returns the derivative along columns, while multiple outputs follow MATLAB ordering: first columns, then rows, then higher dimensions.",
37
+ "behaviors": [
38
+ "`gradient(F)` chooses the first non-singleton dimension for vectors and returns the column-direction derivative for matrices.",
39
+ "`[FX, FY] = gradient(F)` on a matrix returns `FX` for dimension 2 (across columns) and `FY` for dimension 1 (down rows), matching MATLAB.",
40
+ "`gradient(F, h)` applies the same scalar spacing to every returned dimension.",
41
+ "`gradient(F, hx, hy, ...)` accepts one scalar spacing per output dimension. In v1, each spacing must be scalar.",
42
+ "Interior points use central differences `(f(i+1) - f(i-1)) / (2*h)`, while the first and last points use one-sided differences.",
43
+ "Real, logical, and scalar numeric inputs promote through the standard tensor conversion path. Complex host inputs are supported by differentiating the real and imaginary parts independently.",
44
+ "When a GPU tensor is passed and the active provider implements `gradient_dim`, scalar-spacing gradients stay resident on the device. Complex GPU tensors and coordinate-vector spacing currently gather to the host."
45
+ ],
46
+ "examples": [
47
+ {
48
+ "description": "Differentiating a row vector",
49
+ "input": "v = [1 4 9];\ng = gradient(v)",
50
+ "output": "g = [3 4 5]"
51
+ },
52
+ {
53
+ "description": "Requesting both matrix gradient components",
54
+ "input": "A = [1 2; 3 4];\n[FX, FY] = gradient(A)",
55
+ "output": "FX =\n 1 1\n 1 1\n\nFY =\n 2 2\n 2 2"
56
+ },
57
+ {
58
+ "description": "Using scalar spacing on GPU data",
59
+ "input": "G = gpuArray(single([1 4 9]));\nD = gradient(G, 2);\nout = gather(D)",
60
+ "output": "out = single([1.5 2.0 2.5])"
61
+ },
62
+ {
63
+ "description": "Feeding `gradient` into a vector-field plot",
64
+ "input": "[X, Y] = meshgrid(linspace(-2, 2, 25), linspace(-2, 2, 25));\nZ = X .* exp(-X.^2 - Y.^2);\n[DX, DY] = gradient(Z, X(1,2)-X(1,1), Y(2,1)-Y(1,1));\nquiver(X, Y, DX, DY)"
65
+ }
66
+ ],
67
+ "faqs": [
68
+ {
69
+ "question": "What finite-difference stencil does `gradient` use?",
70
+ "answer": "RunMat matches MATLAB's shape-preserving behavior: central differences in the interior and first-order one-sided differences at the boundaries."
71
+ },
72
+ {
73
+ "question": "Why does a matrix return the x-direction first?",
74
+ "answer": "MATLAB defines the first matrix output along dimension 2 (columns), then dimension 1 (rows). RunMat preserves that ordering so plotting workflows like `quiver` line up correctly."
75
+ },
76
+ {
77
+ "question": "Can I pass coordinate vectors for spacing?",
78
+ "answer": "Not in this version. `gradient(F, X)` and vector-valued `hx`, `hy`, ... are reserved for a follow-up implementation."
79
+ },
80
+ {
81
+ "question": "Does `gradient` support GPU arrays?",
82
+ "answer": "Yes for default spacing and scalar spacings. With an active provider such as WGPU, the scalar-spacing path stays on the GPU via the `gradient_dim` hook."
83
+ },
84
+ {
85
+ "question": "Do complex inputs work?",
86
+ "answer": "Yes on the host. Complex GPU tensors currently gather to the host before differencing."
87
+ }
88
+ ],
89
+ "links": [
90
+ {
91
+ "label": "diff",
92
+ "url": "./diff"
93
+ },
94
+ {
95
+ "label": "meshgrid",
96
+ "url": "./meshgrid"
97
+ },
98
+ {
99
+ "label": "quiver",
100
+ "url": "./quiver"
101
+ },
102
+ {
103
+ "label": "gpuArray",
104
+ "url": "./gpuarray"
105
+ },
106
+ {
107
+ "label": "gather",
108
+ "url": "./gather"
109
+ }
110
+ ],
111
+ "source": {
112
+ "label": "`crates/runmat-runtime/src/builtins/math/reduction/gradient.rs`",
113
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/math/reduction/gradient.rs"
114
+ },
115
+ "gpu_residency": "Manual `gpuArray` promotion is optional. When a scalar-spacing gradient starts with GPU-resident data and the active provider implements `gradient_dim`, RunMat keeps the result on the device. If the provider lacks the hook, if spacing is specified with coordinate vectors, or if the input is complex GPU data, RunMat gathers to the host and preserves MATLAB-compatible results.",
116
+ "gpu_behavior": [
117
+ "The WGPU backend implements `gradient_dim`, so scalar-spacing gradients execute on the device and return GPU tensors for both single-output and multi-output calls.",
118
+ "The simple in-process provider also exposes `gradient_dim`, allowing provider-level parity tests without requiring a physical GPU.",
119
+ "Coordinate-vector spacing is intentionally out of scope for this version and falls back to host evaluation."
120
+ ],
121
+ "key": "gradient",
122
+ "slug": "gradient",
123
+ "categoryPath": [
124
+ "math",
125
+ "reduction"
126
+ ]
127
+ };
128
+ export default builtinDoc;
129
+ //# sourceMappingURL=gradient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient.js","sourceRoot":"","sources":["../../../src/generated/builtins/gradient.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE;QACV,UAAU;QACV,oBAAoB;QACpB,mBAAmB;QACnB,YAAY;QACZ,KAAK;KACN;IACD,SAAS,EAAE,uFAAuF;IAClG,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,KAAK;YACL,KAAK;SACN;QACD,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,sKAAsK;KAChL;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,4CAA4C;QACpD,aAAa,EAAE,wGAAwG;KACxH;IACD,aAAa,EAAE,ySAAyS;IACxT,WAAW,EAAE;QACX,+HAA+H;QAC/H,2IAA2I;QAC3I,+EAA+E;QAC/E,iHAAiH;QACjH,iIAAiI;QACjI,gMAAgM;QAChM,sNAAsN;KACvN;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,8BAA8B;YAC7C,OAAO,EAAE,+BAA+B;YACxC,QAAQ,EAAE,aAAa;SACxB;QACD;YACE,aAAa,EAAE,4CAA4C;YAC3D,OAAO,EAAE,yCAAyC;YAClD,QAAQ,EAAE,sEAAsE;SACjF;QACD;YACE,aAAa,EAAE,kCAAkC;YACjD,OAAO,EAAE,sEAAsE;YAC/E,QAAQ,EAAE,6BAA6B;SACxC;QACD;YACE,aAAa,EAAE,6CAA6C;YAC5D,OAAO,EAAE,wKAAwK;SAClL;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,qDAAqD;YACjE,QAAQ,EAAE,iJAAiJ;SAC5J;QACD;YACE,UAAU,EAAE,iDAAiD;YAC7D,QAAQ,EAAE,oLAAoL;SAC/L;QACD;YACE,UAAU,EAAE,4CAA4C;YACxD,QAAQ,EAAE,sHAAsH;SACjI;QACD;YACE,UAAU,EAAE,qCAAqC;YACjD,QAAQ,EAAE,0JAA0J;SACrK;QACD;YACE,UAAU,EAAE,yBAAyB;YACrC,QAAQ,EAAE,wFAAwF;SACnG;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,iEAAiE;QAC1E,KAAK,EAAE,8GAA8G;KACtH;IACD,eAAe,EAAE,2XAA2X;IAC5Y,cAAc,EAAE;QACd,qKAAqK;QACrK,oIAAoI;QACpI,6GAA6G;KAC9G;IACD,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE;QACd,MAAM;QACN,WAAW;KACZ;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAuDjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAqFjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -32,6 +32,20 @@ const builtinDoc = {
32
32
  "input": "subplot(1, 2, 1);\nplot(1:5, 1:5);\ngrid off;\nsubplot(1, 2, 2);\nplot(1:5, [5 4 3 2 1]);\ngrid on;"
33
33
  }
34
34
  ],
35
+ "faqs": [
36
+ {
37
+ "question": "Does RunMat support minor grid lines?",
38
+ "answer": "Not yet — `grid on` enables major grid lines only. Minor grid support (the MATLAB `grid minor` form) is planned. For now, you get the primary tick grid, which covers most use cases."
39
+ },
40
+ {
41
+ "question": "Can I style the grid line color or width?",
42
+ "answer": "Grid styling is tied to axes properties. You can adjust the grid appearance through the axes handle with `set(gca, 'GridColor', [0.5 0.5 0.5])` and related properties when the axes property path supports them. Check `get(gca)` to see what's currently exposed."
43
+ },
44
+ {
45
+ "question": "Does grid state carry across subplots?",
46
+ "answer": "No. Grid visibility is subplot-local. Calling `grid on` in one panel doesn't turn it on in others — you need to enable it explicitly in each subplot where you want grid lines."
47
+ }
48
+ ],
35
49
  "links": [
36
50
  {
37
51
  "label": "axis",
@@ -44,6 +58,22 @@ const builtinDoc = {
44
58
  {
45
59
  "label": "subplot",
46
60
  "url": "./subplot"
61
+ },
62
+ {
63
+ "label": "Choosing the right plot type",
64
+ "url": "/docs/plotting/choosing-the-right-plot-type"
65
+ },
66
+ {
67
+ "label": "Styling plots and axes",
68
+ "url": "/docs/plotting/styling-plots-and-axes"
69
+ },
70
+ {
71
+ "label": "Plot replay and export",
72
+ "url": "/docs/plotting/plot-replay-and-export"
73
+ },
74
+ {
75
+ "label": "Complete plotting guide",
76
+ "url": "/blog/matlab-plotting-guide"
47
77
  }
48
78
  ],
49
79
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,MAAM;QACN,SAAS;QACT,UAAU;QACV,kBAAkB;QAClB,aAAa;KACd;IACD,SAAS,EAAE,sFAAsF;IACjG,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,0BAA0B;KACnC;IACD,aAAa,EAAE,wPAAwP;IACvQ,WAAW,EAAE;QACX,mDAAmD;QACnD,qDAAqD;QACrD,4DAA4D;QAC5D,oFAAoF;KACrF;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,0CAA0C;YACzD,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,aAAa,EAAE,uCAAuC;YACtD,OAAO,EAAE,qGAAqG;SAC/G;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,wGAAwG;KAChH;IACD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/generated/builtins/grid.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,MAAM;QACN,SAAS;QACT,UAAU;QACV,kBAAkB;QAClB,aAAa;KACd;IACD,SAAS,EAAE,sFAAsF;IACjG,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,0BAA0B;KACnC;IACD,aAAa,EAAE,wPAAwP;IACvQ,WAAW,EAAE;QACX,mDAAmD;QACnD,qDAAqD;QACrD,4DAA4D;QAC5D,oFAAoF;KACrF;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,0CAA0C;YACzD,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,aAAa,EAAE,uCAAuC;YACtD,OAAO,EAAE,qGAAqG;SAC/G;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,uCAAuC;YACnD,QAAQ,EAAE,uLAAuL;SAClM;QACD;YACE,UAAU,EAAE,2CAA2C;YACvD,QAAQ,EAAE,qQAAqQ;SAChR;QACD;YACE,UAAU,EAAE,wCAAwC;YACpD,QAAQ,EAAE,iLAAiL;SAC5L;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,wGAAwG;KAChH;IACD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hist.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/hist.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA+EjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"hist.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/hist.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAyGjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -56,6 +56,16 @@ const builtinDoc = {
56
56
  "output": "% Use histogram(...) instead when you want bin-edge semantics and an object handle"
57
57
  }
58
58
  ],
59
+ "faqs": [
60
+ {
61
+ "question": "What's the actual difference between hist and histogram?",
62
+ "answer": "The critical difference is how the second argument is interpreted. `hist(data, v)` treats `v` as **bin centers**. `histogram(data, 'BinEdges', v)` treats `v` as **bin edges**. Beyond that, `histogram` returns a handle object with properties you can query via `get`, while `hist` is a fire-and-forget plotting command."
63
+ },
64
+ {
65
+ "question": "When should I use hist instead of histogram?",
66
+ "answer": "Use `hist` when you're porting legacy MATLAB code that relies on center-based binning or when you want a quick distribution plot without needing a handle object. For anything new—especially if you need normalization modes, bin-edge control, or programmatic access to bin counts—use `histogram` instead."
67
+ }
68
+ ],
59
69
  "links": [
60
70
  {
61
71
  "label": "histogram",
@@ -68,6 +78,22 @@ const builtinDoc = {
68
78
  {
69
79
  "label": "pie",
70
80
  "url": "./pie"
81
+ },
82
+ {
83
+ "label": "Choosing the right plot type",
84
+ "url": "/docs/plotting/choosing-the-right-plot-type"
85
+ },
86
+ {
87
+ "label": "Styling plots and axes",
88
+ "url": "/docs/plotting/styling-plots-and-axes"
89
+ },
90
+ {
91
+ "label": "Plot replay and export",
92
+ "url": "/docs/plotting/plot-replay-and-export"
93
+ },
94
+ {
95
+ "label": "Complete plotting guide",
96
+ "url": "/blog/matlab-plotting-guide"
71
97
  }
72
98
  ],
73
99
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"hist.js","sourceRoot":"","sources":["../../../src/generated/builtins/hist.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,MAAM;QACN,kBAAkB;QAClB,aAAa;QACb,mBAAmB;QACnB,aAAa;QACb,mBAAmB;KACpB;IACD,SAAS,EAAE,iGAAiG;IAC5G,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,2KAA2K;KACrL;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,iCAAiC;KAC1C;IACD,aAAa,EAAE,ibAAib;IAChc,WAAW,EAAE;QACX,6GAA6G;QAC7G,qHAAqH;QACrH,gHAAgH;QAChH,8LAA8L;QAC9L,+GAA+G;KAChH;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,aAAa,EAAE,2BAA2B;YAC1C,OAAO,EAAE,kEAAkE;YAC3E,QAAQ,EAAE,qEAAqE;SAChF;QACD;YACE,aAAa,EAAE,4DAA4D;YAC3E,OAAO,EAAE,8CAA8C;YACvD,QAAQ,EAAE,oFAAoF;SAC/F;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,aAAa;SACrB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,wGAAwG;KAChH;IACD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"hist.js","sourceRoot":"","sources":["../../../src/generated/builtins/hist.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,MAAM;QACN,kBAAkB;QAClB,aAAa;QACb,mBAAmB;QACnB,aAAa;QACb,mBAAmB;KACpB;IACD,SAAS,EAAE,iGAAiG;IAC5G,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,2KAA2K;KACrL;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,iCAAiC;KAC1C;IACD,aAAa,EAAE,ibAAib;IAChc,WAAW,EAAE;QACX,6GAA6G;QAC7G,qHAAqH;QACrH,gHAAgH;QAChH,8LAA8L;QAC9L,+GAA+G;KAChH;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,aAAa,EAAE,2BAA2B;YAC1C,OAAO,EAAE,kEAAkE;YAC3E,QAAQ,EAAE,qEAAqE;SAChF;QACD;YACE,aAAa,EAAE,4DAA4D;YAC3E,OAAO,EAAE,8CAA8C;YACvD,QAAQ,EAAE,oFAAoF;SAC/F;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,0DAA0D;YACtE,QAAQ,EAAE,+TAA+T;SAC1U;QACD;YACE,UAAU,EAAE,8CAA8C;YAC1D,QAAQ,EAAE,gTAAgT;SAC3T;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,aAAa;SACrB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,wGAAwG;KAChH;IACD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"histcounts2.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/histcounts2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA+IjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"histcounts2.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/histcounts2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAwKjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -113,6 +113,18 @@ const builtinDoc = {
113
113
  {
114
114
  "question": "Can I use histcounts2 on GPU arrays in RunMat?",
115
115
  "answer": "Yes. RunMat supports `histcounts2` on GPU arrays with `f32` and `f64` precision. GPU providers can attach a device kernel for full hardware acceleration."
116
+ },
117
+ {
118
+ "question": "What's the relationship between `N`, `Xedges`, and `Yedges`?",
119
+ "answer": "The count matrix `N` has size `(length(Xedges)-1) × (length(Yedges)-1)`: one row per `X` bin and one column per `Y` bin. Each bin covers the half-open interval `[edge(k), edge(k+1))`, except the final row and column, which include their upper edge so the largest finite values are counted."
120
+ },
121
+ {
122
+ "question": "How do I get a 2-D probability density from `histcounts2`?",
123
+ "answer": "Pass `'Normalization', 'pdf'`, for example `[N, Xedges, Yedges] = histcounts2(X, Y, 'Normalization', 'pdf')`. Each bin value is divided by the bin area and by the total number of pairs, so `sum(N .* diff(Xedges)' .* diff(Yedges), 'all')` equals `1` when no samples fall outside the bin limits."
124
+ },
125
+ {
126
+ "question": "How do I use explicit bin edges with `histcounts2`?",
127
+ "answer": "Supply two monotonically increasing edge vectors as the third and fourth arguments, for example `Xedges = 0:0.1:1; Yedges = 0:0.1:1; N = histcounts2(X, Y, Xedges, Yedges)`. This gives you full control over bin placement and is the easiest way to reproduce a 2-D histogram across multiple datasets."
116
128
  }
117
129
  ],
118
130
  "links": [
@@ -133,6 +145,19 @@ const builtinDoc = {
133
145
  "label": "crates/runmat-runtime/src/builtins/stats/hist/histcounts2.rs",
134
146
  "url": "crates/runmat-runtime/src/builtins/stats/hist/histcounts2.rs"
135
147
  },
148
+ "syntax": {
149
+ "example": {
150
+ "description": "Syntax",
151
+ "input": "[N, Xedges, Yedges] = histcounts2(X, Y)\n[N, Xedges, Yedges] = histcounts2(X, Y, nbins)\n[N, Xedges, Yedges] = histcounts2(X, Y, Xedges, Yedges)\n[N, Xedges, Yedges] = histcounts2(___, Name, Value)\n[N, Xedges, Yedges, binX, binY] = histcounts2(___)"
152
+ },
153
+ "points": [
154
+ "`X` and `Y` are numeric vectors (or arrays flattened column-major) of equal length holding paired observations.",
155
+ "`nbins` is either a scalar bin count applied to both axes or a two-element vector `[nX nY]` giving separate counts for the `X` and `Y` axes.",
156
+ "`Xedges` and `Yedges` are monotonically increasing edge vectors. Bin `k` covers `[edge(k), edge(k+1))`; the final bin also includes its right edge so maximum values are counted.",
157
+ "Name/value options include `'Normalization'` (`'count'`, `'probability'`, `'pdf'`, `'countdensity'`, `'cumcount'`, `'cdf'`), `'BinMethod'`, `'BinWidth'`, `'NumBins'`, `'XBinLimits'`, and `'YBinLimits'`.",
158
+ "With five outputs, `binX` and `binY` are integer indices the same size as the flattened inputs, giving the `X`- and `Y`-bin that each pair falls into (`0` when an observation is excluded)."
159
+ ]
160
+ },
136
161
  "gpu_residency": "As with other RunMat histogram routines, you do not need to call `gpuArray` explicitly just to obtain GPU execution. Once providers implement the `histcounts2` hook, the fusion planner will keep residency on the device automatically. Until then, the builtin gathers data to the host and returns CPU tensors even when inputs originate on the GPU, matching MATLAB semantics after an explicit `gather`.",
137
162
  "gpu_behavior": [
138
163
  "When either input is a `gpuArray`, RunMat gathers the samples back to host memory, performs the reference CPU implementation, and returns dense CPU tensors for the histogram and edges. The acceleration layer exposes a `histcounts2` provider hook; once kernels land, the runtime will automatically keep residency on the GPU and skip gathering. The builtin is registered as a sink, so fusion plans flush GPU residency before histogramming and the current implementation always yields host-resident outputs."
@@ -1 +1 @@
1
- {"version":3,"file":"histcounts2.js","sourceRoot":"","sources":["../../../src/generated/builtins/histcounts2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"histcounts2.js","sourceRoot":"","sources":["../../../src/generated/builtins/histcounts2.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/histogram.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAmFjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/histogram.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAuHjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -12,6 +12,7 @@ const builtinDoc = {
12
12
  "distribution analysis"
13
13
  ],
14
14
  "summary": "Create histogram objects with bin-edge semantics, normalization controls, and MATLAB `histogram` workflows.",
15
+ "hero_image": "https://web.runmatstatic.com/builtin-image/runmat-matlab-histogram-plot-overlaid-distributions.webp",
15
16
  "gpu_support": {
16
17
  "elementwise": false,
17
18
  "reduction": false,
@@ -54,6 +55,25 @@ const builtinDoc = {
54
55
  "description": "Apply normalization through histogram semantics",
55
56
  "input": "data = randn(1, 500);\nh = histogram(data, 'Normalization', 'probability');\nget(h, 'Normalization')",
56
57
  "output": "ans =\n 'probability'"
58
+ },
59
+ {
60
+ "description": "Overlaid distributions",
61
+ "input": "a = 2 + 1.2*randn(1, 5000);\nb = 4 + 0.8*randn(1, 5000);\n\nh1 = histogram(a, 'BinEdges', -2:0.25:8, 'Normalization', 'probability');\nset(h1, 'DisplayName', 'Process A');\nhold on;\nh2 = histogram(b, 'BinEdges', -2:0.25:8, 'Normalization', 'probability');\nset(h2, 'DisplayName', 'Process B');\nhold off;\n\ntitle('Distribution Comparison');\nxlabel('Measurement');\nylabel('Probability');\nlegend;\ngrid on;",
62
+ "image_webp": "https://web.runmatstatic.com/builtin-image/runmat-matlab-histogram-plot-overlaid-distributions.webp"
63
+ }
64
+ ],
65
+ "faqs": [
66
+ {
67
+ "question": "How do I set a specific number of bins?",
68
+ "answer": "Pass the bin count as a second positional argument or use the `'NumBins'` name-value pair.\n\n```matlab\ndata = randn(1, 1000);\nhistogram(data, 30); % 30 bins\nhistogram(data, 'NumBins', 50); % 50 bins\nhistogram(data, 'BinEdges', -3:0.1:3); % exact edges\n```\n\nExplicit `BinEdges` gives you full control over where each bin starts and ends."
69
+ },
70
+ {
71
+ "question": "How do I overlay two distributions on the same axes?",
72
+ "answer": "Use `hold on` between `histogram` calls and set `'Normalization'` to `'probability'` so both distributions are on a comparable scale.\n\n```matlab\nhistogram(randn(1,1000), 'Normalization', 'probability');\nhold on;\nhistogram(randn(1,1000) + 2, 'Normalization', 'probability');\nlegend('dist A', 'dist B');\n```"
73
+ },
74
+ {
75
+ "question": "What's the difference between histogram and hist?",
76
+ "answer": "`histogram` is the modern API: it uses bin-edge semantics, returns a handle object you can inspect with `get`/`set`, and supports normalization modes like `'probability'` and `'pdf'`. `hist` is the legacy API that interprets a second vector argument as bin centers. Use `histogram` for new code unless you specifically need center-based binning from a legacy workflow."
57
77
  }
58
78
  ],
59
79
  "links": [
@@ -72,6 +92,22 @@ const builtinDoc = {
72
92
  {
73
93
  "label": "set",
74
94
  "url": "./set"
95
+ },
96
+ {
97
+ "label": "Choosing the right plot type",
98
+ "url": "/docs/plotting/choosing-the-right-plot-type"
99
+ },
100
+ {
101
+ "label": "Styling plots and axes",
102
+ "url": "/docs/plotting/styling-plots-and-axes"
103
+ },
104
+ {
105
+ "label": "Plot replay and export",
106
+ "url": "/docs/plotting/plot-replay-and-export"
107
+ },
108
+ {
109
+ "label": "Complete plotting guide",
110
+ "url": "/blog/matlab-plotting-guide"
75
111
  }
76
112
  ],
77
113
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"histogram.js","sourceRoot":"","sources":["../../../src/generated/builtins/histogram.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,WAAW;IACpB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,WAAW;QACX,kBAAkB;QAClB,WAAW;QACX,sBAAsB;QACtB,kBAAkB;QAClB,uBAAuB;KACxB;IACD,SAAS,EAAE,6GAA6G;IACxH,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,sFAAsF;KAChG;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,sCAAsC;KAC/C;IACD,aAAa,EAAE,6RAA6R;IAC5S,WAAW,EAAE;QACX,sDAAsD;QACtD,uHAAuH;QACvH,2IAA2I;QAC3I,6JAA6J;QAC7J,qIAAqI;KACtI;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,qCAAqC;YACpD,OAAO,EAAE,8CAA8C;YACvD,QAAQ,EAAE,kCAAkC;SAC7C;QACD;YACE,aAAa,EAAE,+CAA+C;YAC9D,OAAO,EAAE,yGAAyG;SACnH;QACD;YACE,aAAa,EAAE,iDAAiD;YAChE,OAAO,EAAE,sGAAsG;YAC/G,QAAQ,EAAE,0BAA0B;SACrC;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,gEAAgE;QACzE,KAAK,EAAE,6GAA6G;KACrH;IACD,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,WAAW;IACnB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"histogram.js","sourceRoot":"","sources":["../../../src/generated/builtins/histogram.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,WAAW;IACpB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,WAAW;QACX,kBAAkB;QAClB,WAAW;QACX,sBAAsB;QACtB,kBAAkB;QAClB,uBAAuB;KACxB;IACD,SAAS,EAAE,6GAA6G;IACxH,YAAY,EAAE,qGAAqG;IACnH,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,sFAAsF;KAChG;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,sCAAsC;KAC/C;IACD,aAAa,EAAE,6RAA6R;IAC5S,WAAW,EAAE;QACX,sDAAsD;QACtD,uHAAuH;QACvH,2IAA2I;QAC3I,6JAA6J;QAC7J,qIAAqI;KACtI;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,qCAAqC;YACpD,OAAO,EAAE,8CAA8C;YACvD,QAAQ,EAAE,kCAAkC;SAC7C;QACD;YACE,aAAa,EAAE,+CAA+C;YAC9D,OAAO,EAAE,yGAAyG;SACnH;QACD;YACE,aAAa,EAAE,iDAAiD;YAChE,OAAO,EAAE,sGAAsG;YAC/G,QAAQ,EAAE,0BAA0B;SACrC;QACD;YACE,aAAa,EAAE,wBAAwB;YACvC,OAAO,EAAE,2ZAA2Z;YACpa,YAAY,EAAE,qGAAqG;SACpH;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,yCAAyC;YACrD,QAAQ,EAAE,qXAAqX;SAChY;QACD;YACE,UAAU,EAAE,sDAAsD;YAClE,QAAQ,EAAE,0TAA0T;SACrU;QACD;YACE,UAAU,EAAE,mDAAmD;YAC/D,QAAQ,EAAE,kXAAkX;SAC7X;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,gEAAgE;QACzE,KAAK,EAAE,6GAA6G;KACrH;IACD,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,WAAW;IACnB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/image.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA6FjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/image.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA2HjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -57,6 +57,20 @@ const builtinDoc = {
57
57
  "output": "ans =\n 'image'"
58
58
  }
59
59
  ],
60
+ "faqs": [
61
+ {
62
+ "question": "How do I display RGB data with image?",
63
+ "answer": "Pass an MxNx3 array where the third dimension holds red, green, and blue channels. Values should be in `[0, 1]` for doubles or `[0, 255]` for uint8.\n\n```matlab\nimg = zeros(100, 100, 3);\nimg(:,:,1) = 1; % full red\nimg(30:70, 30:70, 2) = 1; % green square\nimage(img);\n```"
64
+ },
65
+ {
66
+ "question": "When should I use image vs imagesc?",
67
+ "answer": "`image` displays pixel data as-is — either indexed colors through a colormap or direct RGB truecolor. `imagesc` automatically scales a 2-D matrix so its min and max span the full colormap range. If you're showing actual image pixels or pre-indexed data, use `image`. If you're visualizing a matrix of computed values as a heatmap, use `imagesc`."
68
+ },
69
+ {
70
+ "question": "Why does my image appear upside down?",
71
+ "answer": "By default, `image` sets the y-axis to go from top to bottom (row 1 at the top), which matches matrix indexing. If your coordinate system expects y to increase upward, call `axis xy` after `image` to flip the axis direction. Use `axis ij` to restore the default matrix-style orientation."
72
+ }
73
+ ],
60
74
  "links": [
61
75
  {
62
76
  "label": "imagesc",
@@ -77,6 +91,22 @@ const builtinDoc = {
77
91
  {
78
92
  "label": "set",
79
93
  "url": "./set"
94
+ },
95
+ {
96
+ "label": "Choosing the right plot type",
97
+ "url": "/docs/plotting/choosing-the-right-plot-type"
98
+ },
99
+ {
100
+ "label": "Styling plots and axes",
101
+ "url": "/docs/plotting/styling-plots-and-axes"
102
+ },
103
+ {
104
+ "label": "Plot replay and export",
105
+ "url": "/docs/plotting/plot-replay-and-export"
106
+ },
107
+ {
108
+ "label": "Complete plotting guide",
109
+ "url": "/blog/matlab-plotting-guide"
80
110
  }
81
111
  ],
82
112
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/generated/builtins/image.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,OAAO;QACP,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,oBAAoB;KACrB;IACD,SAAS,EAAE,uHAAuH;IAClI,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,kHAAkH;KAC5H;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,kCAAkC;QAC1C,aAAa,EAAE,qCAAqC;KACrD;IACD,aAAa,EAAE,qXAAqX;IACpY,WAAW,EAAE;QACX,sHAAsH;QACtH,+FAA+F;QAC/F,+EAA+E;QAC/E,uJAAuJ;QACvJ,0HAA0H;KAC3H;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,gCAAgC;YAC/C,OAAO,EAAE,yDAAyD;SACnE;QACD;YACE,aAAa,EAAE,+BAA+B;YAC9C,OAAO,EAAE,kFAAkF;YAC3F,QAAQ,EAAE,qCAAqC;SAChD;QACD;YACE,aAAa,EAAE,6DAA6D;YAC5E,OAAO,EAAE,yEAAyE;YAClF,QAAQ,EAAE,oBAAoB;SAC/B;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,4DAA4D;QACrE,KAAK,EAAE,yGAAyG;KACjH;IACD,eAAe,EAAE,2QAA2Q;IAC5R,cAAc,EAAE;QACd,uGAAuG;QACvG,kHAAkH;KACnH;IACD,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/generated/builtins/image.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,OAAO;QACP,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,oBAAoB;KACrB;IACD,SAAS,EAAE,uHAAuH;IAClI,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,kHAAkH;KAC5H;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,kCAAkC;QAC1C,aAAa,EAAE,qCAAqC;KACrD;IACD,aAAa,EAAE,qXAAqX;IACpY,WAAW,EAAE;QACX,sHAAsH;QACtH,+FAA+F;QAC/F,+EAA+E;QAC/E,uJAAuJ;QACvJ,0HAA0H;KAC3H;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,gCAAgC;YAC/C,OAAO,EAAE,yDAAyD;SACnE;QACD;YACE,aAAa,EAAE,+BAA+B;YAC9C,OAAO,EAAE,kFAAkF;YAC3F,QAAQ,EAAE,qCAAqC;SAChD;QACD;YACE,aAAa,EAAE,6DAA6D;YAC5E,OAAO,EAAE,yEAAyE;YAClF,QAAQ,EAAE,oBAAoB;SAC/B;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,uCAAuC;YACnD,QAAQ,EAAE,gSAAgS;SAC3S;QACD;YACE,UAAU,EAAE,qCAAqC;YACjD,QAAQ,EAAE,2VAA2V;SACtW;QACD;YACE,UAAU,EAAE,uCAAuC;YACnD,QAAQ,EAAE,iSAAiS;SAC5S;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,4DAA4D;QACrE,KAAK,EAAE,yGAAyG;KACjH;IACD,eAAe,EAAE,2QAA2Q;IAC5R,cAAc,EAAE;QACd,uGAAuG;QACvG,kHAAkH;KACnH;IACD,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"imagesc.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/imagesc.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAkFjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"imagesc.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/imagesc.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAsHjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -12,6 +12,7 @@ const builtinDoc = {
12
12
  "colormap image"
13
13
  ],
14
14
  "summary": "Display scaled matrix images for heatmaps, colormaps, and MATLAB `imagesc` style visualization.",
15
+ "hero_image": "https://web.runmatstatic.com/builtin-image/runmat-matlab-plot-imagesc-scaler-field-heatmap.webp",
15
16
  "gpu_support": {
16
17
  "elementwise": false,
17
18
  "reduction": false,
@@ -53,6 +54,25 @@ const builtinDoc = {
53
54
  {
54
55
  "description": "Use subplot-local color workflows",
55
56
  "input": "[X, Y] = meshgrid(linspace(-3, 3, 40), linspace(-3, 3, 40));\nZ = sin(X) .* cos(Y);\nsubplot(1, 2, 1);\nimagesc(Z);\ncolormap('jet');\ncolorbar;\nsubplot(1, 2, 2);\nimagesc(magic(20));\ncolormap('gray');"
57
+ },
58
+ {
59
+ "description": "Dense matrix as a heatmap",
60
+ "input": "[X, Y] = meshgrid(linspace(-pi, pi, 300), linspace(-pi, pi, 300));\nZ = sin(3*X) .* cos(2*Y) + cos(X.*Y);\n\nimagesc(Z);\ncolormap('turbo');\ncolorbar;\ntitle('Scalar Field Heatmap');\nxlabel('Column');\nylabel('Row');\naxis equal;",
61
+ "image_webp": "https://web.runmatstatic.com/builtin-image/runmat-matlab-plot-imagesc-scaler-field-heatmap.webp"
62
+ }
63
+ ],
64
+ "faqs": [
65
+ {
66
+ "question": "What's the difference between imagesc and image?",
67
+ "answer": "`imagesc` maps a 2-D matrix through the colormap with automatic scaling — the min value maps to the bottom of the colormap and the max to the top. `image` treats input as direct indexed or truecolor data without automatic scaling. Use `imagesc` for heatmaps and value visualization; use `image` when you have actual image pixel data (RGB arrays or pre-indexed values)."
68
+ },
69
+ {
70
+ "question": "How does colormap scaling work with imagesc?",
71
+ "answer": "`imagesc` sets the color limits (`caxis`) to `[min(C(:)), max(C(:))]` automatically. Every value in the matrix maps linearly into that range across the active colormap. To override the auto-scaling, call `caxis([lo hi])` after `imagesc`.\n\n```matlab\nimagesc(A);\ncaxis([-1 1]);\ncolorbar;\n```"
72
+ },
73
+ {
74
+ "question": "How do I display a matrix as a heatmap?",
75
+ "answer": "Pass the matrix directly to `imagesc` and add a colorbar for the legend. Pair with a colormap that suits your data — diverging maps like `'coolwarm'` work well for data centered around zero, sequential maps like `'parula'` for positive-only ranges.\n\n```matlab\nimagesc(myMatrix);\ncolormap('parula');\ncolorbar;\n```"
56
76
  }
57
77
  ],
58
78
  "links": [
@@ -71,6 +91,22 @@ const builtinDoc = {
71
91
  {
72
92
  "label": "axis",
73
93
  "url": "./axis"
94
+ },
95
+ {
96
+ "label": "Choosing the right plot type",
97
+ "url": "/docs/plotting/choosing-the-right-plot-type"
98
+ },
99
+ {
100
+ "label": "Styling plots and axes",
101
+ "url": "/docs/plotting/styling-plots-and-axes"
102
+ },
103
+ {
104
+ "label": "Plot replay and export",
105
+ "url": "/docs/plotting/plot-replay-and-export"
106
+ },
107
+ {
108
+ "label": "Complete plotting guide",
109
+ "url": "/blog/matlab-plotting-guide"
74
110
  }
75
111
  ],
76
112
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"imagesc.js","sourceRoot":"","sources":["../../../src/generated/builtins/imagesc.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,SAAS;QACT,cAAc;QACd,SAAS;QACT,sBAAsB;QACtB,gBAAgB;QAChB,gBAAgB;KACjB;IACD,SAAS,EAAE,iGAAiG;IAC5G,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,wIAAwI;KAClJ;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,oCAAoC;QAC5C,aAAa,EAAE,qCAAqC;KACrD;IACD,aAAa,EAAE,4bAA4b;IAC3c,WAAW,EAAE;QACX,8EAA8E;QAC9E,0GAA0G;QAC1G,sJAAsJ;QACtJ,0FAA0F;QAC1F,+FAA+F;KAChG;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,kDAAkD;YACjE,OAAO,EAAE,6GAA6G;SACvH;QACD;YACE,aAAa,EAAE,uCAAuC;YACtD,OAAO,EAAE,8EAA8E;SACxF;QACD;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,6MAA6M;SACvN;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,8DAA8D;QACvE,KAAK,EAAE,2GAA2G;KACnH;IACD,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"imagesc.js","sourceRoot":"","sources":["../../../src/generated/builtins/imagesc.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,SAAS;QACT,cAAc;QACd,SAAS;QACT,sBAAsB;QACtB,gBAAgB;QAChB,gBAAgB;KACjB;IACD,SAAS,EAAE,iGAAiG;IAC5G,YAAY,EAAE,iGAAiG;IAC/G,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE;YACZ,QAAQ;YACR,QAAQ;SACT;QACD,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,wIAAwI;KAClJ;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,oCAAoC;QAC5C,aAAa,EAAE,qCAAqC;KACrD;IACD,aAAa,EAAE,4bAA4b;IAC3c,WAAW,EAAE;QACX,8EAA8E;QAC9E,0GAA0G;QAC1G,sJAAsJ;QACtJ,0FAA0F;QAC1F,+FAA+F;KAChG;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,kDAAkD;YACjE,OAAO,EAAE,6GAA6G;SACvH;QACD;YACE,aAAa,EAAE,uCAAuC;YACtD,OAAO,EAAE,8EAA8E;SACxF;QACD;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,6MAA6M;SACvN;QACD;YACE,aAAa,EAAE,2BAA2B;YAC1C,OAAO,EAAE,yOAAyO;YAClP,YAAY,EAAE,iGAAiG;SAChH;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,kDAAkD;YAC9D,QAAQ,EAAE,kXAAkX;SAC7X;QACD;YACE,UAAU,EAAE,8CAA8C;YAC1D,QAAQ,EAAE,ySAAyS;SACpT;QACD;YACE,UAAU,EAAE,yCAAyC;YACrD,QAAQ,EAAE,gUAAgU;SAC3U;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,8BAA8B;YACvC,KAAK,EAAE,6CAA6C;SACrD;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,6BAA6B;SACrC;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,8DAA8D;QACvE,KAAK,EAAE,2GAA2G;KACnH;IACD,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -28,7 +28,7 @@ const builtinDoc = {
28
28
  "requires_feature": null,
29
29
  "tested": {
30
30
  "unit": "builtins::structs::core::isfield::tests",
31
- "integration": "runmat_ignition::functions::struct_isfield_multi_and_fieldnames"
31
+ "integration": "runmat-vm/tests/functions.rs::struct_isfield_multi_and_fieldnames"
32
32
  },
33
33
  "description": "`tf = isfield(S, name)` returns a logical value that indicates whether the struct `S` defines the field `name`. When `name` is a string array or a cell array of names, `isfield` returns a logical array with the same size, reporting the result for each requested field.",
34
34
  "behaviors": [
@@ -1 +1 @@
1
- {"version":3,"file":"isfield.js","sourceRoot":"","sources":["../../../src/generated/builtins/isfield.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isfield.js","sourceRoot":"","sources":["../../../src/generated/builtins/isfield.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"isnan.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/isnan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAsKjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"isnan.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/isnan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA6LjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -116,6 +116,18 @@ const builtinDoc = {
116
116
  {
117
117
  "question": "Does isnan support GPU acceleration in RunMat?",
118
118
  "answer": "Yes. `isnan` runs on the GPU with elementwise fusion, meaning it can be combined with other operations without extra memory round-trips."
119
+ },
120
+ {
121
+ "question": "What's the difference between `isnan`, `isinf`, and `isfinite`?",
122
+ "answer": "`isnan(x)` is true only for `NaN` values, `isinf(x)` is true only for `Inf` and `-Inf`, and `isfinite(x)` is true for everything else (neither `NaN` nor infinite). For any numeric `x`, exactly one of `isnan(x)`, `isinf(x)`, or `isfinite(x)` is `true`."
123
+ },
124
+ {
125
+ "question": "How do I check for NaN without calling `isnan`?",
126
+ "answer": "`NaN` is the only IEEE value that is not equal to itself, so `x ~= x` is `true` exactly when `x` is `NaN`. This trick works on scalars and arrays, but `isnan` is clearer, matches MATLAB idioms, and is what you should reach for in production code."
127
+ },
128
+ {
129
+ "question": "How do I filter NaN values out of a vector?",
130
+ "answer": "Index with the negated mask: `A(~isnan(A))` keeps only the finite entries. For matrices, use row-wise logic such as `A(~any(isnan(A), 2), :)` to keep rows with no `NaN`."
119
131
  }
120
132
  ],
121
133
  "links": [
@@ -156,6 +168,17 @@ const builtinDoc = {
156
168
  "label": "`crates/runmat-runtime/src/builtins/logical/tests/isnan.rs`",
157
169
  "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/logical/tests/isnan.rs"
158
170
  },
171
+ "syntax": {
172
+ "example": {
173
+ "description": "Syntax",
174
+ "input": "tf = isnan(A)"
175
+ },
176
+ "points": [
177
+ "`A` is a numeric scalar or array (real, complex, or `gpuArray`). Logical, character, and string inputs are accepted and map to `false`, matching MATLAB.",
178
+ "For complex inputs, `isnan` returns `true` whenever either the real or imaginary component is `NaN`.",
179
+ "`tf` is a logical array the same size as `A`, with `true` where the corresponding element is `NaN` and `false` otherwise."
180
+ ]
181
+ },
159
182
  "gpu_residency": "You usually do **not** need to call `gpuArray` explicitly. RunMat's auto-offload planner keeps tensors on the GPU across fused expressions when that improves performance. You can still seed residency manually with `gpuArray` for compatibility with MATLAB scripts or when you want fine-grained control over data movement.",
160
183
  "gpu_behavior": [
161
184
  "When RunMat Accelerate is active, `isnan` looks for the provider hook `logical_isnan`. Providers that implement the hook execute the NaN test entirely on the GPU, producing a logical gpuArray result without any host transfers. If the hook is absent, RunMat gathers the input tensor back to the CPU, computes the mask on the host, and returns a regular logical array so the builtin always succeeds."
@@ -1 +1 @@
1
- {"version":3,"file":"isnan.js","sourceRoot":"","sources":["../../../src/generated/builtins/isnan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isnan.js","sourceRoot":"","sources":["../../../src/generated/builtins/isnan.ts"],"names":[],"mappings":"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"}