7

我正在尝试对任意 N 维曲面与向量进行“卷积”。更具体地说,我试图获得 N 阶 Volterra 内核的输出(参见http://www.scholarpedia.org/article/Volterra_and_Wiener_series,eq.1)

因此,对于一维内核,输出是一阶内核与过去输入时期的简单滑动卷积。它本质上将过去输入时期中的每个值与一个系数相乘/加权。

二阶内核输出是二维矩阵与信号的“卷积”。这个内核用一个系数对过去每一对点的乘积进行加权。

三阶内核,一个 3d 矩阵,对过去内存周期中的每个三元组点进行加权。

另外,我事先不知道内核的尺寸/顺序。它是一个输入参数..

我知道我可以通过逐点进行几个 for 循环来非常不雅和缓慢地做到这一点,但我想知道是否有一种方法可以在 matlab 中非常快速和优雅地做到这一点?

谢谢

4

1 回答 1

-1

您可以使用 来检查变量的维度ndims(array),并对所需的维度进行卷积:conv()conv2()分别针对一维和二维。如果需要在更高维度上进行卷积,可以使用命令重塑变量,reshape然后使用前面的命令。

于 2014-09-29T10:00:33.403 回答