matlab - matlab中N维曲面与向量的卷积

标签 matlab multidimensional-array signal-processing convolution

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

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

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

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

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

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

谢谢

最佳答案

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

关于matlab - matlab中N维曲面与向量的卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755829/

相关文章:

algorithm - 信号增强算法

matlab - 如何更改向导创建的GUI图形窗口标题名称?

matlab - SVM 中的线性内核和多项式内核中的内核比例参数是什么?

matlab - 数字图像处理中的局部最小值和最大值是什么意思?

java - 从表数据在 Java 中创建一个二维 boolean 数组

javascript - 将一个数组中的值插入多维数组并出现错误

matlab - 如何在 MATLAB 中使用 fft 从录制的声音中去除噪声?

matlab - 为什么 Matlab 和 Mathematica 之间存在显着的 double 差异?

C#获取多维数组的类型

c++ - PortAudio 回调中的求和波