Replicate each strided array element a specified number of times.
var greplicate = require( '@stdlib/blas/ext/base/greplicate' );Replicates each strided array element a specified number of times.
var x = [ 1.0, 2.0, 3.0 ];
var out = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
greplicate( x.length, 2, x, 1, out, 1 );
// out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]The function has the following parameters:
- N: number of indexed elements.
- k: number of times to replicate.
- x: input array.
- strideX: stride length for
x. - out: output array.
- strideOut: stride length for
out.
The N and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to replicate every other element:
var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
var out = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
greplicate( 3, 2, x, 2, out, 1 );
// out => [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ]Note 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 x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
var out0 = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
// Create offset views...
var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
var out1 = new Float64Array( out0.buffer, out0.BYTES_PER_ELEMENT*2 ); // start at 3rd element
greplicate( 3, 2, x1, 2, out1, 1 );
// out0 => <Float64Array>[ 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ]Replicates each strided array element a specified number of times using alternative indexing semantics.
var x = [ 1.0, 2.0, 3.0 ];
var out = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
greplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 );
// out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]The function has the following additional parameters:
- offsetX: starting index for
x. - offsetOut: starting index for
out.
While typed array views mandate a view offset based on the underlying buffer, offset parameters support indexing semantics based on starting indices. For example, to replicate every other element in the strided input array starting from the second element and to store in the last N*k elements of the strided output array starting from the last element:
var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
var out = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
greplicate.ndarray( 3, 2, x, 2, 1, out, -1, out.length-1 );
// out => [ 6.0, 6.0, 4.0, 4.0, 2.0, 2.0 ]- If
N <= 0ork <= 0, both functions returnoutunchanged. - Both functions support array-like objects having getter and setter accessors for array element access (e.g.,
@stdlib/array/base/accessor).
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var Float64Array = require( '@stdlib/array/float64' );
var greplicate = require( '@stdlib/blas/ext/base/greplicate' );
var x = discreteUniform( 10, -100, 100, {
'dtype': 'float64'
});
console.log( x );
var out = new Float64Array( x.length * 3 );
console.log( out );
greplicate( x.length, 3, x, 1, out, 1 );
console.log( out );