ndarray-band
Create a view of a band of an ndarray
Introduction
First things first, if bands are meaningful in your matrix problem, there's a chance you should really just be dealing with the bands directly using algorithms designed to work with, for example, tridiagonal or Toeplitz matrices. But if you need a band, then this module provides a convenience function to extract a view of a band, i.e. a diagonal with an offset.
Note that for an ndarray of dimension , since the band is a one-dimensional array, only offsets are necessary. Thus, the offsets are given for dimensions .
Also note that for dimensions greater than two, this gets a little confusing. Here's a more precise specification that's not exactly less confusing, but at least it's precise: Given an array and offsets , , ..., , ndarray-band returns a view of at
where is the the first element that falls within the bounds of and is the index of the view starting at zero. The length of the band will be such that it only ever contains element within the bounds of .
To make that actually concrete, the bands of a matrix are indexed like:
Example
Consider constructing the 1-D discrete Laplacian operator. Of course in any realistic problem you'd obviously want to avoid constructing this at all costs, but there are cases where it's necessary or at least useful to refer to a band view.
var pool = ops = band = var A = pool ops // (superdiagonal)ops // (diagonal)ops // (subdiagonal) // [ -2 1 0 0 0 0 0 0 0 0 ]// [ 1 -2 1 0 0 0 0 0 0 0 ]// [ 0 1 -2 1 0 0 0 0 0 0 ]// [ 0 0 1 -2 1 0 0 0 0 0 ]// A = [ 0 0 0 1 -2 1 0 0 0 0 ]// [ 0 0 0 0 1 -2 1 0 0 0 ]// [ 0 0 0 0 0 1 -2 1 0 0 ]// [ 0 0 0 0 0 0 1 -2 1 0 ]// [ 0 0 0 0 0 0 0 1 -2 1 ]// [ 0 0 0 0 0 0 0 0 1 -2 ]
Install
$ npm install ndarray-band
API
require('ndarray-band')( A, offsets )
Create a view of a band of an ndarray given offsets along the dimensions.
A
: the ndarray of dimension of which to create a viewoffsets
: an array of length containing the offset of the band along the respective dimensions. For the special case , the band is equal to the original vector so the offset is unused. For the special case , there is only one offset so a scalar is permitted in place of an array.
Returns: a 1-D ndarray starting at element 0 and of whatever length required such that the view will never contain an element outside the original ndarray.
Credits
(c) 2015 Ricky Reusser. MIT License