我正在尝试用向量对任意N维曲面进行"卷积"。更具体地说,我正在尝试获得N阶Volterra内核的输出(请参见http://www.scholarpedia.org/article/Volterra_and_Wiener_series,eq.1)
因此,对于一维核,输出是一阶核与过去输入历元的简单滑动卷积。它本质上用一个系数乘以/加权过去输入历元中的每个值。
二阶核输出是2d矩阵与信号的"卷积"。这个核对过去每一对点与一个系数的乘积进行加权。
三阶核是一个三维矩阵,它对过去记忆时期中的每三个点进行加权。
此外,我还不知道内核的大小/顺序。这是一个输入参数。。
我知道我可能可以通过一点一点地进行几个for循环来非常不合法、缓慢地完成这项工作,但我想知道是否有一种方法可以在matlab中非常快速、优雅地做到这一点?
感谢
您可以用ndims(array)
检查变量的维度,并对所需的维度进行卷积:一维和二维分别为conv()
或conv2()
。如果需要在更高维度上进行卷积,可以使用reshape
命令重塑变量,然后使用前面的命令。