将特定的 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