我正在使用Matlab制作3维数组,该数组根据模式进行。尽管我可以手动写出Array,但我确信有一种更快的方法。

multiArray = cat(3,...
               [1+randn(4,3); 1*randn(4,3)],...
               [2+randn(4,3); 2*randn(4,3)],...
               [3+randn(4,3); 3*randn(4,3)]);


如果我想使上面的数组为8x3x25,那么最后一行是

[25+randn(4,3); 25*randn(4,3)]


但是,如何在不经过所有繁琐的干预步骤的情况下制作这样的阵列呢?

最佳答案

使用mikkola basically got the solution时,无需在末尾移动尺寸。

s=[4,3,25];
it=reshape(1:s(3),1,1,[]);
out = [bsxfun(@plus , it, randn(s));...
       bsxfun(@times, it, randn(s))];

关于matlab - 按照模式创建多维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33734820/

10-13 03:44