7

Próbuję wykonać "splot" dowolnej powierzchni N-wymiarowej za pomocą wektora. Dokładniej, próbuję uzyskać wyjście z jądra Volterry N-tego rzędu (patrz http://www.scholarpedia.org/article/Volterra_and_Wiener_series, eq.1)Konwolucja powierzchni N-wymiarowej z wektorem w matlab

Tak więc, dla 1-wymiarowego jądra, wyjście jest prostym splotem ślizgowym pierwszego rzędu jądro z przeszłością epoki wejściowej. Zasadniczo mnoży/waży każdą wartość w poprzedniej epoce wejściowej ze współczynnikiem.

Wyjście jądra drugiego rzędu jest "splotem" macierzy 2d z sygnałem. To jądro waży iloczyn każdej pary punktów w przeszłości ze współczynnikiem.

Jądro 3. rzędu, macierz 3d, waży każdą trójkę punktów w poprzedniej epoce pamięci.

Ponadto, nie znam wymiaru/kolejności jądra przed ręką. Jest to parametr wejściowy ..

Wiem, że prawdopodobnie mogę to zrobić bardzo nieelegancko i powoli, przechodząc przez kilka pętli po punkcie, ale zastanawiałem się, czy istnieje sposób, aby to zrobić bardzo szybko i elegancko w matlab?

Dzięki

+0

Czy obejrzałeś polecenie ['convn'] (http://www.mathworks.com/help/matlab/ref/convn.html)? –

+0

Mam, ale nie jestem pewien, co robi. Ilekroć próbuję użyć go do splotu powierzchni z wektorem, otrzymuję wyjście powierzchniowe, a nie wynik wektorowy, którego szukam; Dlatego zakładam, że nie jest to, czego potrzebuję ... – DankMasterDan

+0

Jest to bardzo istotne dla tego, co teraz robię, może wykorzystywać jak najwięcej informacji. Rozpoczynanie nagrody. – SetSlapShot

Odpowiedz

-1

można sprawdzić wymiar zmiennej z ndims(array), i zwoje o potrzebnych wymiarach: conv() lub conv2() dla jednego wymiaru i 2-wymiarach odpowiednio. Jeśli potrzebujesz splotu w wyższym wymiarze, możesz zmienić kształt zmiennej za pomocą polecenia reshape, a następnie użyć poprzednich poleceń.