Arrays MATLAB:创建3D阵列、矢量化与循环

Arrays MATLAB:创建3D阵列、矢量化与循环,arrays,matlab,vector,Arrays,Matlab,Vector,我已经在这里搜索了我的问题的答案,但找不到,所以如果已经存在,我提前道歉 我想做的是在空间(x,y,z)中创建一个三维点阵列。我知道在一维向量中,你可以指定间隔,比如1:5:20,得到一个1到20的向量,间隔5。我想做的是创建一个3D数组,最有可能的是一行一行地创建,其中间距是单位向量(ix,iy,iz)。那么比如说, a(1,1,:) = [1, 1, 1] uv = [0.5 0.5 0.5] a(2,2,:) = [1.5, 1.5, 1.5] 等等,我知道数字不

我已经在这里搜索了我的问题的答案,但找不到,所以如果已经存在,我提前道歉

我想做的是在空间(x,y,z)中创建一个三维点阵列。我知道在一维向量中,你可以指定间隔,比如1:5:20,得到一个1到20的向量,间隔5。我想做的是创建一个3D数组,最有可能的是一行一行地创建,其中间距是单位向量(ix,iy,iz)。那么比如说,

    a(1,1,:) = [1, 1, 1]
    uv = [0.5 0.5 0.5]
    a(2,2,:) = [1.5, 1.5, 1.5]

等等,我知道数字不是“单位向量”,但想法就在那里。是否有类似于a=[1,1,1]:uv:[end,end,end]?

的东西你可能对a感兴趣。

一个例子:

[X,Y,Z] = meshgrid(1:0.1:2, 1:0.1:2, 1:0.1:2);    %# they can be different
points = [X(:) Y(:) Z(:)];

plot3(points(:,1),points(:,2),points(:,3),'.')
box on, axis equal
xlabel x, ylabel y, zlabel z

我没有检查这个。但是试试看:a=[1:0.5:20 1:0.5:20 1:0.5:20];我认为它应该会起作用。+1-一般来说,一些网格变量对于OP的问题空间可能是最有用的。但如果他真的只想构造一个特定的简单多维数组,
repmat
可能更直接有用。也就是说,我想保持坐标之间的间距。我正在尝试使用给定的传感器大小和方向在三维空间中创建图像平面。如果我的一个单位向量(方向向量)包含一个为零的元素,则这不起作用,因为不能按零递增:(如果您在一个水平面上,并且所有的z坐标都相同,您会这样做。@JoeMcG:call
meshgrid
,使用两个非零分量,然后向结果中添加一列1(或一些常量z坐标):
[X,Y]=meshgrid(1:0.2:2,1:0.1:2);点=[X(:)Y(:)one(numel(X),1)*9];