exponenta event banner

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, iВ-м измерении содержатся копии вектора сетки 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++ с помощью MATLAB ® Coder™

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