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
HTML
<!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 = require('qminer').la;
// create a random matrix
var mat = new la.Matrix({ rows: 10, cols: 5, random: true });
// create a vector
var vec = new la.Vector([1, 2, 3, 0, -1]);
// multiply the matrix and vector
var vec2 = mat.multiply(vec);
// calculate the svd decomposition of the matrix
var svd = 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> → <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 = require('qminer').la;
// create four matrices and concatenate (2 block columns, 2 block rows)
var la = require('qminer').la;
var A = new la.Matrix([[1,2], [3,4]]);
var B = new la.Matrix([[5,6], [7,8]]);
var C = new la.Matrix([[9,10], [11,12]]);
var D = 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 = 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> </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> → <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 = require('qminer').la;
// create a positive-definite symmetric matrix
var vecTemp = new la.Vector([1, 2, 3]);
var mat = vecTemp.diag();
// create the right-hand side vector
var vec = new la.Vector([0.5, 3, -2]);
// solve the PSD symmetric system
var x = 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> </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> </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> → <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 = require('qminer').la;
// create a new vector
var vec = new la.Vector([1, 2, 3]);
// create a JavaScript array out of vec
var arr = 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> </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> → <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 = require('qminer').la;
// generate a dense identity matrix of dimension 5
var id = 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> </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> → <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 = require('qminer').la;
// create a dense matrix
var mat = 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> </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> → <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 = require('qminer').la;
// create a random matrix
var mat = new la.Matrix({ rows: 5, cols: 5, random: true });
// get the inverse of mat
var inv = 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> </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> → <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 = require('qminer').la;
// create a 3-dimensional vector with all entries set to 1.0
var vec = 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> </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> → <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 = require('qminer').la;
// construct two input matrices
var X1 = new la.Matrix([[1,2], [2,0]]);
var X2 = 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> </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> </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> → <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 = require('qminer').la;
// generate a random integer between 0 and 10
var number = la.randi(10);
// generate an integer vector containing 5 random integers between 0 and 10
var vec = 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> </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> → <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 = require('qminer').la;
// generate a random number
var number = la.randn();
// generate a random vector of length 7
var vector = la.randn(7);
// generate a random matrix with 7 rows and 10 columns
var mat = 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> → <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 = require('qminer').la;
// create an array/permutation of 5 elements
var perm = 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> </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> → <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 = require('qminer').la;
// create an array containing 5 integers between 0 and 15
var arr = 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> </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> </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> → <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 = require('qminer').la;
// create a range vector containing 1, 2, 3
var vec = 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> </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> </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> → <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 = require('qminer').la;
// create a sparse zero matrix with 5 rows and columns
var spMat = 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> </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> → <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 = require('qminer').la;
// generate a sparse identity matrix of dimension 5
var spId = 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> </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> → <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 = require('qminer').la;
// create a vector
var vec = new la.Vector([1, 2, 3]);
// square the values of the vector
// returns the vector containing the values 1, 4, 9
var sqr = 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> </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> → <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 = require('qminer').la;
// create a sparse zero matrix with 5 rows and 3 columns
var mat = 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> </p>
</td>
<td>
<p>Numbe