我正在尝试在MATLAB中对矩阵进行一系列滚动求和。为了避免使用循环,我使用
将矩阵在二维平铺而不是分层到三维中是行不通的,因为这会破坏卷积边缘情况。我可以在它们之间填充零,但这样就变得有点凌乱了。
换句话说,没有for循环,我该如何执行以下操作:
repmat
将我的二维矩阵分层成一个三维结构。然而,现在快速卷积函数conv2
不能再用于累加器。不过,N维卷积函数(convn
)也不是我想要的,因为它会在所有三个维度上进行卷积。我需要的是在每个切片上执行二维卷积并返回一个三维矩阵。将矩阵在二维平铺而不是分层到三维中是行不通的,因为这会破坏卷积边缘情况。我可以在它们之间填充零,但这样就变得有点凌乱了。
换句话说,没有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
感谢您提前提供的帮助!
这里需要翻译的内容与 IT 技术有关。
convn
不能用于3D矩阵和2D滤波器吗? - beakerconvn
! - Divakar