UNPKG

qminer

Version:

A C++ based data analytics platform for processing large-scale real-time streams containing structured and unstructured data

1,208 lines (1,206 loc) 71.8 kB
<!doctype html> <html> <head> <meta name="generator" content="JSDoc 3"> <meta charset="utf-8"> <title>Module: la</title> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link href="css/baseline.css" rel="stylesheet"> </head> <body onload="prettyPrint()"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-content"> <a href="index.html" class="jsdoc-navbar-package-name">QMiner JavaScript API v9.4.0</a> </div> </div> </nav> <div id="jsdoc-body-container"> <div id="jsdoc-content"> <div id="jsdoc-content-container"> <div id="jsdoc-main" role="main"> <header class="page-header"> <div class="symbol-detail-labels"><span class="label label-kind">module</span></div> <h1><small></small><span class="symbol-name">la</span></h1> <p class="source-link">Source: <a href="ladoc.js.html#source-line-8">ladoc.<wbr>js:8</a></p> <div class="symbol-description"> <p>Linear algebra module.</p> </div> <section> <h2> Example </h2> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a random matrix var mat &#x3D; new la.Matrix({ rows: 10, cols: 5, random: true }); // create a vector var vec &#x3D; new la.Vector([1, 2, 3, 0, -1]); // multiply the matrix and vector var vec2 &#x3D; mat.multiply(vec); // calculate the svd decomposition of the matrix var svd &#x3D; la.svd(mat, 3);</code></pre> </div> </section> <dl class="dl-compact"> </dl> </header> <section id="summary"> <div class="summary-callout"> <h2 class="summary-callout-heading">Child classes</h2> <div class="summary-content"> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.BoolVector.html">BoolVector([arg])</a></dt> <dd> </dd> <dt><a href="module-la.IntVector.html">IntVector([arg])</a></dt> <dd> </dd> <dt><a href="module-la.Matrix.html">Matrix([arg])</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.SparseMatrix.html">SparseMatrix([arg][, rows])</a></dt> <dd> </dd> <dt><a href="module-la.SparseVector.html">SparseVector([arg][, dim])</a></dt> <dd> </dd> <dt><a href="module-la.StrVector.html">StrVector([arg])</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.Vector.html">Vector([arg])</a></dt> <dd> </dd> </dl> </div> </div> </div> <div class="summary-callout"> <h2 class="summary-callout-heading">Methods</h2> <div class="summary-content"> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.html#.cat">cat(nestedArrMat)</a></dt> <dd> </dd> <dt><a href="module-la.html#.conjgrad">conjgrad(A, b[, x][, verbose])</a></dt> <dd> </dd> <dt><a href="module-la.html#.copyVecToArray">copyVecToArray(vec)</a></dt> <dd> </dd> <dt><a href="module-la.html#.eye">eye(dim)</a></dt> <dd> </dd> <dt><a href="module-la.html#.findMaxIdx">findMaxIdx(X)</a></dt> <dd> </dd> <dt><a href="module-la.html#.inverseSVD">inverseSVD(mat)</a></dt> <dd> </dd> <dt><a href="module-la.html#.ones">ones(dim)</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.html#.pdist2">pdist2(X1, X2)</a></dt> <dd> </dd> <dt><a href="module-la.html#.randi">randi(num[, len])</a></dt> <dd> </dd> <dt><a href="module-la.html#.randn">randn([arg1][, arg2])</a></dt> <dd> </dd> <dt><a href="module-la.html#.randPerm">randPerm(k)</a></dt> <dd> </dd> <dt><a href="module-la.html#.randVariation">randVariation(n, k)</a></dt> <dd> </dd> <dt><a href="module-la.html#.rangeVec">rangeVec(min, max)</a></dt> <dd> </dd> <dt><a href="module-la.html#.sparse">sparse(rows[, cols])</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.html#.speye">speye(dim)</a></dt> <dd> </dd> <dt><a href="module-la.html#.square">square(x)</a></dt> <dd> </dd> <dt><a href="module-la.html#.zeros">zeros(rows[, cols])</a></dt> <dd> </dd> <dt><a href="module-la.html#qr">qr(mat[, tol])</a></dt> <dd> </dd> <dt><a href="module-la.html#svd">svd(mat, k[, json][, callback])</a></dt> <dd> </dd> </dl> </div> </div> </div> <div class="summary-callout"> <h2 class="summary-callout-heading">Abstract types</h2> <div class="summary-content"> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.html#~boolVectorCompareCb">boolVectorCompareCb(arg1, arg2)</a></dt> <dd> </dd> <dt><a href="module-la.html#~intVectorCompareCb">intVectorCompareCb(arg1, arg2)</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.html#~matrixArg">matrixArg</a></dt> <dd> </dd> <dt><a href="module-la.html#~strVectorCompareCb">strVectorCompareCb(arg1, arg2)</a></dt> <dd> </dd> </dl> </div> <div class="summary-column"> <dl class="dl-summary-callout"> <dt><a href="module-la.html#~vectorCompareCb">vectorCompareCb(arg1, arg2)</a></dt> <dd> </dd> </dl> </div> </div> </div> </section> <section> <h2>Classes</h2> <section id='members-links'> <h3><a href="module-la.BoolVector.html">BoolVector</a></h3> <h3><a href="module-la.IntVector.html">IntVector</a></h3> <h3><a href="module-la.Matrix.html">Matrix</a></h3> <h3><a href="module-la.SparseMatrix.html">SparseMatrix</a></h3> <h3><a href="module-la.SparseVector.html">SparseVector</a></h3> <h3><a href="module-la.StrVector.html">StrVector</a></h3> <h3><a href="module-la.Vector.html">Vector</a></h3> </section> <h2>Methods</h2> <section> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".cat"><span class="symbol-name">cat</span><span class="signature"><span class="signature-params">(nestedArrMat)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3> <p>Constructs a matrix by concatenating a double-nested array of matrices.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create four matrices and concatenate (2 block columns, 2 block rows) var la &#x3D; require(&#x27;qminer&#x27;).la; var A &#x3D; new la.Matrix([[1,2], [3,4]]); var B &#x3D; new la.Matrix([[5,6], [7,8]]); var C &#x3D; new la.Matrix([[9,10], [11,12]]); var D &#x3D; new la.Matrix([[13,14], [15,16]]); // create a nested matrix // returns the matrix: // 1 2 5 6 // 3 4 7 8 // 9 10 13 14 // 11 12 15 16 var mat &#x3D; la.cat([[A,B], [C,D]]);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>nestedArrMat</p> </td> <td> <p>Array of Array of <a href="module-la.Matrix.html">module:la.Matrix</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>An array of block rows, where each block row is an array of matrices. For example: <code>[[m_11, m_12], [m_21, m_22]]</code> is used to construct a matrix where the (i,j)-th block submatrix is <code>m_ij</code>.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B Concatenated matrix.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".conjgrad"><span class="symbol-name">conjgrad</span><span class="signature"><span class="signature-params">(A, b[, x][, verbose])</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Vector.html">module:la.Vector</a></span></span></h3> <p>Solves the PSD symmetric system: A x = b, where A is a positive-definite symmetric matrix.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a positive-definite symmetric matrix var vecTemp &#x3D; new la.Vector([1, 2, 3]); var mat &#x3D; vecTemp.diag(); // create the right-hand side vector var vec &#x3D; new la.Vector([0.5, 3, -2]); // solve the PSD symmetric system var x &#x3D; la.conjgrad(mat, vec);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>A</p> </td> <td> <p>(<a href="module-la.Matrix.html">module:la.Matrix</a> or <a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a>)</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The matrix on the left-hand side of the system.</p> </td> </tr> <tr> <td> <p>b</p> </td> <td> <p><a href="module-la.Vector.html">module:la.Vector</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The vector on the right-hand side of the system.</p> </td> </tr> <tr> <td> <p>x</p> </td> <td> <p><a href="module-la.Vector.html">module:la.Vector</a></p> </td> <td> <p>Yes</p> </td> <td> <p>Current solution. Default is a vector of zeros.</p> </td> </tr> <tr> <td> <p>verbose</p> </td> <td> <p>boolean</p> </td> <td> <p>Yes</p> </td> <td> <p>If true, console logs the residuum value.</p> <p>Defaults to <code>false</code>.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.Vector.html">module:la.Vector</a></code>B Solution to the system.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".copyVecToArray"><span class="symbol-name">copyVecToArray</span><span class="signature"><span class="signature-params">(vec)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3> <p>Copies the vector into a JavaScript array of numbers.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a new vector var vec &#x3D; new la.Vector([1, 2, 3]); // create a JavaScript array out of vec var arr &#x3D; la.copyVecToArray(vec); // returns an array [1, 2, 3]</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>vec</p> </td> <td> <p><a href="module-la.Vector.html">module:la.Vector</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Copied vector.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>Array of number</code>B A JavaScript array of numbers.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".eye"><span class="symbol-name">eye</span><span class="signature"><span class="signature-params">(dim)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3> <p>Returns an dense identity matrix.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // generate a dense identity matrix of dimension 5 var id &#x3D; la.eye(5);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>dim</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The dimension of the identity matrix. Must be a positive integer.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B A <code>dim</code>-by-<code>dim</code> identity matrix.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".findMaxIdx"><span class="symbol-name">findMaxIdx</span><span class="signature"><span class="signature-params">(X)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3> <p>Returns a JS array of indices <code>idxArray</code> that correspond to the max elements in each column of dense matrix. The resulting array has one element for vector input.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a dense matrix var mat &#x3D; new la.Matrix([[1, 2], [2, 0]]); // get the indices of the maximum elements in each column of mat // returns the array: // [1, 0] la.findMaxIdx(mat);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>X</p> </td> <td> <p>(<a href="module-la.Matrix.html">module:la.Matrix</a> or <a href="module-la.Vector.html">module:la.Vector</a>)</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The matrix or vector.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>Array of number</code>B Array of indexes where maximum is found, one for each column.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".inverseSVD"><span class="symbol-name">inverseSVD</span><span class="signature"><span class="signature-params">(mat)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3> <p>Calculates the inverse matrix with SVD.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a random matrix var mat &#x3D; new la.Matrix({ rows: 5, cols: 5, random: true }); // get the inverse of mat var inv &#x3D; la.inverseSVD(mat);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>mat</p> </td> <td> <p><a href="module-la.Matrix.html">module:la.Matrix</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The matrix we want to inverse.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B The inverse matrix of <code>mat</code>.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".ones"><span class="symbol-name">ones</span><span class="signature"><span class="signature-params">(dim)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Vector.html">module:la.Vector</a></span></span></h3> <p>Returns a vector with all entries set to 1.0.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a 3-dimensional vector with all entries set to 1.0 var vec &#x3D; la.ones(3);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>dim</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Dimension of the vector.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.Vector.html">module:la.Vector</a></code>B A <code>dim</code>-dimensional vector whose entries are set to 1.0.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".pdist2"><span class="symbol-name">pdist2</span><span class="signature"><span class="signature-params">(X1, X2)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3> <p>Computes and returns the pairwise squared euclidean distances between columns of <code>X1</code> and <code>X2</code> (<code>mat3[i,j] = ||mat(:,i) - mat2(:,j)||^2</code>).</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // construct two input matrices var X1 &#x3D; new la.Matrix([[1,2], [2,0]]); var X2 &#x3D; new la.Matrix([[1,0.5,0],[0,-0.5,-1]]); // get the pairwise squared distance between the matrices // returns the matrix: // 4 6.5 10 // 1 2.5 5 la.pdist2(X1, X2);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>X1</p> </td> <td> <p><a href="module-la.Matrix.html">module:la.Matrix</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>First matrix.</p> </td> </tr> <tr> <td> <p>X2</p> </td> <td> <p><a href="module-la.Matrix.html">module:la.Matrix</a></p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Second matrix.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B Matrix with <code>X1.cols</code> rows and <code>X2.cols</code> columns containing squared euclidean distances.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".randi"><span class="symbol-name">randi</span><span class="signature"><span class="signature-params">(num[, len])</span>&nbsp;&rarr; <span class="signature-returns"> (number or la.IntVector)</span></span></h3> <p>Returns a randomly selected integer(s) from an array.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // generate a random integer between 0 and 10 var number &#x3D; la.randi(10); // generate an integer vector containing 5 random integers between 0 and 10 var vec &#x3D; la.randi(10, 5);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>num</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The upper bound of the array. Must be an integer.</p> </td> </tr> <tr> <td> <p>len</p> </td> <td> <p>number</p> </td> <td> <p>Yes</p> </td> <td> <p>The number of selected integers. Must be an integer.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>(number or la.IntVector)</code>B <br>1. Randomly selected integer from the array <code>[0,...,num-1]</code>, if no parameters are given. <br>2. <a href="module-la.IntVector.html">module:la.IntVector</a>, if parameter <code>len</code> is given. The vector contains random integers from the array <code>[0,...,num-1]</code> (with repetition). </p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".randn"><span class="symbol-name">randn</span><span class="signature"><span class="signature-params">([arg1][, arg2])</span>&nbsp;&rarr; <span class="signature-returns"> (number, <a href="module-la.Vector.html">module:la.Vector</a>, or <a href="module-la.Matrix.html">module:la.Matrix</a>)</span></span></h3> <p>Returns an object with random numbers.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // generate a random number var number &#x3D; la.randn(); // generate a random vector of length 7 var vector &#x3D; la.randn(7); // generate a random matrix with 7 rows and 10 columns var mat &#x3D; la.randn(7, 10);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>arg1</p> </td> <td> <p>number</p> </td> <td> <p>Yes</p> </td> <td> <p>Represents dimension of vector or number of rows in matrix. Must be an integer.</p> </td> </tr> <tr> <td> <p>arg2</p> </td> <td> <p>number</p> </td> <td> <p>Yes</p> </td> <td> <p>Represents number of columns in matrix. Must be an integer.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>(number, <a href="module-la.Vector.html">module:la.Vector</a>, or <a href="module-la.Matrix.html">module:la.Matrix</a>)</code>B <br>1. Number, if no parameters are given. <br>2. <a href="module-la.Vector.html">module:la.Vector</a>, if parameter <code>arg1</code> is given. <br>3. <a href="module-la.Matrix.html">module:la.Matrix</a>, if parameters <code>arg1</code> and <code>arg2</code> are given. </p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".randPerm"><span class="symbol-name">randPerm</span><span class="signature"><span class="signature-params">(k)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3> <p>Returns a permutation of elements.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create an array/permutation of 5 elements var perm &#x3D; la.randPerm(5);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>k</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Number of elements to permutate.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>Array of number</code>B A JavaScript array of integers. Represents a permutation of <code>k</code> elements.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".randVariation"><span class="symbol-name">randVariation</span><span class="signature"><span class="signature-params">(n, k)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3> <p>Returns a JavaScript array, which is a sample of integers from an array.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create an array containing 5 integers between 0 and 15 var arr &#x3D; la.randVariation(15, 5);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>n</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The upper bound of the generated array <code>[0,...,n-1]</code>. Must be an integer.</p> </td> </tr> <tr> <td> <p>k</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Length of the sample. Must be smaller or equal to <code>n</code>.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>Array of number</code>B The sample of <code>k</code> numbers from <code>[0,...,n-1]</code>, sampled without replacement.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".rangeVec"><span class="symbol-name">rangeVec</span><span class="signature"><span class="signature-params">(min, max)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.IntVector.html">module:la.IntVector</a></span></span></h3> <p>Generates an integer vector given range.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a range vector containing 1, 2, 3 var vec &#x3D; la.rangeVec(1, 3);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>min</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Start value. Should be an integer.</p> </td> </tr> <tr> <td> <p>max</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>End value. Should be an integer.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.IntVector.html">module:la.IntVector</a></code>B Integer range vector.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".sparse"><span class="symbol-name">sparse</span><span class="signature"><span class="signature-params">(rows[, cols])</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></span></span></h3> <p>Returns a sparse zero matrix.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a sparse zero matrix with 5 rows and columns var spMat &#x3D; la.sparse(5);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>rows</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Number of rows of the sparse matrix.</p> </td> </tr> <tr> <td> <p>cols</p> </td> <td> <p>number</p> </td> <td> <p>Yes</p> </td> <td> <p>Number of columns of the sparse matrix.</p> <p>Defaults to <code>rows</code>.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></code>B A <code>rows</code>-by-<code>cols</code> sparse zero matrix.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".speye"><span class="symbol-name">speye</span><span class="signature"><span class="signature-params">(dim)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></span></span></h3> <p>Returns a sparse identity matrix</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // generate a sparse identity matrix of dimension 5 var spId &#x3D; la.speye(5);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>dim</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The dimension of the identity matrix. Must be a positive integer.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code><a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></code>B A dim-by-dim identity matrix.</p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".square"><span class="symbol-name">square</span><span class="signature"><span class="signature-params">(x)</span>&nbsp;&rarr; <span class="signature-returns"> (number or <a href="module-la.Vector.html">module:la.Vector</a>)</span></span></h3> <p>Squares the values in vector.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a vector var vec &#x3D; new la.Vector([1, 2, 3]); // square the values of the vector // returns the vector containing the values 1, 4, 9 var sqr &#x3D; la.square(vec);</code></pre> </div> </section> <section> <h4>Parameter</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>x</p> </td> <td> <p>(number or <a href="module-la.Vector.html">module:la.Vector</a>)</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>The value/vector.</p> </td> </tr> </tbody> </table> </section> <dl class="dl-compact"> <dt>Returns</dt> <dd> <p><code>(number or <a href="module-la.Vector.html">module:la.Vector</a>)</code>B <br> 1. If <code>x</code> is a number, returns square of <code>x</code>. <br> 2. If <code>x</code> is a <a href="module-la.Vector.html">module:la.Vector</a>, returns a <a href="module-la.Vector.html">module:la.Vector</a>, where the i-th value of the vector is the square of <code>x[i]</code>. </p> </dd> </dl> <div class="symbol-detail-labels"><span class="label label-static">static</span></div> <h3 id=".zeros"><span class="symbol-name">zeros</span><span class="signature"><span class="signature-params">(rows[, cols])</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3> <p>Returns a dense zero matrix.</p> <section> <h4> Example </h4> <div> <pre class="prettyprint"><code>// import la module var la &#x3D; require(&#x27;qminer&#x27;).la; // create a sparse zero matrix with 5 rows and 3 columns var mat &#x3D; la.zeros(5, 3);</code></pre> </div> </section> <section> <h4>Parameters</h4> <table class="jsdoc-details-table"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Optional</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td> <p>rows</p> </td> <td> <p>number</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>Numbe