ndgrid

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

Описание

пример

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

пример

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

Примеры

свернуть все

Создайте 2-D сетку из векторов [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);

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

Создайте грубую сетку для (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.

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

свернуть все

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

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

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

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

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

свернуть все

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

Подробнее о

свернуть все

Преобразование между meshgrid и ndgrid Форматы

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++ с помощью Coder™ MATLAB ®

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