在MATLAB中创建一系列网格点

时间:2017-02-11 20:55:46

标签: arrays matlab vector grid cell

给出了维度n,我们希望使用等距点对空间进行网格化,让我们在每个维度中从-L+L开始步长{{1} }。现在,我们希望输出是所有给出节点的 n - 维向量。它们都包含在2L/(N+1)行和n列的数组中。我想知道如何在MATLAB中编写代码。

提前致谢,

1 个答案:

答案 0 :(得分:2)

如果我理解正确,那就是你要找的:

n = 3; % no. of dimensions
L = 4; % bounds
N = 20; % no. of points
grd = cell(1,n);
[grd{:}] = ndgrid(-L:2*L/(N-1):L);

此处grd是一个包含n个单元格的单元格数组,每个单元格用于一个维度。请注意,如果您需要N分,则需要将差距设置为2*L/(N-1),因为2*L/N会为您提供N+1分。

grd = 
    [20x20x20 double]    [20x20x20 double]    [20x20x20 double]

如果您希望输出位于nN^n矩阵中,则循环遍历grd

arr = zeros(n,N^n);
for k = 1:n
    arr(k,:) = grd{k}(:).';
end

你得到:

>> size(arr)
ans =
           3        8000