我正在尝试在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)
在此先感谢您的帮助!