3D矩阵切片的2D卷积

mar*_*man 3 matlab matrix convolution

我正在尝试在MATLAB中对矩阵进行一堆滚动求和.为了避免循环,我习惯repmat将2D矩阵分层为3D结构.但是,现在快速卷积功能conv2不能再用于累加器.然而,N维卷积函数(convn)不是我正在寻找的,因为它实际上卷积了所有3个维度.我想要在每个切片上进行2D卷积并返回3D矩阵的东西.

在2D中平铺矩阵而不是在3D中分层它们将无法工作,因为它会破坏卷积边缘情况.我可以在它们之间用零填充但是它开始变得有点混乱.

换句话说,如果没有for循环,我该如何执行以下操作:

A = ones(5,5,5);
B = zeros(size(A));
for i = 1 : size(A, 3)
    B(:,:,i) = conv2(A(:,:,i), ones(2), 'same');
end
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

bea*_*ker 6

convn将使用n维矩阵和二维滤波器.只是:

A = ones(5,5,5);
B = convn(A, ones(2), 'same');
Run Code Online (Sandbox Code Playgroud)