给出了维度n
,我们希望使用等距点对空间进行网格化,让我们在每个维度中从-L
到+L
开始步长{{1} }。现在,我们希望输出是所有给出节点的 n - 维向量。它们都包含在2L/(N+1)
行和n
列的数组中。我想知道如何在MATLAB中编写代码。
提前致谢,
答案 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]
如果您希望输出位于n
个N^n
矩阵中,则循环遍历grd
:
arr = zeros(n,N^n);
for k = 1:n
arr(k,:) = grd{k}(:).';
end
你得到:
>> size(arr)
ans =
3 8000