runmat 0.4.3 → 0.4.4-dev.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 (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
@@ -37,6 +37,20 @@ const builtinDoc = {
37
37
  "output": "ans =\n 'log'"
38
38
  }
39
39
  ],
40
+ "faqs": [
41
+ {
42
+ "question": "When is semilogy the right choice over a linear plot?",
43
+ "answer": "Whenever the interesting structure lives in multiplicative changes along Y — exponential decay, growth rates, signal attenuation. On a log y-axis, `exp(-t)` becomes a straight line, which makes decay constants easy to read directly from the slope."
44
+ },
45
+ {
46
+ "question": "How do I visualize exponential decay and read the time constant?",
47
+ "answer": "Plot with `semilogy` and the decay appears as a straight line. The slope of that line is the decay rate. For `exp(-t/tau)`, the signal drops by a factor of `e` every `tau` units along the x-axis.\n\n```matlab\nt = linspace(0, 10, 200);\nsemilogy(t, exp(-t/3)); % tau = 3\ngrid on;\n```"
48
+ },
49
+ {
50
+ "question": "What about zero or negative y-values on a log y-axis?",
51
+ "answer": "They're excluded from rendering since log of zero or negative numbers is undefined. The data handle still stores them, but only positive y-values produce visible points. If your data crosses zero, consider splitting into positive and negative series or using a linear axis."
52
+ }
53
+ ],
40
54
  "links": [
41
55
  {
42
56
  "label": "plot",
@@ -53,6 +67,22 @@ const builtinDoc = {
53
67
  {
54
68
  "label": "axis",
55
69
  "url": "./axis"
70
+ },
71
+ {
72
+ "label": "Choosing the right plot type",
73
+ "url": "/docs/plotting/choosing-the-right-plot-type"
74
+ },
75
+ {
76
+ "label": "Styling plots and axes",
77
+ "url": "/docs/plotting/styling-plots-and-axes"
78
+ },
79
+ {
80
+ "label": "Plot replay and export",
81
+ "url": "/docs/plotting/plot-replay-and-export"
82
+ },
83
+ {
84
+ "label": "Complete plotting guide",
85
+ "url": "/blog/matlab-plotting-guide"
56
86
  }
57
87
  ],
58
88
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"semilogy.js","sourceRoot":"","sources":["../../../src/generated/builtins/semilogy.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,UAAU;QACV,oBAAoB;QACpB,cAAc;QACd,iBAAiB;QACjB,kBAAkB;KACnB;IACD,SAAS,EAAE,4GAA4G;IACvH,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,qCAAqC;KAC9C;IACD,aAAa,EAAE,wQAAwQ;IACvR,WAAW,EAAE;QACX,8CAA8C;QAC9C,sEAAsE;QACtE,8EAA8E;QAC9E,uEAAuE;KACxE;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,mDAAmD;YAClE,OAAO,EAAE,kDAAkD;SAC5D;QACD;YACE,aAAa,EAAE,0CAA0C;YACzD,OAAO,EAAE,qLAAqL;SAC/L;QACD;YACE,aAAa,EAAE,yCAAyC;YACxD,OAAO,EAAE,kEAAkE;YAC3E,QAAQ,EAAE,kBAAkB;SAC7B;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,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,+DAA+D;QACxE,KAAK,EAAE,4GAA4G;KACpH;IACD,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"semilogy.js","sourceRoot":"","sources":["../../../src/generated/builtins/semilogy.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,UAAU;QACV,oBAAoB;QACpB,cAAc;QACd,iBAAiB;QACjB,kBAAkB;KACnB;IACD,SAAS,EAAE,4GAA4G;IACvH,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,qCAAqC;KAC9C;IACD,aAAa,EAAE,wQAAwQ;IACvR,WAAW,EAAE;QACX,8CAA8C;QAC9C,sEAAsE;QACtE,8EAA8E;QAC9E,uEAAuE;KACxE;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,mDAAmD;YAClE,OAAO,EAAE,kDAAkD;SAC5D;QACD;YACE,aAAa,EAAE,0CAA0C;YACzD,OAAO,EAAE,qLAAqL;SAC/L;QACD;YACE,aAAa,EAAE,yCAAyC;YACxD,OAAO,EAAE,kEAAkE;YAC3E,QAAQ,EAAE,kBAAkB;SAC7B;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,uDAAuD;YACnE,QAAQ,EAAE,yPAAyP;SACpQ;QACD;YACE,UAAU,EAAE,kEAAkE;YAC9E,QAAQ,EAAE,+RAA+R;SAC1S;QACD;YACE,UAAU,EAAE,uDAAuD;YACnE,QAAQ,EAAE,mRAAmR;SAC9R;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,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,+DAA+D;QACxE,KAAK,EAAE,4GAA4G;KACpH;IACD,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/set.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAgEjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/set.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA8FjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -37,6 +37,20 @@ const builtinDoc = {
37
37
  "input": "plot(1:5, 1:5);\nlg = legend('series');\nset(lg, 'Location', 'southwest', 'Orientation', 'horizontal');"
38
38
  }
39
39
  ],
40
+ "faqs": [
41
+ {
42
+ "question": "Can I set multiple properties in a single call?",
43
+ "answer": "Yes. Pass alternating property/value pairs: `set(h, 'Color', 'r', 'LineWidth', 2, 'DisplayName', 'trend')`. All updates apply atomically to the same handle."
44
+ },
45
+ {
46
+ "question": "What are the most commonly used properties to set on a line handle?",
47
+ "answer": "`'Color'`, `'LineWidth'`, `'LineStyle'`, `'Marker'`, and `'DisplayName'` cover most styling needs. `'DisplayName'` is especially useful — it feeds directly into `legend` when you call it without explicit labels.\n\n```matlab\nh = plot(x, y);\nset(h, 'Color', [0.2 0.6 0.8], 'LineWidth', 1.5, 'DisplayName', 'measured');\n```"
48
+ },
49
+ {
50
+ "question": "What happens if I pass a property name that the handle doesn't support?",
51
+ "answer": "RunMat raises a plotting error immediately. It doesn't silently ignore unknown properties, so typos in property names surface right away rather than producing subtle bugs."
52
+ }
53
+ ],
40
54
  "links": [
41
55
  {
42
56
  "label": "get",
@@ -53,6 +67,22 @@ const builtinDoc = {
53
67
  {
54
68
  "label": "plot",
55
69
  "url": "./plot"
70
+ },
71
+ {
72
+ "label": "Choosing the right plot type",
73
+ "url": "/docs/plotting/choosing-the-right-plot-type"
74
+ },
75
+ {
76
+ "label": "Styling plots and axes",
77
+ "url": "/docs/plotting/styling-plots-and-axes"
78
+ },
79
+ {
80
+ "label": "Plot replay and export",
81
+ "url": "/docs/plotting/plot-replay-and-export"
82
+ },
83
+ {
84
+ "label": "Complete plotting guide",
85
+ "url": "/blog/matlab-plotting-guide"
56
86
  }
57
87
  ],
58
88
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/generated/builtins/set.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,KAAK;QACL,iBAAiB;QACjB,iBAAiB;QACjB,YAAY;QACZ,uBAAuB;KACxB;IACD,SAAS,EAAE,qHAAqH;IAChI,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,gCAAgC;KACzC;IACD,aAAa,EAAE,sWAAsW;IACrX,WAAW,EAAE;QACX,gFAAgF;QAChF,0IAA0I;QAC1I,wGAAwG;QACxG,gKAAgK;QAChK,kJAAkJ;KACnJ;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,6BAA6B;YAC5C,OAAO,EAAE,qGAAqG;SAC/G;QACD;YACE,aAAa,EAAE,gDAAgD;YAC/D,OAAO,EAAE,2FAA2F;SACrG;QACD;YACE,aAAa,EAAE,2CAA2C;YAC1D,OAAO,EAAE,yGAAyG;SACnH;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,0DAA0D;QACnE,KAAK,EAAE,uGAAuG;KAC/G;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/generated/builtins/set.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,KAAK;QACL,iBAAiB;QACjB,iBAAiB;QACjB,YAAY;QACZ,uBAAuB;KACxB;IACD,SAAS,EAAE,qHAAqH;IAChI,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,gCAAgC;KACzC;IACD,aAAa,EAAE,sWAAsW;IACrX,WAAW,EAAE;QACX,gFAAgF;QAChF,0IAA0I;QAC1I,wGAAwG;QACxG,gKAAgK;QAChK,kJAAkJ;KACnJ;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,6BAA6B;YAC5C,OAAO,EAAE,qGAAqG;SAC/G;QACD;YACE,aAAa,EAAE,gDAAgD;YAC/D,OAAO,EAAE,2FAA2F;SACrG;QACD;YACE,aAAa,EAAE,2CAA2C;YAC1D,OAAO,EAAE,yGAAyG;SACnH;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,iDAAiD;YAC7D,QAAQ,EAAE,8JAA8J;SACzK;QACD;YACE,UAAU,EAAE,qEAAqE;YACjF,QAAQ,EAAE,sUAAsU;SACjV;QACD;YACE,UAAU,EAAE,yEAAyE;YACrF,QAAQ,EAAE,6KAA6K;SACxL;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;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,0DAA0D;QACnE,KAAK,EAAE,uGAAuG;KAC/G;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,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::setfield::tests",
31
- "integration": "runmat_ignition::tests::functions::member_get_set_and_method_call_skeleton"
31
+ "integration": "runmat-vm/tests/functions.rs::member_get_set_and_method_call_skeleton"
32
32
  },
33
33
  "description": "`S = setfield(S, field, value)` returns a copy of the struct (or object) with `field` assigned to `value`. Additional field names and index cells let you update nested structures, struct arrays, and array elements contained within fields.",
34
34
  "behaviors": [
@@ -1 +1 @@
1
- {"version":3,"file":"setfield.js","sourceRoot":"","sources":["../../../src/generated/builtins/setfield.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setfield.js","sourceRoot":"","sources":["../../../src/generated/builtins/setfield.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BuiltinDoc } from "../../builtins.js";
2
+ declare const builtinDoc: BuiltinDoc;
3
+ export default builtinDoc;
4
+ //# sourceMappingURL=sgtitle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sgtitle.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/sgtitle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA8FjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,99 @@
1
+ // @generated by scripts/generate-builtins.cjs
2
+ // Do not edit by hand.
3
+ const builtinDoc = {
4
+ "title": "sgtitle",
5
+ "category": "plotting",
6
+ "keywords": [
7
+ "sgtitle",
8
+ "super title",
9
+ "subplot title",
10
+ "figure title",
11
+ "matlab sgtitle"
12
+ ],
13
+ "summary": "Set a title centered above the entire figure, especially for multi-subplot layouts.",
14
+ "requires_feature": null,
15
+ "tested": {
16
+ "unit": "builtins::plotting::sgtitle::tests"
17
+ },
18
+ "description": "`sgtitle` sets or updates a figure-level title that is rendered once above the full figure rather than attached to a single axes. In RunMat phase 1, it targets the current figure by default or an explicit figure handle when one is passed, returns a text handle, participates in `get` and `set`, and persists through scene replay and export.",
19
+ "behaviors": [
20
+ "The returned value is a text handle that can be inspected or updated through `get` and `set`.",
21
+ "Unlike `title`, `sgtitle` is figure-scoped and is drawn once above all subplot panels.",
22
+ "String scalars, char arrays, string arrays, and cell arrays can all be used to create multiline super titles.",
23
+ "Text styling properties such as `FontSize`, `FontWeight`, `FontAngle`, `Color`, `Interpreter`, and `Visible` use the shared plotting text-property system."
24
+ ],
25
+ "examples": [
26
+ {
27
+ "description": "Add a super title above a subplot figure",
28
+ "input": "subplot(2, 2, 1);\nplot(1:10, rand(1, 10));\nsubplot(2, 2, 2);\nplot(1:10, rand(1, 10));\nsubplot(2, 2, 3);\nplot(1:10, rand(1, 10));\nsubplot(2, 2, 4);\nplot(1:10, rand(1, 10));\nsgtitle('Experiment Summary');"
29
+ },
30
+ {
31
+ "description": "Style the figure-level title and inspect the returned handle",
32
+ "input": "subplot(1, 2, 1);\nimagesc(peaks(20));\nsubplot(1, 2, 2);\nimagesc(peaks(20));\nh = sgtitle('Field Comparison', 'FontSize', 18, 'FontWeight', 'bold');\nget(h, 'Type')",
33
+ "output": "ans =\n 'text'"
34
+ },
35
+ {
36
+ "description": "Target an explicit figure handle",
37
+ "input": "fig = figure(42);\nsubplot(1, 2, 1);\nplot(0:0.1:1, sin(0:0.1:1));\nsubplot(1, 2, 2);\nplot(0:0.1:1, cos(0:0.1:1));\nsgtitle(fig, 'Sine and Cosine');"
38
+ }
39
+ ],
40
+ "faqs": [
41
+ {
42
+ "question": "How is sgtitle different from title?",
43
+ "answer": "`title` attaches text to the current axes, so each subplot can have its own panel title. `sgtitle` attaches text to the figure as a whole and is drawn once above all panels. Use `title` for per-panel labels and `sgtitle` for the overall figure heading."
44
+ },
45
+ {
46
+ "question": "Can I update the super title after creating it?",
47
+ "answer": "Yes. `sgtitle` returns a text handle, so you can inspect or update it with `get` and `set`.\n\n```matlab\nh = sgtitle('Initial Title');\nset(h, 'String', 'Updated Title', 'FontWeight', 'bold');\n```"
48
+ },
49
+ {
50
+ "question": "What target objects are supported?",
51
+ "answer": "Phase 1 supports the current figure by default and explicit figure handles through `sgtitle(fig, txt, ...)`. Larger MATLAB target containers such as panels or tabs are tracked separately and are not part of the current implementation."
52
+ }
53
+ ],
54
+ "links": [
55
+ {
56
+ "label": "title",
57
+ "url": "./title"
58
+ },
59
+ {
60
+ "label": "subplot",
61
+ "url": "./subplot"
62
+ },
63
+ {
64
+ "label": "figure",
65
+ "url": "./figure"
66
+ },
67
+ {
68
+ "label": "get",
69
+ "url": "./get"
70
+ },
71
+ {
72
+ "label": "set",
73
+ "url": "./set"
74
+ },
75
+ {
76
+ "label": "Styling plots and axes",
77
+ "url": "/docs/plotting/styling-plots-and-axes"
78
+ },
79
+ {
80
+ "label": "Plot replay and export",
81
+ "url": "/docs/plotting/plot-replay-and-export"
82
+ },
83
+ {
84
+ "label": "Complete plotting guide",
85
+ "url": "/blog/matlab-plotting-guide"
86
+ }
87
+ ],
88
+ "source": {
89
+ "label": "`crates/runmat-runtime/src/builtins/plotting/ops/sgtitle.rs`",
90
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/plotting/ops/sgtitle.rs"
91
+ },
92
+ "key": "sgtitle",
93
+ "slug": "sgtitle",
94
+ "categoryPath": [
95
+ "plotting"
96
+ ]
97
+ };
98
+ export default builtinDoc;
99
+ //# sourceMappingURL=sgtitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sgtitle.js","sourceRoot":"","sources":["../../../src/generated/builtins/sgtitle.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,aAAa;QACb,eAAe;QACf,cAAc;QACd,gBAAgB;KACjB;IACD,SAAS,EAAE,qFAAqF;IAChG,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,oCAAoC;KAC7C;IACD,aAAa,EAAE,sVAAsV;IACrW,WAAW,EAAE;QACX,+FAA+F;QAC/F,wFAAwF;QACxF,+GAA+G;QAC/G,4JAA4J;KAC7J;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,0CAA0C;YACzD,OAAO,EAAE,oNAAoN;SAC9N;QACD;YACE,aAAa,EAAE,8DAA8D;YAC7E,OAAO,EAAE,wKAAwK;YACjL,QAAQ,EAAE,mBAAmB;SAC9B;QACD;YACE,aAAa,EAAE,kCAAkC;YACjD,OAAO,EAAE,uJAAuJ;SACjK;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,sCAAsC;YAClD,QAAQ,EAAE,8PAA8P;SACzQ;QACD;YACE,UAAU,EAAE,iDAAiD;YAC7D,QAAQ,EAAE,wMAAwM;SACnN;QACD;YACE,UAAU,EAAE,oCAAoC;YAChD,QAAQ,EAAE,4OAA4O;SACvP;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shading.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/shading.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA2DjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"shading.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/shading.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAyFjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -32,6 +32,20 @@ const builtinDoc = {
32
32
  "input": "[X, Y] = meshgrid(linspace(-3, 3, 40), linspace(-3, 3, 40));\nZ = sin(X) .* cos(Y);\nsubplot(1, 2, 1);\nsurf(X, Y, Z);\nshading flat;\nsubplot(1, 2, 2);\nsurf(X, Y, Z);\nshading faceted;"
33
33
  }
34
34
  ],
35
+ "faqs": [
36
+ {
37
+ "question": "What's the difference between interp, flat, and faceted shading?",
38
+ "answer": "`flat` fills each face with a single color (the value at one vertex). `interp` smoothly interpolates color across each face, producing a continuous gradient. `faceted` is like `flat` but with visible black edge lines between faces — this is the default `surf` appearance."
39
+ },
40
+ {
41
+ "question": "When should I use shading interp vs faceted?",
42
+ "answer": "Use `interp` when you want a smooth, publication-quality surface without visible grid edges — good for dense meshes or photorealistic renders. Use `faceted` (the default) when you want to see the mesh structure, which helps during debugging or when the grid resolution matters to the reader."
43
+ },
44
+ {
45
+ "question": "Does shading affect mesh plots or just surf?",
46
+ "answer": "It applies to both `surf` and `mesh` (and their variants like `surfc`, `meshc`). On a `mesh` plot the effect is most visible in how face colors are computed — `interp` smooths them, `flat` locks each face to one value. Edge visibility is controlled separately."
47
+ }
48
+ ],
35
49
  "links": [
36
50
  {
37
51
  "label": "surf",
@@ -48,6 +62,22 @@ const builtinDoc = {
48
62
  {
49
63
  "label": "colorbar",
50
64
  "url": "./colorbar"
65
+ },
66
+ {
67
+ "label": "Choosing the right plot type",
68
+ "url": "/docs/plotting/choosing-the-right-plot-type"
69
+ },
70
+ {
71
+ "label": "Styling plots and axes",
72
+ "url": "/docs/plotting/styling-plots-and-axes"
73
+ },
74
+ {
75
+ "label": "Plot replay and export",
76
+ "url": "/docs/plotting/plot-replay-and-export"
77
+ },
78
+ {
79
+ "label": "Complete plotting guide",
80
+ "url": "/blog/matlab-plotting-guide"
51
81
  }
52
82
  ],
53
83
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"shading.js","sourceRoot":"","sources":["../../../src/generated/builtins/shading.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,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;QACd,gBAAgB;KACjB;IACD,SAAS,EAAE,yFAAyF;IACpG,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,0BAA0B;KACnC;IACD,aAAa,EAAE,iWAAiW;IAChX,WAAW,EAAE;QACX,gDAAgD;QAChD,mFAAmF;QACnF,0DAA0D;QAC1D,4EAA4E;KAC7E;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,yCAAyC;YACxD,OAAO,EAAE,sHAAsH;SAChI;QACD;YACE,aAAa,EAAE,kDAAkD;YACjE,OAAO,EAAE,4LAA4L;SACtM;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,wGAAwG;KAChH;IACD,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"shading.js","sourceRoot":"","sources":["../../../src/generated/builtins/shading.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,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;QACd,gBAAgB;KACjB;IACD,SAAS,EAAE,yFAAyF;IACpG,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,0BAA0B;KACnC;IACD,aAAa,EAAE,iWAAiW;IAChX,WAAW,EAAE;QACX,gDAAgD;QAChD,mFAAmF;QACnF,0DAA0D;QAC1D,4EAA4E;KAC7E;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,yCAAyC;YACxD,OAAO,EAAE,sHAAsH;SAChI;QACD;YACE,aAAa,EAAE,kDAAkD;YACjE,OAAO,EAAE,4LAA4L;SACtM;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,kEAAkE;YAC9E,QAAQ,EAAE,iRAAiR;SAC5R;QACD;YACE,UAAU,EAAE,8CAA8C;YAC1D,QAAQ,EAAE,qSAAqS;SAChT;QACD;YACE,UAAU,EAAE,8CAA8C;YAC1D,QAAQ,EAAE,sQAAsQ;SACjR;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;QACD;YACE,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,YAAY;SACpB;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,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sortrows.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/sortrows.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAuMjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"sortrows.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/sortrows.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA2NjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -135,6 +135,14 @@ const builtinDoc = {
135
135
  {
136
136
  "question": "Is sortrows a stable sort?",
137
137
  "answer": "Yes. `sortrows` uses a stable sorting algorithm, meaning rows with equal sort keys retain their original relative order."
138
+ },
139
+ {
140
+ "question": "Is there a `sortrows` equivalent in NumPy or pandas?",
141
+ "answer": "— In pandas use `df.sort_values(by=['col1', 'col2'], ascending=[True, False])`. In NumPy there is no direct `sortrows`, but `A[np.lexsort(A.T[::-1])]` sorts rows lexicographically (NumPy's `lexsort` reads its keys in reverse priority, so the `[::-1]` restores MATLAB's left-to-right order). For descending columns, negate the corresponding key: `np.lexsort([-A[:, 1], A[:, 0]])`."
142
+ },
143
+ {
144
+ "question": "How do I sort by multiple columns with different directions?",
145
+ "answer": "— Pass a signed column vector as the second argument. Positive entries sort ascending, negative entries sort descending. For example, `sortrows(A, [1 -2])` sorts column `1` ascending and column `2` descending, and `sortrows(A, [3 -1 2])` orders by column `3` ascending, column `1` descending, then column `2` ascending as a tiebreaker. You can also write `sortrows(A, [1 2], {'ascend','descend'})` for the equivalent name-based form."
138
146
  }
139
147
  ],
140
148
  "links": [
@@ -193,6 +201,18 @@ const builtinDoc = {
193
201
  "Name-value options that the provider does not advertize fall back automatically; callers do not need to special-case GPU vs CPU execution.",
194
202
  "The permutation indices are emitted as double-precision column vectors so they can be reused directly for MATLAB-style indexing."
195
203
  ],
204
+ "syntax": {
205
+ "example": {
206
+ "description": "Syntax",
207
+ "input": "B = sortrows(A)\nB = sortrows(A, column)\nB = sortrows(A, column, direction)\n[B, index] = sortrows(___)"
208
+ },
209
+ "points": [
210
+ "`A` is the data to sort — typically a numeric or character matrix. Tables and timetables are also accepted by MATLAB's `sortrows` API (RunMat currently supports matrix and char-array inputs fully).",
211
+ "`column` selects the sort keys. It can be a single column index or a vector of indices; negative entries sort that column in descending order (for example, `[1 -3]` sorts ascending by column `1` then descending by column `3`).",
212
+ "`direction` is an optional `'ascend'` or `'descend'` string, or a cell array of strings matching `column` entry-for-entry. It can be combined with signed `column` vectors to override per-column directions.",
213
+ "`index` is the optional second output: a row-permutation vector such that `B = A(index, :)`. Use it to reorder paired arrays or to undo the sort."
214
+ ]
215
+ },
196
216
  "key": "sortrows",
197
217
  "slug": "sortrows",
198
218
  "categoryPath": [
@@ -1 +1 @@
1
- {"version":3,"file":"sortrows.js","sourceRoot":"","sources":["../../../src/generated/builtins/sortrows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sortrows.js","sourceRoot":"","sources":["../../../src/generated/builtins/sortrows.ts"],"names":[],"mappings":"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"}
@@ -65,8 +65,8 @@ const builtinDoc = {
65
65
  },
66
66
  {
67
67
  "description": "Split Each Row Of A Character Array",
68
- "input": "rows = char(\"GPU Accelerate\", \"Ignition Interpreter\");\nresult = split(rows)",
69
- "output": "result = 2×2 string\n \"GPU\" \"Accelerate\"\n \"Ignition\" \"Interpreter\""
68
+ "input": "rows = char(\"GPU Accelerate\", \"VM Interpreter\");\nresult = split(rows)",
69
+ "output": "result = 2×2 string\n \"GPU\" \"Accelerate\"\n \"VM\" \"Interpreter\""
70
70
  },
71
71
  {
72
72
  "description": "Split Elements Of A Cell Array",
@@ -1 +1 @@
1
- {"version":3,"file":"split.js","sourceRoot":"","sources":["../../../src/generated/builtins/split.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"split.js","sourceRoot":"","sources":["../../../src/generated/builtins/split.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,mBAAmB;IAC/B,UAAU,EAAE;QACV,OAAO;QACP,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,qBAAqB;QACrB,oBAAoB;KACrB;IACD,SAAS,EAAE,oFAAoF;IAC/F,YAAY,EAAE;QACZ,sDAAsD;KACvD;IACD,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,6FAA6F;KACvG;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,2EAA2E;KAC3F;IACD,aAAa,EAAE,6WAA6W;IAC5X,WAAW,EAAE;QACX,4JAA4J;QAC5J,uQAAuQ;QACvQ,2MAA2M;QAC3M,uGAAuG;QACvG,2RAA2R;QAC3R,6CAA6C;KAC9C;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,8BAA8B;YAC7C,OAAO,EAAE,2DAA2D;YACpE,QAAQ,EAAE,sEAAsE;SACjF;QACD;YACE,aAAa,EAAE,yCAAyC;YACxD,OAAO,EAAE,yDAAyD;YAClE,QAAQ,EAAE,6DAA6D;SACxE;QACD;YACE,aAAa,EAAE,kCAAkC;YACjD,OAAO,EAAE,wFAAwF;YACjG,QAAQ,EAAE,sEAAsE;SACjF;QACD;YACE,aAAa,EAAE,0DAA0D;YACzE,OAAO,EAAE,wFAAwF;YACjG,QAAQ,EAAE,8DAA8D;SACzE;QACD;YACE,aAAa,EAAE,qCAAqC;YACpD,OAAO,EAAE,4EAA4E;YACrF,QAAQ,EAAE,gGAAgG;SAC3G;QACD;YACE,aAAa,EAAE,gCAAgC;YAC/C,OAAO,EAAE,qEAAqE;YAC9E,QAAQ,EAAE,iFAAiF;SAC5F;QACD;YACE,aAAa,EAAE,8BAA8B;YAC7C,OAAO,EAAE,yFAAyF;YAClG,QAAQ,EAAE,sIAAsI;SACjJ;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,8CAA8C;YAC1D,QAAQ,EAAE,yKAAyK;SACpL;QACD;YACE,UAAU,EAAE,iDAAiD;YAC7D,QAAQ,EAAE,oKAAoK;SAC/K;QACD;YACE,UAAU,EAAE,oDAAoD;YAChE,QAAQ,EAAE,iMAAiM;SAC5M;QACD;YACE,UAAU,EAAE,4CAA4C;YACxD,QAAQ,EAAE,uKAAuK;SAClL;QACD;YACE,UAAU,EAAE,0CAA0C;YACtD,QAAQ,EAAE,8HAA8H;SACzI;QACD;YACE,UAAU,EAAE,iCAAiC;YAC7C,QAAQ,EAAE,wHAAwH;SACnI;QACD;YACE,UAAU,EAAE,kDAAkD;YAC9D,QAAQ,EAAE,wJAAwJ;SACnK;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,SAAS;SACjB;QACD;YACE,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,gBAAgB;SACxB;QACD;YACE,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,kBAAkB;SAC1B;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,iEAAiE;QAC1E,KAAK,EAAE,8GAA8G;KACtH;IACD,eAAe,EAAE,iOAAiO;IAClP,cAAc,EAAE;QACd,qQAAqQ;KACtQ;IACD,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,cAAc,EAAE;QACd,SAAS;QACT,WAAW;KACZ;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stairs.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/stairs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAoFjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"stairs.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/stairs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAwHjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -11,6 +11,7 @@ const builtinDoc = {
11
11
  "matlab stairs"
12
12
  ],
13
13
  "summary": "Create step plots for sampled signals, piecewise-constant data, and MATLAB `stairs` workflows.",
14
+ "hero_image": "https://web.runmatstatic.com/builtin-image/runmat-matlab-plot-stairs-piecewise-constant-step.webp",
14
15
  "gpu_support": {
15
16
  "elementwise": false,
16
17
  "reduction": false,
@@ -51,6 +52,25 @@ const builtinDoc = {
51
52
  {
52
53
  "description": "Style a stairs object and label it for the legend",
53
54
  "input": "h = stairs(0:4, [1 2 2 3 5]);\nset(h, 'Color', 'm', 'LineWidth', 2, 'DisplayName', 'sampled signal');\nlegend;"
55
+ },
56
+ {
57
+ "description": "Piecewise-constant step response",
58
+ "input": "t = 0:0.5:10;\ny = 1 - exp(-0.5*t);\n\nh = stairs(t, y);\nset(h, 'LineWidth', 2);\ntitle('First-Order Step Response');\nxlabel('Time (s)');\nylabel('Output');\ngrid on;",
59
+ "image_webp": "https://web.runmatstatic.com/builtin-image/runmat-matlab-plot-stairs-piecewise-constant-step.webp"
60
+ }
61
+ ],
62
+ "faqs": [
63
+ {
64
+ "question": "When should I use stairs instead of plot?",
65
+ "answer": "`stairs` draws piecewise-constant steps between points, while `plot` linearly interpolates. Use `stairs` when your data is held constant between samples—DAC output, quantized signals, sample-and-hold systems, or any situation where the value doesn't change smoothly between observations."
66
+ },
67
+ {
68
+ "question": "How do I visualize a digital signal with stairs?",
69
+ "answer": "Pass your time vector and signal values directly. The staircase rendering naturally represents digital/discrete-time signals where values snap between levels.\n\n```matlab\nt = 0:0.01:1;\nsignal = double(square(2*pi*5*t) > 0);\nstairs(t, signal);\nylim([-0.2 1.2]);\n```\n\nThis avoids the misleading diagonal transitions that `plot` would draw between high and low states."
70
+ },
71
+ {
72
+ "question": "Can I add markers to a stairs plot?",
73
+ "answer": "Yes. Set the `'Marker'` property on the returned handle, just like you would with `plot`.\n\n```matlab\nh = stairs(0:4, [1 3 2 4 1]);\nset(h, 'Marker', 'o', 'MarkerSize', 6);\n```\n\nMarkers appear at each data point (the step corners), not along the flat segments."
54
74
  }
55
75
  ],
56
76
  "links": [
@@ -73,6 +93,22 @@ const builtinDoc = {
73
93
  {
74
94
  "label": "set",
75
95
  "url": "./set"
96
+ },
97
+ {
98
+ "label": "Choosing the right plot type",
99
+ "url": "/docs/plotting/choosing-the-right-plot-type"
100
+ },
101
+ {
102
+ "label": "Styling plots and axes",
103
+ "url": "/docs/plotting/styling-plots-and-axes"
104
+ },
105
+ {
106
+ "label": "Plot replay and export",
107
+ "url": "/docs/plotting/plot-replay-and-export"
108
+ },
109
+ {
110
+ "label": "Complete plotting guide",
111
+ "url": "/blog/matlab-plotting-guide"
76
112
  }
77
113
  ],
78
114
  "source": {
@@ -1 +1 @@
1
- {"version":3,"file":"stairs.js","sourceRoot":"","sources":["../../../src/generated/builtins/stairs.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,gBAAgB;QAChB,eAAe;KAChB;IACD,SAAS,EAAE,gGAAgG;IAC3G,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,oGAAoG;KAC9G;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,mCAAmC;KAC5C;IACD,aAAa,EAAE,iTAAiT;IAChU,WAAW,EAAE;QACX,kGAAkG;QAClG,sEAAsE;QACtE,6GAA6G;QAC7G,sGAAsG;QACtG,sGAAsG;KACvG;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,iCAAiC;YAChD,OAAO,EAAE,+CAA+C;SACzD;QACD;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,wBAAwB;SAClC;QACD;YACE,aAAa,EAAE,mDAAmD;YAClE,OAAO,EAAE,gHAAgH;SAC1H;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,6DAA6D;QACtE,KAAK,EAAE,0GAA0G;KAClH;IACD,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"stairs.js","sourceRoot":"","sources":["../../../src/generated/builtins/stairs.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,gBAAgB;QAChB,eAAe;KAChB;IACD,SAAS,EAAE,gGAAgG;IAC3G,YAAY,EAAE,mGAAmG;IACjH,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,oGAAoG;KAC9G;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,mCAAmC;KAC5C;IACD,aAAa,EAAE,iTAAiT;IAChU,WAAW,EAAE;QACX,kGAAkG;QAClG,sEAAsE;QACtE,6GAA6G;QAC7G,sGAAsG;QACtG,sGAAsG;KACvG;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,iCAAiC;YAChD,OAAO,EAAE,+CAA+C;SACzD;QACD;YACE,aAAa,EAAE,mCAAmC;YAClD,OAAO,EAAE,wBAAwB;SAClC;QACD;YACE,aAAa,EAAE,mDAAmD;YAClE,OAAO,EAAE,gHAAgH;SAC1H;QACD;YACE,aAAa,EAAE,kCAAkC;YACjD,OAAO,EAAE,0KAA0K;YACnL,YAAY,EAAE,mGAAmG;SAClH;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,2CAA2C;YACvD,QAAQ,EAAE,iSAAiS;SAC5S;QACD;YACE,UAAU,EAAE,kDAAkD;YAC9D,QAAQ,EAAE,uXAAuX;SAClY;QACD;YACE,UAAU,EAAE,qCAAqC;YACjD,QAAQ,EAAE,2QAA2Q;SACtR;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;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,6DAA6D;QACtE,KAAK,EAAE,0GAA0G;KAClH;IACD,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE;QACd,UAAU;KACX;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"std.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/std.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAmMjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"std.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/std.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UAwOjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -109,6 +109,18 @@ const builtinDoc = {
109
109
  {
110
110
  "question": "Are complex inputs supported?",
111
111
  "answer": "Not yet. RunMat currently requires real inputs for `std`. Convert complex data to magnitude or separate real/imaginary parts before calling the builtin."
112
+ },
113
+ {
114
+ "question": "What does `std` compute by default?",
115
+ "answer": "— By default MATLAB's `std` returns the **sample** standard deviation, dividing by `n - 1` (Bessel's correction). This differs from NumPy's `np.std`, which defaults to the population formula (dividing by `n`, i.e. `ddof = 0`). To match NumPy's default in MATLAB use `std(A, 1)`; to match MATLAB's default in NumPy use `np.std(A, ddof=1)`."
116
+ },
117
+ {
118
+ "question": "How do I compute population standard deviation (divide by `n`) in MATLAB?",
119
+ "answer": "— Pass `1` as the normalisation flag: `std(A, 1)` divides by `n` instead of `n - 1`. The same flag works with the other signatures: `std(A, 1, dim)`, `std(A, 1, 'all')`, or `std(A, 1, vecdim)`. Use `std(A, 0)` or `std(A, [])` to keep the default sample behaviour."
120
+ },
121
+ {
122
+ "question": "How do I handle `NaN` values when computing `std`?",
123
+ "answer": "— Add `'omitnan'` as the final argument to skip missing values: `std(A, 0, 1, 'omitnan')` (or `std(A, 'omitnan')` if you accept the default normalisation and dimension). The default `'includenan'` propagates a single `NaN` to the corresponding output slice. If an entire slice is `NaN` under `'omitnan'`, the result for that slice is `NaN`."
112
124
  }
113
125
  ],
114
126
  "links": [
@@ -189,6 +201,31 @@ const builtinDoc = {
189
201
  "gpu_behavior": [
190
202
  "When RunMat Accelerate is active, device-resident tensors remain on the GPU whenever the provider implements the relevant hooks. Providers that expose `reduce_std_dim`/`reduce_std` execute the reduction in-place on the device; the default WGPU backend currently supports two-dimensional inputs, single-axis reductions, and `'includenan'` only. Whenever `'omitnan'`, multi-axis reductions, or unsupported shapes are requested, RunMat transparently gathers the data to the host, computes the result there, and then applies the requested output template (`'native'`, `'like'`) before returning."
191
203
  ],
204
+ "syntax": {
205
+ "example": {
206
+ "description": "Syntax",
207
+ "input": "S = std(A)\nS = std(A, w)\nS = std(A, w, dim)\nS = std(A, w, \"all\")\nS = std(A, w, vecdim)\nS = std(___, nanflag)"
208
+ },
209
+ "points": [
210
+ "`A` is the numeric array to summarise. Logical inputs are promoted to double; complex inputs are not supported yet.",
211
+ "`w` is the normalisation flag: `0` (or `[]`) divides by `n - 1` for the sample / Bessel-corrected estimator (MATLAB's default), while `1` divides by `n` for the population estimator. MATLAB also documents `w` as a weight vector; weighted standard deviations are reported as not-yet-implemented in RunMat.",
212
+ "`dim` picks the dimension to reduce (default: the first non-singleton dimension). Use `\"all\"` to collapse every dimension into a scalar, or `vecdim` (a vector such as `[1 3]`) to reduce several axes in one call.",
213
+ "`nanflag` is an optional `'omitnan'` or `'includenan'` token (default `'includenan'`) controlling how `NaN` values are treated.",
214
+ "Returns `S`, the standard deviation, with the reduced dimension collapsed to length `1`."
215
+ ]
216
+ },
217
+ "validation": {
218
+ "summary": "`std` uses the shared reduction infrastructure in `runmat-runtime`, which implements a two-pass Welford-style algorithm on the CPU and a matching reduction kernel on the GPU. The reduction-parity test suite runs the same inputs through both paths and asserts agreement within tolerance on every merge.",
219
+ "implementation": {
220
+ "label": "crates/runmat-runtime/src/builtins/math/reduction/std.rs",
221
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/src/builtins/math/reduction/std.rs"
222
+ },
223
+ "parity_test": {
224
+ "label": "reduction_parity.rs",
225
+ "url": "https://github.com/runmat-org/runmat/blob/main/crates/runmat-runtime/tests/reduction_parity.rs"
226
+ },
227
+ "tolerance": "1e-9 (f64), 1e-3 (f32)"
228
+ },
192
229
  "key": "std",
193
230
  "slug": "std",
194
231
  "categoryPath": [
@@ -1 +1 @@
1
- {"version":3,"file":"std.js","sourceRoot":"","sources":["../../../src/generated/builtins/std.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"std.js","sourceRoot":"","sources":["../../../src/generated/builtins/std.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,uBAAuB;AAIvB,MAAM,UAAU,GAAe;IAC7B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE;QACV,KAAK;QACL,oBAAoB;QACpB,YAAY;QACZ,KAAK;QACL,SAAS;QACT,KAAK;QACL,MAAM;QACN,QAAQ;KACT;IACD,SAAS,EAAE,kGAAkG;IAC7G,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE;QACb,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE;YACZ,KAAK;YACL,KAAK;SACN;QACD,cAAc,EAAE,QAAQ;QACxB,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,uCAAuC;QAC/C,aAAa,EAAE,mEAAmE;QAClF,KAAK,EAAE,yEAAyE;KACjF;IACD,aAAa,EAAE,kLAAkL;IACjM,WAAW,EAAE;QACX,+GAA+G;QAC/G,kJAAkJ;QAClJ,0YAA0Y;QAC1Y,oGAAoG;QACpG,6UAA6U;QAC7U,iHAAiH;QACjH,oHAAoH;QACpH,+DAA+D;QAC/D,uPAAuP;KACxP;IACD,UAAU,EAAE;QACV;YACE,aAAa,EAAE,uCAAuC;YACtD,OAAO,EAAE,mFAAmF;YAC5F,QAAQ,EAAE,YAAY;SACvB;QACD;YACE,aAAa,EAAE,8CAA8C;YAC7D,OAAO,EAAE,+EAA+E;YACxF,QAAQ,EAAE,sBAAsB;SACjC;QACD;YACE,aAAa,EAAE,oCAAoC;YACnD,OAAO,EAAE,uDAAuD;YAChE,QAAQ,EAAE,kBAAkB;SAC7B;QACD;YACE,aAAa,EAAE,qCAAqC;YACpD,OAAO,EAAE,0GAA0G;YACnH,QAAQ,EAAE,4BAA4B;SACvC;QACD;YACE,aAAa,EAAE,qBAAqB;YACpC,OAAO,EAAE,2DAA2D;YACpE,QAAQ,EAAE,2BAA2B;SACtC;QACD;YACE,aAAa,EAAE,qCAAqC;YACpD,OAAO,EAAE,mIAAmI;SAC7I;QACD;YACE,aAAa,EAAE,+DAA+D;YAC9E,OAAO,EAAE,yCAAyC;YAClD,QAAQ,EAAE,2BAA2B;SACtC;KACF;IACD,MAAM,EAAE;QACN;YACE,UAAU,EAAE,mDAAmD;YAC/D,QAAQ,EAAE,kLAAkL;SAC7L;QACD;YACE,UAAU,EAAE,yCAAyC;YACrD,QAAQ,EAAE,qIAAqI;SAChJ;QACD;YACE,UAAU,EAAE,6CAA6C;YACzD,QAAQ,EAAE,+JAA+J;SAC1K;QACD;YACE,UAAU,EAAE,qCAAqC;YACjD,QAAQ,EAAE,2WAA2W;SACtX;QACD;YACE,UAAU,EAAE,gEAAgE;YAC5E,QAAQ,EAAE,gHAAgH;SAC3H;QACD;YACE,UAAU,EAAE,+BAA+B;YAC3C,QAAQ,EAAE,0JAA0J;SACrK;QACD;YACE,UAAU,EAAE,qCAAqC;YACjD,QAAQ,EAAE,oVAAoV;SAC/V;QACD;YACE,UAAU,EAAE,2EAA2E;YACvF,QAAQ,EAAE,yQAAyQ;SACpR;QACD;YACE,UAAU,EAAE,oDAAoD;YAChE,QAAQ,EAAE,sVAAsV;SACjW;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,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;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;YACE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;SACnB;QACD;YACE,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,UAAU;SAClB;QACD;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,MAAM;YACf,KAAK,EAAE,QAAQ;SAChB;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,gQAAgQ;IACjR,cAAc,EAAE;QACd,ilBAAilB;KACllB;IACD,QAAQ,EAAE;QACR,SAAS,EAAE;YACT,aAAa,EAAE,QAAQ;YACvB,OAAO,EAAE,qHAAqH;SAC/H;QACD,QAAQ,EAAE;YACR,qHAAqH;YACrH,kTAAkT;YAClT,uNAAuN;YACvN,iIAAiI;YACjI,0FAA0F;SAC3F;KACF;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,+SAA+S;QAC1T,gBAAgB,EAAE;YAChB,OAAO,EAAE,0DAA0D;YACnE,KAAK,EAAE,yGAAyG;SACjH;QACD,aAAa,EAAE;YACb,OAAO,EAAE,qBAAqB;YAC9B,KAAK,EAAE,gGAAgG;SACxG;QACD,WAAW,EAAE,wBAAwB;KACtC;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,cAAc,EAAE;QACd,MAAM;QACN,WAAW;KACZ;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stem.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/stem.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA2FjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"stem.d.ts","sourceRoot":"","sources":["../../../src/generated/builtins/stem.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,UA+HjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -11,6 +11,7 @@ const builtinDoc = {
11
11
  "matlab stem"
12
12
  ],
13
13
  "summary": "Create stem plots for discrete signals, sequence visualization, and MATLAB `stem` workflows.",
14
+ "hero_image": "https://web.runmatstatic.com/builtin-image/runmat-matlab-plot-stem-discrete-sampled-signal.webp",
14
15
  "gpu_support": {
15
16
  "elementwise": false,
16
17
  "reduction": false,
@@ -53,6 +54,25 @@ const builtinDoc = {
53
54
  "description": "Inspect a stem handle after plotting",
54
55
  "input": "h = stem(1:5, [2 1 3 2 4]);\nget(h, 'Type')",
55
56
  "output": "ans =\n 'stem'"
57
+ },
58
+ {
59
+ "description": "Discrete sampled signal",
60
+ "input": "n = 0:31;\nx = sin(2*pi*n/16) .* (0.9 .^ n);\n\nstem(n, x);\ntitle('Sampled Decaying Sinusoid');\nxlabel('Sample index n');\nylabel('x[n]');\ngrid on;",
61
+ "image_webp": "https://web.runmatstatic.com/builtin-image/runmat-matlab-plot-stem-discrete-sampled-signal.webp"
62
+ }
63
+ ],
64
+ "faqs": [
65
+ {
66
+ "question": "When should I use stem instead of plot?",
67
+ "answer": "`stem` is designed for discrete sequences where each sample is an independent value at a specific index—think impulse responses, sampled signals, or coefficient arrays. `plot` connects points with a continuous line, which implies interpolation between samples. If your data is inherently discrete and the gaps between samples matter, `stem` communicates that visually."
68
+ },
69
+ {
70
+ "question": "How do I customize the markers on a stem plot?",
71
+ "answer": "Use the handle returned by `stem` with `set` to change marker shape, size, fill, and color.\n\n```matlab\nh = stem(1:8, [3 1 4 1 5 9 2 6]);\nset(h, 'Marker', 's', 'MarkerSize', 8, 'Filled', true, 'MarkerFaceColor', 'r');\n```\n\nMarker properties go through the same shared property model as `plot` and `scatter`, so the same property names work."
72
+ },
73
+ {
74
+ "question": "Can I change the baseline of a stem plot?",
75
+ "answer": "Yes. Set the `'BaseValue'` property on the stem handle to shift the baseline from the default of 0.\n\n```matlab\nh = stem(1:5, [2 4 1 3 5]);\nset(h, 'BaseValue', 2);\n```\n\nStems will then extend from y=2 to each data point rather than from y=0."
56
76
  }
57
77
  ],
58
78
  "links": [
@@ -75,6 +95,22 @@ const builtinDoc = {
75
95
  {
76
96
  "label": "set",
77
97
  "url": "./set"
98
+ },
99
+ {
100
+ "label": "Choosing the right plot type",
101
+ "url": "/docs/plotting/choosing-the-right-plot-type"
102
+ },
103
+ {
104
+ "label": "Styling plots and axes",
105
+ "url": "/docs/plotting/styling-plots-and-axes"
106
+ },
107
+ {
108
+ "label": "Plot replay and export",
109
+ "url": "/docs/plotting/plot-replay-and-export"
110
+ },
111
+ {
112
+ "label": "Complete plotting guide",
113
+ "url": "/blog/matlab-plotting-guide"
78
114
  }
79
115
  ],
80
116
  "source": {