将特定的 2d 数组转换为 3d 数组
Convert a specific 2d array into 3d array
我想将 A
之类的 2D 矩阵转换为 3D 矩阵。每个切片应该是相同的内容,如下所示:
A=[1 2 3;4 5 6;7 8 9];
for i=1:10
B(:,:,i)=A
end
我需要没有循环的相同代码,这会降低程序的速度。原码中A和i比较大
我认为最简单和最快的方法是使用 bsxfun,利用它扩展单例维度的事实:
A=[1 2 3;4 5 6;7 8 9];
B = bsxfun(@times,A,ones(3,3,10))
这里A被看作是一个3 x 3 x 1的矩阵,第三个维度被扩展以匹配B中对应的维度(即10)。
你也可以试试
B = A(:,:, ones(1,10) );
运行一个小benchmark on ideone shows this approach significantly faster than or
我想将 A
之类的 2D 矩阵转换为 3D 矩阵。每个切片应该是相同的内容,如下所示:
A=[1 2 3;4 5 6;7 8 9];
for i=1:10
B(:,:,i)=A
end
我需要没有循环的相同代码,这会降低程序的速度。原码中A和i比较大
我认为最简单和最快的方法是使用 bsxfun,利用它扩展单例维度的事实:
A=[1 2 3;4 5 6;7 8 9];
B = bsxfun(@times,A,ones(3,3,10))
这里A被看作是一个3 x 3 x 1的矩阵,第三个维度被扩展以匹配B中对应的维度(即10)。
你也可以试试
B = A(:,:, ones(1,10) );
运行一个小benchmark on ideone shows this approach significantly faster than