使用带有两个不同向量的meshgrid

时间:2018-04-11 13:30:49

标签: matlab

我想在第三列中创建一个以矩阵(nx3)(此处为:obsPos)保存的网格。网格应均匀间隔。矩阵应由两个向量定义(dim:3x1)。

目标:创建x米长x米宽的网格,并将此网格的位置保存到矩阵中。该网格应均匀分布,例如: G。每个网格面板都是一平方米大。

干杯!

obsXlimit = 50; % Define size of the observer grid in x-direction (m)
obsYlimit = 20; % Define size of the observer grid in y-direction (m)

obsXspanVector = [obsXlimit 0];
obsYspanVector = [0 obsYlimit];

[obsX obsY] = meshgrid(obsXspanVector,obsYspanVector); % Generate X and Y data of the observer positions

obsZ = zeros(size(obsX, 1)); % Generate Z data of the observer positions (always with obsZ = 0)

obsPos = [obsX(:), obsY(:), obsZ(:)]; % Save every observer position

1 个答案:

答案 0 :(得分:0)

您声明统一网格,这是使用start:step:stop获得的startstepstop是网格开始的点,步长和分别结束的地方。看起来,你有网格

obsXspanVector = [obsXlimit 0];
obsYspanVector = [0 obsYlimit];

将使网格仅包含起点和终点。另外,由于一个方格必须是1平方米大,我认为步长应该是一个:

obsXspanVector = 0:1:obsXlimit;
obsYspanVector = 0:1:obsYlimit;

然后你可以用

为x和y生成网格
[obsX obsY] = meshgrid(obsXspanVector,obsYspanVector);

然后为避免遗忘,将数组obsXobsY重新定义为Nx1等效项。

obsX = obsX(:);
obsY = obsY(:);

然后你可以绘制所需的零,虽然注意到带有1个输入的zeros形成一个方形矩阵,多个输入(可能是数组)给出一个指定大小的数组

obsZ = zeros(size(obsX)); %size(obsX) = [N, 1]

最后,你可以合并

obsPos = [obsX(:), obsY(:), obsZ(:)];