向量位置数组Matlab

时间:2018-12-05 15:25:41

标签: arrays matlab vector

我正在尝试创建布料模拟器,并且需要一种存储粒子位置的方法。我想将它们存储为[x,y,z]。我需要所有粒子位置的数组。这将意味着具有数组[[x1,y1,z1],[x2,y2,z2],... etc]。

我的宽度和高度均为3,因此网格中应该有9个[x,y,z]。但是我的输出显示100个位置。我真的不知道我在做什么错。很抱歉,这个问题的格式可以更好。

for i = 1:particleWidth
    for j = 1:particleHeight
        X = (width*(i/particleWidth));
        Y = (height*(j/particleHeight));
        xPos = [xPos,X];
        yPos = [yPos,Y];
    end
end

[T1,T2,T3] = ndgrid(xPos,yPos,Z);
grid = [T1(:),T2(:),T3(:)];
disp(grid);

1 个答案:

答案 0 :(得分:1)

ndgrid复制输入以创建网格。

[X,Y]=ndgrid(1:3,4:6)

X =

     1     1     1
     2     2     2
     3     3     3


Y =

     4     5     6
     4     5     6
     4     5     6

如果要使用该功能,则应将xPosyPos初始化为向量:

xPos = (width/particleWidth).*(1:particleWidth);
yPos = (height/particleHeight).*(1:particleHeight);
[T1,T2] = ndgrid(xPos,yPos); %T1 and T2 will be width-by-height arrays
grid = [T1(:),T2(:),zeros(numel(T1),1)]; % Or whatever Z should be

基本上,您已经将xPosyPos创建为具有 width x height 条目的数组,因此至少获得了ndgrid中的那个数字。如果Z也有9个元素,那将使9 ^ 3 = 729行。