Inpaintings.jl provides a Julia version of MATLAB’s inpaint_nans
function (originally written by John d’Errico, available on the MathWorks File Exchange website and ported here with his authorization by personal communication).
Simply put, Inpaintings.jl provides a simple inpaint
function, which takes an array A
as input and inpaints its missing
values by solving a simple n-dimensional PDE.
The inpaint
function can also be used to inpaint NaN
s or any other values, thanks to the syntax described below and in the documentation.
Usage:
Like every Julia package you must first add it via ]add Inpaintings
.
And every time you want to use Inpaintings.jl, you must start with
julia> using Inpaintings
In order to inpaint
an array A
’s missing
values, simply apply inpaint
to your array:
julia> inpaint(A) # will inpaint missing values
The array to be inpainted can be a vector, a matrix, or even an n-dimensional array.
If your array A
has some NaN
values and is filled with floats otherwise, then
julia> inpaint(A) # will inpaint NaN values
Inpaintings.jl provides a syntax to inpaint any specified value via
julia> inpaint(A, -999) # will inpaint -999 values
(The value to inpaint can be specified as NaN
or missing
, too!)
Alternatively, Inpaintings.jl also provides a syntax taking a boolean function f
as an argument before the array (f
will be applied to all the elements of the array and must return a boolean).
julia> inpaint(f, A)
In this case, the values of A
for which f
returns true
will be inpainted.
(For example, f
can be, e.g., ismissing
or isnan
, but it can also be x -> x < 0
.)
Finally, Inpaintings.jl provides a syntax to allow some dimensions to be assumed cyclic:
julia> inpaint(A, cycledims=[1]) # will inpaint A with dimension 1 as cyclic
(The cyclic dimensions must be an array of Int64
that contains the dimension number of cyclic dimensions.)
See the docs if you want to see more examples.