如何在Matlab中创建一个增加每层图层的3d数组?

时间:2013-04-02 17:36:29

标签: matlab multidimensional-array

,即一个3d矩阵,其中每个图层上的所有值都相同,但每个图纸上的值随着图层的增加而递增。

增量可以由x =(0:0.5:2 * pi)定义,例如。

我尝试过使用repmat,但这似乎只会产生另一种方向的矩阵。

谢谢!

3 个答案:

答案 0 :(得分:4)

还有一种可能性:使用ndgrid,这里用来创建一个4乘5乘#X数组:

x = 0:0.5:2*pi;

[~,~,out] = ndgrid(1:4,1:5,x);

答案 1 :(得分:0)

您可以使用repmatpermute

执行此操作
x = (0:0.5:2*pi);
y = repmat(x',[1,5,5]);
z = permute(y,[2,3,1]);
size(z)
ans =

    5    5   13

z(:,:,1)
ans =

   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0

z(:,:,2)
ans =

   0.50000   0.50000   0.50000   0.50000   0.50000
   0.50000   0.50000   0.50000   0.50000   0.50000
   0.50000   0.50000   0.50000   0.50000   0.50000
   0.50000   0.50000   0.50000   0.50000   0.50000
   0.50000   0.50000   0.50000   0.50000   0.50000

答案 2 :(得分:0)

定义x

x = (0:0.5:2*pi);

这将使值沿着行(第二维)变化。将x改变为您想要的尺寸(第三维):

x = permute(x, [1, 3, 2]);

然后重新编写:

x = repmat(x, [3, 3, 1]);