Skip to content

Allow specifying output axes for use with extensions. #10

@stev47

Description

@stev47

Allow more flexibility in output axes. Currently we only allow

  • output axes shrinked to applicable domain (no extension)
  • output axes matching input (when extension is used)

Discussed in #9

Originally posted by RoyiAvital April 29, 2023
Given 2 vectors:

vA = [1, 2, 3, 4, 5];
vB = [4, 5, 6]

I would like to perform their convolution using StaticKernels.jl.

I would be something like:

vK = Kernel{(0:(length(vB) - 1), )}(@inline vW -> vW[0] * vB[3] + vW[1] * vB[2] + vW[2] * vB[1]);
map(vK, extend(vA, StaticKernels.ExtensionConstant(0)));

The problem is I can get only 5 (the length of the data vA) elements as output and not length(vA) + length(vB) - 1.
I was wondering if there a trick to do with the boundary extension to get the output of the full convolution?

In the case above I can define vAA = [0, 0, 1, 2, 3, 4, 5] and then run on it to get the required result, yet I wonder if it can be done without explicitly extend the vector.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions