I am trying to do a 'convolution' of an arbitrary N-dimensional surface with a vector. More specifically, I am trying to get the output of an N-th order Volterra kernel (see http://www.scholarpedia.org/article/Volterra_and_Wiener_series, eq.1)
Thus, for a 1-dimensional kernel, the output is the simple sliding convolution of the 1st order kernel with the past input epoch. It essentially multiplies/weights every value in the past input epoch with a coefficient.
The 2nd order kernel output is a 'convolution' of a 2d matrix with a signal. This kernel weighs the product of every pair of points in the past with a coefficient.
The 3rd order kernel, a 3d matrix, weighs every triplet of points in the past memory epoch.
Also, I dont know the dimension/order of the kernel before hand. It is an input parameter..
I know I can probably do this very unelegantly and slowly by going through with several for loops point by point, but I was wondering if there was a way to do this very quickly and elegantly in matlab?
Thanks
convn
command? – Mohsen Nosratinia