Source code for padasip.preprocess.input_from_history

"""
.. versionadded:: 0.1
.. versionchanged:: 1.2.0

This function creates input matrix from historical values.

.. contents::
   :local:
   :depth: 1

Minimal Working Example
**************************

An example how to create input matrix from historical values

.. code-block:: python

    >>> import numpy as np
    >>> import padasip as pa
    >>> a = np.arange(1, 7, 1)
    >>> a
    array([1, 2, 3, 4, 5, 6])
    >>> pa.input_from_history(a,3)
    array([[1, 2, 3],
           [2, 3, 4],
           [3, 4, 5],
           [4, 5, 6]])

Code Explanation
*****************
"""
from __future__ import division
import numpy as np

[docs]def input_from_history(a, n, bias=False): """ This is function for creation of input matrix. **Args:** * `a` : series (1 dimensional array) * `n` : size of input matrix row (int). It means how many samples \ of previous history you want to use \ as the filter input. It also represents the filter length. **Kwargs:** * `bias` : decides if the bias is used (Boolean). If True, \ array of all ones is appended as a last column to matrix `x`. \ So matrix `x` has `n`+1 columns. **Returns:** * `x` : input matrix (2 dimensional array) \ constructed from an array `a`. The length of `x` \ is calculated as length of `a` - `n` + 1. \ If the `bias` is used, then the amount of columns is `n` if not then \ amount of columns is `n`+1). """ if not isinstance(n, int): raise ValueError('The argument n must be int.') if not n > 0: raise ValueError('The argument n must be greater than 0') try: a = np.array(a, dtype="float64") except: raise ValueError('The argument a is not numpy array or similar.') x = np.array([a[i:i+n] for i in range(len(a)-n+1)]) if bias: x = np.vstack((x.T, np.ones(len(x)))).T return x