Return the index of the first column in an input matrix which has the same elements as a provided search vector.
var gindexOfColumn = require( '@stdlib/blas/ext/base/gindex-of-column' );Returns the index of the first column in an input matrix which has the same elements as a provided search vector.
/*
A = [
[ 1.0, 2.0 ],
[ 3.0, 4.0 ],
[ 0.0, 0.0 ]
]
*/
var A = [ 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ];
var x = [ 2.0, 4.0, 0.0 ];
var out = gindexOfColumn( 'row-major', 3, 2, A, 2, x, 1 );
// returns 1The function has the following parameters:
- order: storage layout.
- M: number of rows in
A. - N: number of columns in
A. - A: input matrix as a linear array.
- LDA: stride of the first dimension of
A(a.k.a., leading dimension of the matrixA). - x: search vector.
- strideX: stride length of
x.
If the function is unable to find a matching column, the function returns -1.
var A = [ 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ];
var x = [ -2.0, -4.0, 0.0 ];
var out = gindexOfColumn( 'row-major', 3, 2, A, 2, x, 1 );
// returns -1Note that indexing is relative to the first index. To introduce an offset, use typed array views.
var Float64Array = require( '@stdlib/array/float64' );
// Initial arrays:
var A0 = new Float64Array( [ 9999.0, 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ] );
var x0 = new Float64Array( [ 9999.0, 2.0, 4.0, 0.0 ] );
// Create offset views:
var A1 = new Float64Array( A0.buffer, A0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
var out = gindexOfColumn( 'row-major', 3, 2, A1, 2, x1, 1 );
// returns 1Returns the index of the first column in an input matrix which has the same elements as a provided search vector using alternative indexing semantics.
/*
A = [
[ 1.0, 2.0 ],
[ 3.0, 4.0 ],
[ 0.0, 0.0 ]
]
*/
var A = [ 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ];
var x = [ 2.0, 4.0, 0.0 ];
var out = gindexOfColumn.ndarray( 3, 2, A, 2, 1, 0, x, 1, 0 );
// returns 1The function has the following parameters:
- M: number of rows in
A. - N: number of columns in
A. - A: input matrix as a linear array.
- strideA1: stride of the first dimension of
A. - strideA2: stride of the second dimension of
A. - offsetA: starting index for
A. - x: search vector.
- strideX: stride length of
x. - offsetX: starting index for
x.
While typed array views mandate a view offset based on the underlying buffer, offset parameters support indexing semantics based on starting indices. For example,
/*
A = [
[ 1.0, 2.0 ],
[ 3.0, 4.0 ],
[ 0.0, 0.0 ]
]
*/
var A = [ 9999.0, 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ];
var x = [ 9999.0, 2.0, 4.0, 0.0 ];
var out = gindexOfColumn.ndarray( 3, 2, A, 2, 1, 1, x, 1, 1 );
// returns 1- When searching for a matching column, the function checks for equality using the strict equality operator
===. As a consequence,NaNvalues are considered distinct, and-0and+0are considered the same. - Both functions support array-like objects having getter and setter accessors for array element access (e.g.,
@stdlib/array/base/accessor).
var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
var shape2strides = require( '@stdlib/ndarray/base/shape2strides' );
var gindexOfColumn = require( '@stdlib/blas/ext/base/gindex-of-column' );
var shape = [ 3, 3 ];
var order = 'row-major';
var strides = shape2strides( shape, order );
var A = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ];
console.log( ndarray2array( A, shape, strides, 0, order ) );
var x = [ 2.0, 5.0, 8.0 ];
console.log( x );
var out = gindexOfColumn( order, shape[ 0 ], shape[ 1 ], A, strides[ 0 ], x, 1, 0 );
console.log( out );