ndgrid

Прямоугольная сетка на пробеле N-D

Описание

пример

[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn) реплицирует векторы сетки x1,x2,...,xn произвести n- размерная полная сетка.

пример

[X1,X2,...,Xn] = ndgrid(xg) задает один вектор сетки xg использовать для всех размерностей. Количество выходных аргументов, которые вы задаете, определяет размерность n из выхода.

Примеры

свернуть все

Создайте 2D сетку из векторов [1 3 5 7 9 11 13 15 17 19] и [2 4 6 8 10 12].

[X,Y] = ndgrid(1:2:19,2:2:12)
X = 10×6

     1     1     1     1     1     1
     3     3     3     3     3     3
     5     5     5     5     5     5
     7     7     7     7     7     7
     9     9     9     9     9     9
    11    11    11    11    11    11
    13    13    13    13    13    13
    15    15    15    15    15    15
    17    17    17    17    17    17
    19    19    19    19    19    19

Y = 10×6

     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12

Оцените и постройте функцию

x1e-x12-x22

по области с координатной сеткой

-2<x1<2 и -2<x2<2.

Создайте сетку значений для области.

[X1,X2] = ndgrid(-2:.2:2);

Выполните функцию по области.

Z = X1 .* exp(-X1.^2 - X2.^2);

Сгенерируйте сетчатый график функции.

mesh(X1,X2,Z)

Figure contains an axes. The axes contains an object of type surface.

В R2016b и более поздних релизах, эта задача не требует использования ndgrid. Вместо этого можно создать сетку с помощью неявного расширения с этими командами:

x = -2:.2:2;

Z1 = x.' .* exp(-(x.').^2 - x.^2);

Создайте 2D сетку и вычислите некоторые значения функции на сетку. Интерполируйте между присвоенными значениями, чтобы совершенствовать сетку.

Создайте крупную сетку для (x,y) в области значений [-5,5].

[X,Y] = ndgrid(-5:0.5:5);

Вычислите некоторые значения функции на сетку и постройте функцию.

f = sin(X.^2) * cos(Y.^2);
surf(X,Y,f)

Figure contains an axes. The axes contains an object of type surface.

Интерполируйте между точками с помощью более усовершенствованной сетки и постройте результат.

[X1,Y1] = ndgrid(-5:0.125:5);
F = interpn(X,Y,f,X1,Y1,'spline');
surf(X1,Y1,F)

Figure contains an axes. The axes contains an object of type surface.

Входные параметры

свернуть все

Векторы сетки в виде векторов, содержащих декартовы координаты для каждой размерности. Векторы сетки неявно задают сетку. Например, в 2D:

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да

Вектор сетки для всех размерностей в виде вектора, содержащего декартовы координаты. ndgrid использование xg как вектор сетки для каждой размерности.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да

Выходные аргументы

свернуть все

Полное представление сетки, возвращенное как отдельные массивы. Для каждого выходного массива Xi, iразмерность th содержит копии вектора сетки xi.

Больше о

свернуть все

Преобразуйте между meshgrid и ndgrid ' format '

meshgrid и ndgrid создайте сетки с помощью различных выходных форматов. А именно, первые две размерности сетки, созданной с помощью одной из этих функций, подкачиваются когда по сравнению с другим форматом сетки. Некоторый MATLAB® функционирует сетки использования в meshgrid формат, в то время как другие используют ndgrid формат, таким образом, распространено преобразовать сетки между этими двумя форматами.

Можно преобразовать между этими форматами сетки использование pagetranspose (с R2020b) или permute подкачивать первые две размерности массивов сетки. Например, создайте 3-D сетку с meshgrid.

[X,Y,Z] = meshgrid(1:4,1:3,1:2);

Теперь транспонируйте первые две размерности каждого массива сетки, чтобы преобразовать сетку в ndgrid формат, и сравнивает результаты с выходными параметрами от ndgrid.

Xt = pagetranspose(X);
Yt = pagetranspose(Y);
Zt = pagetranspose(Z);
[Xn,Yn,Zn] = ndgrid(1:4,1:3,1:2);
isequal(Xt,Xn) & isequal(Yt,Yn) & isequal(Zt,Zn)
ans =

  logical

   1

Используя pagetranspose эквивалентно перестановке первых двух размерностей при оставлении других размерностей тем же самым. Можно также выполнить эту операцию с помощью permute(X,[2 1 3:ndims(X)]).

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представлено до R2006a