在matlab中用向量卷积N维表面

时间:2013-07-19 21:31:01

标签: matlab multidimensional-array signal-processing convolution

我试图用矢量对任意N维表面进行“卷积”。更具体地说,我试图得到一个N阶Volterra内核的输出(见http://www.scholarpedia.org/article/Volterra_and_Wiener_series,eq.1)

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

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

三阶内核,一个3d矩阵,衡量了过去记忆时代中每一个三重点。

另外,我之前不知道内核的维度/顺序。这是一个输入参数..

我知道我可以通过逐个循环地执行几个for循环来非常不稳定地做这个,但我想知道是否有办法在matlab中快速而优雅地完成这项工作?

谢谢

1 个答案:

答案 0 :(得分:-1)

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