Иллюстрированный самоучитель по MatLab

Создание массивов данных для трехмерной графики

Трехмерные поверхности обычно описываются функцией двух переменных z(x, у). Специфика построения трехмерных графиков требует не просто задания ряда значений х и у, то есть векторов х и у. Она требует определения для X и Y двумерных массивов – матриц. Для создания таких массивов служит функция meshgrid. В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция meshgrid записывается в следующих формах:

  • [X.Y] = meshgrid(x) – аналогична [X.Y] = meshgrid(x.x);
  • [X.Y.Z] = meshgrid(x.y,z) – возвращает трехмерные массивы, используемые для вычисления функций трех переменных и построения трехмерных графиков;
  • [X.Y] = meshgrid(x.y) – преобразует область, заданную векторами х и у, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора х; а столбцы Y – копиями вектора у.

Пример:

>> [X.Y] = meshgnd(1:4.13:17)
X =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Y=
13 13 13 13
14 14 14 14
15 15 15 15
16 16 16 16
17 17 17 17

Приведем еще один пример применения функции meshgrid:

>> [X.Y] = meshgrid(-2:.2:2. - 2:.2:2);

Такой вызов функции позволяет задать опорную плоскость для построения трехмерной поверхности при изменении от -2 до 2 с шагом 0.2. Дополнительные примеры применения функции meshgrid будут приведены далее при описании соответствующих команд. Рекомендуется ознакомиться с также командами surf и slice (ломтик).

Функция ndgrid является многомерным аналогом функции meshgrid:

  • [Х1.Х2.ХЗ,…] = ndgrid(xl,x2,x3….) – преобразует область, заданную векторами x1.x2.x3…, в массивы Х1.Х2.Х3…, которые могут быть использованы для вычисления функций нескольких переменных и многомерной интерполяции, i-я размерность выходного массива xi является копией вектора xi;
  • [XI.Х2….] = ndgrid(x) – аналогична [XI.Х2….] = ndgrid(x,x,…). Пример применения функции ndgrid представлен ниже:
>>[X1.X2] = ndgrid(-2:.2:2. - 2:.2:2);
>>Z = X1*exp(-X1*2 - X2*2);
>>mesh(Z)

Рекомендуем читателю опробовать действие этого примера.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.