我有尺寸A
的3D矩阵N, M, 3
和尺寸T
的2D变换3, 3
,我将其应用于矩阵A
的第三维。如果相关,则此3D矩阵是RGB图像。
我目前的解决方案如下:
for i = 1:N
for j = 1:M
A(i, j, :) = T * [A(i, j, r); A(i, j, g); A(i, j, b)];
end
end
但我很好奇是否有办法对其进行矢量化?
答案 0 :(得分:2)
你可以试试这个。 首先切换尺寸,使通道成为第一个:
B = permute(A,[3,1,2])
然后将B重塑为3xN * M的矩阵:
C = reshape(B,3,[])
现在计算一个矩阵乘法:
D = T*C;
然后你需要重塑和换回:
E = permute(reshape(D,3,M,N),[2,3,1])
我没有对它进行测试,因此可能会遗漏一些东西,但通常情况下这应该有效(并且速度快!)