7

Sto provando a fare una "convoluzione" di una superficie N-dimensionale arbitraria con un vettore. In particolare, sto cercando di ottenere l'output di un N-esimo ordine Volterra kernel (vedi http://www.scholarpedia.org/article/Volterra_and_Wiener_series, eq.1)Convoluzione di superficie N-dimensionale con vettore in MATLAB

Quindi, per un kernel 1-dimensionale, l'uscita è la semplice convoluzione scorrevole del primo ordine kernel con l'epoca precedente di input. In pratica moltiplica/pesa ogni valore nell'ultima epoca di input con un coefficiente.

L'output del kernel del 2 ° ordine è una "convoluzione" di una matrice 2d con un segnale. Questo kernel pesa il prodotto di ogni coppia di punti nel passato con un coefficiente.

Il kernel del terzo ordine, una matrice 3d, pesa ogni terzina di punti nella passata epoca della memoria.

Inoltre, non conosco la dimensione/l'ordine del kernel prima della mano. Si tratta di un parametro di input.

So che probabilmente posso farlo in modo molto poco elegante e lentamente esaminando diversi loop per punto, ma mi chiedevo se c'era un modo per farlo in modo molto rapido ed elegante in mATLAB?

Grazie

+0

Hai guardato il comando ['convn'] (http://www.mathworks.com/help/matlab/ref/convn.html)? –

+0

Ho, ma non sono sicuro di quello che fa. Ogni volta che cerco di usarlo per convogliare una superficie con un vettore, ottengo un output superficiale e non un output vettoriale che sto cercando; Quindi, presumo che non sia quello che mi serve ... – DankMasterDan

+0

Questo è molto importante per quello che sto facendo ora, potrei usare quante più informazioni possibili. Iniziare una taglia. – SetSlapShot

risposta

-1

è possibile controllare la dimensione di una variabile con ndims(array), e fare circonvoluzioni sulle dimensioni necessarie: conv() o conv2() per unidimensionale e 2-dimensioni rispettivamente. Se è necessario eseguire una convoluzione su una dimensione superiore, è possibile ridisegnare la variabile con il comando reshape e quindi utilizzare i comandi precedenti.