{"route":"/en-US-v0.13.1/reference/math/mat/","title":"Matrix","description":"Documentation for the `mat` function.","part":null,"outline":[{"id":"summary","name":"Summary","children":[]},{"id":"example","name":"Example","children":[]},{"id":"parameters","name":"Parameters","children":[{"id":"parameters-delim","name":"delim","children":[]},{"id":"parameters-align","name":"align","children":[]},{"id":"parameters-augment","name":"augment","children":[]},{"id":"parameters-gap","name":"gap","children":[]},{"id":"parameters-row-gap","name":"row-gap","children":[]},{"id":"parameters-column-gap","name":"column-gap","children":[]},{"id":"parameters-rows","name":"rows","children":[]}]}],"body":{"kind":"func","content":{"path":["math"],"name":"mat","title":"Matrix","keywords":[],"oneliner":"A matrix.","element":true,"contextual":false,"deprecation":null,"details":"<p>A matrix.</p>\n<p>The elements of a row should be separated by commas, while the rows\nthemselves should be separated by semicolons. The semicolon syntax merges\npreceding arguments separated by commas into an array. You can also use this\nspecial syntax of math function calls to define custom functions that take\n2D data.</p>\n<p>Content in cells can be aligned with the <a href=\"/en-US-v0.13.1/reference/math/mat/#parameters-align\"><code>align</code></a>\nparameter, or content in cells that are in the same row can be aligned with\nthe <code>&amp;</code> symbol.</p>\n<h2 id=\"example\">Example</h2>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>\n  1<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">,</span> <span class=\"typ-escape\">...</span><span class=\"typ-punct\">,</span> 10<span class=\"typ-punct\">;</span>\n  2<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">,</span> <span class=\"typ-escape\">...</span><span class=\"typ-punct\">,</span> 10<span class=\"typ-punct\">;</span>\n  <span class=\"typ-pol\">dots</span><span class=\"typ-punct\">.</span><span class=\"typ-pol\">v</span><span class=\"typ-punct\">,</span> <span class=\"typ-pol\">dots</span><span class=\"typ-punct\">.</span><span class=\"typ-pol\">v</span><span class=\"typ-punct\">,</span> <span class=\"typ-pol\">dots</span><span class=\"typ-punct\">.</span><span class=\"typ-pol\">down</span><span class=\"typ-punct\">,</span> <span class=\"typ-pol\">dots</span><span class=\"typ-punct\">.</span><span class=\"typ-pol\">v</span><span class=\"typ-punct\">;</span>\n  10<span class=\"typ-punct\">,</span> 10<span class=\"typ-punct\">,</span> <span class=\"typ-escape\">...</span><span class=\"typ-punct\">,</span> 10<span class=\"typ-punct\">;</span>\n<span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/ca24a2958190d70441a482b738ddf8f4.png\" alt=\"Preview\"></div></div>","example":null,"self":false,"params":[{"name":"delim","details":"<p>The delimiter to use.</p>\n<p>Can be a single character specifying the left delimiter, in which case\nthe right delimiter is inferred. Otherwise, can be an array containing a\nleft and a right delimiter.</p>","example":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> math<span class=\"typ-punct\">.</span><span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>delim<span class=\"typ-punct\">:</span> <span class=\"typ-str\">&quot;[&quot;</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>1<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">;</span> 3<span class=\"typ-punct\">,</span> 4<span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/a90805f7e282235aafa3bde73f34aa1.png\" alt=\"Preview\"></div></div>","types":["none","str","array","symbol"],"strings":[],"default":"<code><span class=\"typ-punct\">(</span><span class=\"typ-str\">&quot;(&quot;</span><span class=\"typ-punct\">,</span> <span class=\"typ-str\">&quot;)&quot;</span><span class=\"typ-punct\">)</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"align","details":"<p>The horizontal alignment that each cell should have.</p>","example":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> math<span class=\"typ-punct\">.</span><span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>align<span class=\"typ-punct\">:</span> right<span class=\"typ-punct\">)</span>\n<span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span><span class=\"typ-escape\">-</span>1<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">;</span> 1<span class=\"typ-punct\">,</span> <span class=\"typ-escape\">-</span>1<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">;</span> 1<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">,</span> <span class=\"typ-escape\">-</span>1<span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/5f741736d817a8455441fbc945038f47.png\" alt=\"Preview\"></div></div>","types":["alignment"],"strings":[],"default":"<code>center</code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"augment","details":"<p>Draws augmentation lines in a matrix.</p>\n<ul>\n<li><code><span class=\"typ-key\">none</span></code>: No lines are drawn.</li>\n<li>A single number: A vertical augmentation line is drawn\nafter the specified column number. Negative numbers start from the end.</li>\n<li>A dictionary: With a dictionary, multiple augmentation lines can be\ndrawn both horizontally and vertically. Additionally, the style of the\nlines can be set. The dictionary can contain the following keys:\n<ul>\n<li><code>hline</code>: The offsets at which horizontal lines should be drawn.\nFor example, an offset of <code>2</code> would result in a horizontal line\nbeing drawn after the second row of the matrix. Accepts either an\ninteger for a single line, or an array of integers\nfor multiple lines. Like for a single number, negative numbers start from the end.</li>\n<li><code>vline</code>: The offsets at which vertical lines should be drawn.\nFor example, an offset of <code>2</code> would result in a vertical line being\ndrawn after the second column of the matrix. Accepts either an\ninteger for a single line, or an array of integers\nfor multiple lines. Like for a single number, negative numbers start from the end.</li>\n<li><code>stroke</code>: How to <a href=\"/en-US-v0.13.1/reference/visualize/stroke/\">stroke</a> the line. If set to <code><span class=\"typ-key\">auto</span></code>,\ntakes on a thickness of 0.05em and square line caps.</li>\n</ul>\n</li>\n</ul>","example":"<div class=\"previewed-code\"><pre><code><span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>1<span class=\"typ-punct\">,</span> 0<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">;</span> 0<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">;</span> augment<span class=\"typ-punct\">:</span> <span class=\"typ-num\">#</span><span class=\"typ-num\">2</span><span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n<span class=\"typ-comment\">// Equivalent to:</span>\n<span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>1<span class=\"typ-punct\">,</span> 0<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">;</span> 0<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">;</span> augment<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span><span class=\"typ-op\">-</span><span class=\"typ-num\">1</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/e228a9d19f69a430344b19c91c98a191.png\" alt=\"Preview\"></div></div><div class=\"previewed-code\"><pre><code><span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>0<span class=\"typ-punct\">,</span> 0<span class=\"typ-punct\">,</span> 0<span class=\"typ-punct\">;</span> 1<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">,</span> 1<span class=\"typ-punct\">;</span> augment<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span>hline<span class=\"typ-punct\">:</span> <span class=\"typ-num\">1</span><span class=\"typ-punct\">,</span> stroke<span class=\"typ-punct\">:</span> <span class=\"typ-num\">2pt</span> <span class=\"typ-op\">+</span> green<span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/dcf1c0269b2f89267e46ab5bdec05de0.png\" alt=\"Preview\"></div></div>","types":["none","int","dictionary"],"strings":[],"default":"<code><span class=\"typ-key\">none</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"gap","details":"<p>The gap between rows and columns.</p>\n<p>This is a shorthand to set <code>row-gap</code> and <code>column-gap</code> to the same value.</p>","example":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> math<span class=\"typ-punct\">.</span><span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>gap<span class=\"typ-punct\">:</span> <span class=\"typ-num\">1em</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>1<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">;</span> 3<span class=\"typ-punct\">,</span> 4<span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/91aca9252744d4fd6539667e70c329c8.png\" alt=\"Preview\"></div></div>","types":["relative"],"strings":[],"default":"<code><span class=\"typ-num\">0%</span> <span class=\"typ-op\">+</span> <span class=\"typ-num\">0pt</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"row-gap","details":"<p>The gap between rows.</p>","example":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> math<span class=\"typ-punct\">.</span><span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>row-gap<span class=\"typ-punct\">:</span> <span class=\"typ-num\">1em</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>1<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">;</span> 3<span class=\"typ-punct\">,</span> 4<span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/60d549f2e0a73efaecf1ed1891621016.png\" alt=\"Preview\"></div></div>","types":["relative"],"strings":[],"default":"<code><span class=\"typ-num\">0%</span> <span class=\"typ-op\">+</span> <span class=\"typ-num\">0.2em</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"column-gap","details":"<p>The gap between columns.</p>","example":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> math<span class=\"typ-punct\">.</span><span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>column-gap<span class=\"typ-punct\">:</span> <span class=\"typ-num\">1em</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-math-delim\">$</span> <span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span>1<span class=\"typ-punct\">,</span> 2<span class=\"typ-punct\">;</span> 3<span class=\"typ-punct\">,</span> 4<span class=\"typ-punct\">)</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/b4a9ab4d1c58c1520bf31ecde2d9d1c9.png\" alt=\"Preview\"></div></div>","types":["relative"],"strings":[],"default":"<code><span class=\"typ-num\">0%</span> <span class=\"typ-op\">+</span> <span class=\"typ-num\">0.5em</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"rows","details":"<p>An array of arrays with the rows of the matrix.</p>","example":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">let</span> data <span class=\"typ-op\">=</span> <span class=\"typ-punct\">(</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">1</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">2</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">3</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">4</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">5</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">6</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-key\">#</span><span class=\"typ-key\">let</span> matrix <span class=\"typ-op\">=</span> math<span class=\"typ-punct\">.</span><span class=\"typ-func\">mat</span><span class=\"typ-punct\">(</span><span class=\"typ-op\">..</span>data<span class=\"typ-punct\">)</span>\n<span class=\"typ-math-delim\">$</span> v <span class=\"typ-escape\">:=</span> <span class=\"typ-pol\">matrix</span> <span class=\"typ-math-delim\">$</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.13.1/assets/37eedc689e05b0f94e76556b52b364f6.png\" alt=\"Preview\"></div></div>","types":["array"],"strings":[],"default":null,"positional":true,"named":false,"required":true,"variadic":true,"settable":false}],"returns":["content"],"scope":[]}}}