Translates ndarrays using sinc interpolation

npm install ndarray-translate-fft
7 downloads in the last month


Translates an array using sinc interpolation. For some things this makes sense, but for other signals this may not be what you want. (For example, you can get bigger values or negative stuff in your signal using this method). If you want to use bilinear interpolation, check out ndarray-warp, or if all your coordinates are integers try ndarray-translate instead.


Here is a simple example showing how to warp with 0-padding boundary conditions:

var lena = require("luminance")(require("lena"))
var translate = require("../translate.js")

translate(lena, [100, 180])

require("save-pixels")(lena, "png").pipe(process.stdout)

Which produces the following image:

ndarray-fft can also handle periodic boundary conditions by replacing the translate line with the following:

translate.wrap(lena, [100, 180])

This produces the following output:


npm install ndarray-translate-fft


var translate = require("ndarray-translate-fft")

translate(array, shift)

Translates array by shift amount in place using sinc interpolation with 0-boundary conditions.

  • array is an ndarray to translate (get mutated)
  • shift is the amount to shift by (can be a fractional number)

Returns array

translate.wrap(array, shift)

Translates an array by shift amount in place using periodic boundary conditions. This is exactly recoverable.

  • array is the array to translate
  • shift is the amount to shift by

Returns array

Reasons to use ndarray-translate-fft:

  • You want to translate by fractional amounts
  • You want your translations to be exactly invertible
  • You want to handle periodic boundary conditions

Reasons NOT to use ndarray-translate-fft

  • You are shifting with zero padding and integer vectors
  • You are concerned about speed.


(c) Mikola Lysenko. MIT License

npm loves you