I am trying to "convolution" an arbitrary N-dimensional surface with a vector. In particular, I am trying to get the output of the Nth order Volterra kernel (see http://www.scholarpedia.org/article/Volterra_and_Wiener_series , eq.1)
Thus, for a one-dimensional core, the output is a simple sliding convolution of a first-order kernel with a past input era. It essentially multiplies / weighs each value in the past era of input with a coefficient.
The second-order core output is a “convolution” of a 2d matrix with a signal. This core weighs the product of each pair of points in the past with a coefficient.
The third-order core, a three-dimensional matrix, weighs each triplet of points in the past era of memory.
In addition, I do not know the size / order of the kernel in front of the hand. This is an input parameter.
I know that maybe I can do it very hard and slowly by going through a few cycles to points, but I was wondering if there is a way to do this very quickly and elegantly in Matlab?
thanks
multidimensional-array matlab signal-processing convolution
Dankmasterdan
source share