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

 

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

Трехмерные поверхности обычно описываются функцией двух переменных 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(l: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....) — преобразует область, заданную векторами xl.x2.x3..., в массивы Х1.Х2.ХЗ..., которые могут быть использованы для вычисления функций нескольких переменных и многомерной интерполяции, i-я размерность выходного массива xi  является копией вектора xi;

  • [XI.Х2....] = ndgrid(x) - аналогична [XI.Х2....] = ndgrid(x,x,...). Пример применения функции ndgrid представлен ниже:

»[Х1.'Х2] = ndgrid(-2:.2:2. -2:.2:2); 

»Z = XI .* ехр(-Х1."2 - Х2.*2); 

»mesh(Z)

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