将特定的2d数组转换为3d数组

时间:2015-01-15 10:01:37

标签: matlab matrix multidimensional-array

我想将像A这样的二维矩阵转换为3D矩阵。每个切片都应该是相同的内容:

A=[1 2 3;4 5 6;7 8 9];

for i=1:10
   B(:,:,i)=A
end

我需要没有循环的相同代码,这会降低程序的速度。在原始代码A和我相当大。

2 个答案:

答案 0 :(得分:1)

您也可以尝试

B = A(:,:, ones(1,10) );

运行较小的benchmark on ideone显示此方法明显快于bsxfunrepmat

答案 1 :(得分:0)

我认为最简单,最快捷的方法是使用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)。