Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



В приведенном выше примере функция meshgrid используется при создании матриц x и y, которые служат для построения трехмерных графиков. Формат команды meshgrid:

 

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

Построение графиков трехмерных поверхностей.

Команда plot3 является трехмерным аналогом команды plot. Она строит аксонометрическое изображение поверхностей и представлена следующими формами:

 

  • plot3(x, y, z) строит массив точек, представленных векторами x, y, z и соединяет их отрезками прямых;
  • plot3(X, Y, Z) строит линии по точкам, координаты которых берутся из столбцов матриц X, Y, Z.

В качестве примера рассмотрим построение трехмерной спирали и графика функции z = x * x + y * y:

 

subplot(1, 2, 1);

t = 0: pi/50: 10*pi;

plot3(sin(t), cos(t), t);

axis square; grid on; box on;

subplot(1, 2, 2);

[x y]=meshgrid([-3:.25: 3]);

z=x.^2+y.^2;

plot3(x, y, z);

axis tight; box on;

 

 

 

Наиболее представительными и наглядными являются сетчатые графики трехмерных поверхностей с заданной или функциональной окраской. Для построения сетчатых параметрических поверхностей используются команды mesh, meshc, и meshz:

 

  • mesh(X, Y, Z, C) строит сетчатую поверхность Z(X, Y), цвет определяется матрицей C. Если X и Y – векторы, то их размерность должна определяться соотношениями: length(X) = n и length(Y) = m, где

[m, n] = size(Z). В этом случае точки пересечения сеточных линий имеют координаты (X(j), Y(i), Z(i, j)), а X и Y соответствуют столбцам и строкам матрицы Z соответственно. Если X и Y – матрицы, то узлы сетки имеют координаты (X(i, j), Y(i, j), Z(i, j));

  • mesh(X, Y, Z) – аналог предыдущей команды, цвет определяется высотой поверхности;
  • mesh(Z) – строит сетчатую поверхность, используя по умолчанию соотношения: X = 1: n и Y= 1: m, где [m, n] = size(Z);
  • meshс( ) – помимо графика трехмерной поверхности строит ее проекцию в виде линий равного уровня (графика типа contour );
  • meshz( ) – строит трехмерную поверхность в виде многочисленных столбиков.

 

В качестве примера рассмотрим построение графика функции sin(r)/r:

 

[X, Y] = meshgrid(-8:.5: 8);

R = sqrt(X.^2 + Y.^2) + eps;

Z = sin(R)./R;

subplot(1, 2, 1 );

mesh(Z, ' EdgeColor ', ' k ');

subplot (1, 2, 2);

surfl(X, Y, Z);

shading interp; colormap(gray);

здесь константа eps используется для того, чтобы избежать деления на ноль. Команда surfl строит сетчатые графики с использованием закраски ячеек сетки и подсветкой от точечного источника света. Команда colormap(gray) задает окраску тонами серого цвета, а команда shading interp обеспечивает устранение изображения сетки и задает интерполяцию для оттенков цвета объемной поверхности.

 

ПРОГРАММИРОВАНИЕ В СИСТЕМЕ MATLAB.

 

Программирование в системе MATLAB является эффективным средством ее расширения и адаптации к решению специфических задач. Большинство объектов этого языка, в частности все команды, операторы и функции, могут использоваться в командном режиме работы. Программы на языке программирования MATLAB сохраняются в виде текстовых m-файлов. При этом могут сохраняться как целые программы в виде файлов-сценариев, так и отдельные программные модули – функции.

Язык программирования MATLAB является интерпретатором. Это означает, что MATLAB не создает исполняемых конечных программ. Для выполнения программ необходима среда MATLAB. Для создания исполняемых программ следует воспользоваться специально разработанными компиляторами, например – MATLAB Compiler, транслирующими программы MATLAB в коды языков программирования C и C++.

С позиций программиста язык MATLAB является проблемно-ориентированным языком программирования высокого уровня, который содержит множество встроенных сложных функций и операторов. К таким функциям можно отнести матричные функции, функции быстрого преобразования Фурье и другие, а к операторам – операторы построения разнообразных графиков, генерации матриц определенного вида и т.д.

 

Основные типы данных.

В MATLAB определены 14 основных типов данных (или классов), представляющих собой форму массива. Массивы могут быть многомерными или иметь размерность 0x0. Двумерные массивы принято называть матрицами. Типы данных кратко описаны в следующей таблице:

 

Тип данных Пример Описание
single 3*10^38 Числовой массив с одинарной точностью. Не может использоваться в математических операциях.
double 3*10^300 5+6i Числовой массив с двойной точностью. Наиболее часто используемый тип данных.
sparse speye(5) Разреженные матрицы с элементами-числами удвоенной точности.
int8, uint8, int16, uint16, int32, uint32 uint8(magic(3)) Целочисленные массивы со знаком и без знака, длина элементов которых равна 8, 16 и 32 разрядам. Математические операции с этими типами не предусмотрены.
char 'Hello' Строчные массивы с элементами-символами.
cell {17 'hello' eye(2)} Массивы ячеек; ячейки, в свою очередь также могут быть массивами.
structure a.day = 12; a.color = 'Red'; a.mat = magic(3); Массивы записей с полями, которые также могут содержать массивы.
user class inline('sin(x)') Тип данных, определяемый пользователем. Строится на основе функций MATLAB.
java class java.awt.Frame Java класс. Вы можете использовать классы уже определенные в Java API или создать свои собственные на языке Java.
function handle @humps Указатель функции MATLAB. Указатель может передаваться в списке аргументов или определяться командой feval.

 

Каждому типу данных можно соотнести некоторые характерные для него операции, называемые методами. Дочерние типы данных выводятся из родительских классов и наследуют их методы. Поскольку в иерархии типов данных старшим является array, то все типы в MATLAB являются массивами.

 


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 841; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь