Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab2_2014

.pdf
Скачиваний:
9
Добавлен:
22.02.2016
Размер:
1.32 Mб
Скачать

Лабораторна робота №2

Графіка й візуалізація даних

ТЕОРЕТИЧНИЙ МАТЕРІАЛ

Починаючи з версії 4.0 до складу системи MATLAB входить потужна графічна підсистема, яка підтримує як засоби візуалізації двовимірної і тривимірної графіки, так і засоби презентаційної графіки.Слід виділити декілька рівнів роботи з графічнимиоб'єктами. В першу чергу це команди і функції, орієнтовані на кінцевого користувача і призначені для побудови графіків в прямокутних і полярних координатах, гістограм і стовпчикових діаграм, тривимірних поверхонь і ліній рівня,анімацій. Графічні команди високого рівня автоматично контролюють масштаб, вибір кольорів, не вимагаючи маніпуляцій з властивостями графічних об'єктів.Відповідний низькорівневий інтерфейс забезпечується дескрипторною графікою, коли кожному графічномуоб'єкту ставиться у відповідність графічна підтримка (дескриптор), на який можна посилатися при зверненні до цього об'єкту. Використовуючи дескрипторну графіку, можна створювати меню, кнопки виклику, текстові панелі та іншіоб'єкти графічного інтерфейсу.

Елементарні графічні функції системи MATLAB дозволяють побудувати на екрані і вивести на принтер наступні типи графіків : лінійний, логарифмічний,напівлогарифмічний, полярний.

Для кожного графіку можна задати заголовок, нанести підписи осей і масштабну сітку.

Двовимірні графіки

PLOT - графік в лінійному масштабі

LOGLOG - графік в логарифмічному масштабі

SEMILOGX, SEMILOGY - графік в напівлогарифмічному масштабі

POLAR - графік в полярних координатах

Тривимірні графіки

У системі MATLAB передбачені декілька команд і функцій для побудови тривимірних графіків. Значення елементів числового масиву розглядаються як z- координати точок над площиною, що визначаються координатами x і y.Можливі декілька способів з'єднання цих точок. Перший з них - це з'єднання точок в перерізі (функція plot3), другий -побудова сітчастих поверхонь (функції mesh і surf). Поверхня, побудована за допомогою функції mesh, - це сітчаста поверхня, клітинки якоїї мають колір фону, а їх межі можуть мати колір, який визначається властивістю EdgeColor графічного об'єкту surface. Поверхня,побудована за допомогою функції surf, - це сітчаста поверхня, у якої може бути заданий колір не лише межі, але і клітинки; остання значення встановлю єсть властивістю FaceColor графічного об'єкту

PLOT3 - побудова ліній і точок в тривимірному просторі

MESHGRID - формування двовимірних масивів X і Y

MESH, MESHC, MESHZ - тривимірна сітчаста поверхня

SURF, SURFC - затінена сітчаста поверхня

SURFL - затінена поверхня з підсвічуванням

AXIS - масштабування осей і виведення на екран

GRID - нанесення сітки

HOLD - управління режимом збереження поточного графічного вікна

SUBPLOT - розбиття графічного вікна

ZOOM - управління масштабом графіка

COLORMAP - палітра кольорів

CAXIS - встановлення відповідності між палітрою кольорів і масштабуванням осей

SHADING - затінювання поверхонь

CONTOURC - формування масиву опису ліній рівня

CONTOUR - зображення ліній рівня для тривимірної поверхні

CONTOUR3 - зображення тривимірних ліній рівня

Надписи і пояснення до графіків

TITLE - заголовки для дво- і тривимірних графіків

1

XLABEL, YLABEL, ZLABEL - позначення осей

CLABEL - маркеровані ліній рівня

TEXT - додавання до поточного графіку тексту

GTEXT - розміщує заданий текст на графіку з використанням миші

LEGEND – пояснення до графіку

COLORBAR - шкала палітри

Спеціальна графіка

Раздел специальной графики включает графические команды и функции для построения столбцовых диаграмм, гистограмм, средств отображения векторов и комплексных элементов, вывода дискретных последовательностей данных, а также движущихся траекторий как для двумерной, так и для трехмерной графики. Этот раздел получил свое дальнейшее развитие в версии системы MATLAB 5.0, где специальные графические средства улучшены и существенно расширены.

Розділ спеціальної графіки включає графічні команди і функції для побудови стовпчикових діаграм, гістограм, засобів відображення векторів і комплексних елементів, виведення дискретних послідовностей даних, а також траєкторій, що рухаються, як для двовимірної, так і для тривимірної графіки. Цей розділ отримав свій подальшийрозвиток у версії системи MATLAB 5.0, де спеціальні графічні засоби поліпшені і істотно розширені.

BAR – стовпчикові діаграми

ERRORBAR - графік із вказанням інтервалу похибки

HIST - побудова гістограми

STEM - дискретні графіки

STAIRS - ступінчастий графік

ROSE - гістограма в полярних координатах

COMPASS, FEATHER – векторні графіки

QUIVER - поле градієнтів функції

COMET - рух точки по траєкторії

FILL - зафарбовування багатокутника

COMET3 - рух точки по просторовій траєкторії

SLICE - перерізи функції від трьох змінних

WATERFALL - тривимірна поверхня

FILL3 - зафарбовування багатокутника в тривимірномупросторі

VIEWMTX - обчислення матриці управління кутом

VIEW - управління положенням точки перегляду

Двовимірні графіки

PLOT

Графік в лінійному масштабі

 

 

Синтаксис:

plot(y) plot(x, y) plot(x, y, s)

plot(x1, y1, s1, x2, y2, s2, ...)

Опис:

Команда plot (y) будує графік елементів одновимірногомасиву y залежно від номера елементу; якщо елементи масиву y - комплексні, то будується графік plot (real (y),imag (y)). Якщо y - двовимірний дійсний масив, то будуються графіки для стовпців; у разі комплекснихелементів їх уявні частини ігноруються.

Команда plot (x, y) відповідає побудові звичайної функції, коли одновимірний масив x відповідає значенням аргументу, а одновимірний масив y - значенням функції.Коли один з масивів x або y або обоє є двовимірними,реалізуються наступні побудови:

2

якщо масив y двовимірний, а масив x одновимірний, то будуються графіки для стовпців масиву y залежно від елементів вектору x;

якщо двовимірним є масив x, а масив y одновимірний,то будуються графіки стовпців масиву x залежно від елементів вектору y;

якщо обидва масиви x і y двовимірні, то будуються залежності стовпців масиву y від стовпців масиву x.

Команда plot (x, y, s) дозволяє з використанням рядкової змінної s, яка може включати до трьох символів з нижче поданої таблиці, виділяти графік функції. А саме, можливо вказати спосіб відображення ліній, спосіб відображення точок та колір ліній:

Тип лінії

 

Тип точки

 

Колір

 

 

 

 

 

 

 

Неперервана

-

Крапка

.

Жовтий

y

Штрихова

--

Плюс

+

Фіолетовий

m

Подвійний пунктир

:

Зірочка

*

Блакитний

c

Штрих-пунктирна

-.

Кружечок

o

Червоний

r

 

 

Хрестик

х

Зелений

g

 

 

 

 

Синій

b

 

 

 

 

Білий

w

 

 

 

 

Чорний

k

 

 

 

 

 

 

Якщо колір ліній не вказаний, він вибирається по замовчуванню з шести перших кольорів, з жовтого по синій, повторюючись циклічно.

Команда plot (x1, y1, s1, x2, y2, s2 ...) дозволяє об'єднати на одному графіку декілька функцій y1 (x1), y2 (x2) ...,визначивши для кожної з них свій спосіб відображення.

Використання команд plot виду plot (x, y, s1, x, y, s2) дозволяє для графіка y (x) визначити додаткові властивості, для вказівки яких застосування однієї рядкової змінної s1 недостатньо. Наприклад, при заданні різних кольорів для лінії і точок на ній.

Приклади:

Побудуємо графік функції y = sin(x) на відрізку [- ] з кроком /500:

x = -pi:pi/500:pi; y = sin(x); plot(y) % рис. а

plot(x, y) % рис. б

График на рис. а отображает значения одномерного массива y, состоящего из 1001 элемента, как функцию от номера элемента; график на рис. б отображает значения того же массива как функцию элементов массива x.

Графік на мал. а відображає значення одновимірногомасиву y, що складається з 1001 елементу, як функцію від номера елементу; графік на мал. б відображає значення того ж масиву як функцію елементів масиву x.

а)

3

б)

Розглянемо різні способи застосування функції plot (x, y) на прикладі графіків двох функцій y1 = sin (x)

і y2 = xsin (x):

x1 = -pi:pi/500:pi;

y1 = sin(x1);

y2 = x1.*sin(x1); plot(x1',[y1' y2']) % рис. в plot( [y1' y2'], x1') % рис. г

в)

г)

x2 = x1/2;

y2 = x2.*sin(x2);

plot([x1' x2'], [y1' y2']) % рис. д

4

 

д)

 

 

LOGLOG

Графік в логарифмічному масштабі

 

 

Синтаксис:

loglog(x, y) loglog(x, y, s)

loglog(x1, y1, s1, x2, y2, s2, ...)

Опис:

Команди loglog (...) рівносильні функціям plot, за винятком того, що вони використовують на обох осях логарифмічний масштаб замість лінійного.

Приклади:

Побудуємо графік y = exp(x) в логарифмічному масштабі:

x = logspace(-1, 2); loglog(x, exp(x)) grid

SEMILOGX,

Графік в напівлогарифмічномумасштабі

SEMILOGY

 

 

 

Синтаксис:

semilogx(x, y) semilogx(x, y, s)

semilogx(x1, y1, s1, x2, y2, s2, ...)

semilogy(x, y) semilogy(x, y, s)

semilogy(x1, y1, s1, x2, y2, s2, ...)

Опис:

Команди semilogx (...) використовують логарифмічний масштаб по осі x і лінійний масштаб по осі y.

Команди semilogy (...) використовують логарифмічний масштаб по осі y і лінійний масштаб по осі x.

Приклади:

Побудуємо графік y = exp (x) в напівлогарифмічномумасштабі по осі y :

5

x = 0:0.1:100; semilogy(x, exp(x)) grid

POLAR

Графік в полярних координатах

 

 

Синтаксис:

polar(phi, rho) polar(phi, rho, s)

Опис:

Команди polar (...) реалізують побудову графіків в полярних координатах, що задаються кутом phi і радіусом pho.

Приклади:

Побудуємо графік функції rho = sin(2 * phi) * cos(2 * phi) в полярних координатах

phi = 0:0.01:2 * pi;

polar(phi, sin(2 * phi). * cos(2 * phi))

6

Тривимірні графіки

PLOT3

Побудова ліній і точок в тривимірномупросторі

 

 

Синтаксис:

plot3(x, y, z) plot3(X, Y, Z) plot3(x, y, z, s)

plot3(x1, y1, z1, s1, x2, y2, z2, s2, ...)

Опис:

Команди plot3 (...) є тривимірними аналогами функції plot(...).

Команда plot3 (x, y, z), де x, y, z - одновимірні масиви однакового розміру, будує точки з координатами x (i), y (i),z (i) і сполучає їх прямими лініями.

Команда plot3 (X, Y, Z), де координатами x (i :), y (i:),

X, Y, Z - двовимірні масиви однакового розміру, будує точки з z (i :) для кожного стовпця і сполучає їх прямими лініями.

Команда plot3 (x, y, z, s) дозволяє виділити графік функції z(x, y), вказавши спосіб відображення ліній, спосіб відображення точок, колір ліній і точок за допомого рядкової змінної s, яка може включати до трьох символів з наступної таблиці.

Тип лінії

 

Тип точки

 

Колір

 

 

 

 

 

 

 

Неперервана

-

Крапка

.

Жовтий

y

Штрихова

--

Плюс

+

Фіолетовий

m

Подвійний пунктир

:

Зірочка

*

Блакитний

c

Штрих-пунктирна

-.

Кружечок

o

Червоний

r

 

 

Хрестик

х

Зелений

g

 

 

 

 

Синій

b

 

 

 

 

Білий

w

 

 

 

 

Чорний

k

 

 

 

 

 

 

Якщо колір ліній не вказаний, він вибирається по замовчуванню з шести перших кольорів, з жовтого по синій, повторюючись циклічно.

Команда plot3 (x1, y1, z1, s1, x2, y2, z2, s2 ...) дозволяє об'єднати на одному графіку декілька функцій z1 (x1, y1), z2 (x2, y2) ..., визначивши для кожної з них свій спосіб відображення.

Використання команд plot3 виду plot3 (x, y, z, s1, x, y, z,s2) дозволяє для графіка z (x, y) визначити додаткові властивості, для вказівки яких застосування однієї ядкової змінної s1 недостатньо. Наприклад, при заданні різних кольорів для лінії і точок на ній.

Приклади:

Побудуємо графік функції z = x * exp(-x2 - y2) в тривимірномупросторі.

[ X, Y ] = meshgrid([ -2 : 0.1 : 2 ]); Z = X .* exp(- X .^ 2 - Y .^ 2); plot3(X, Y, Z)

7

MESHGRID

Формування двовимірних масивів X і Y

 

 

Синтаксис:

[X, Y] = meshgrid(x, y) [X, Y] = meshgrid(x)

Опис:

Функція [X, Y] = meshgrid (x, y) задає сітку на площині x – y у вигляді двовимірних масивів X, Y, які визначаються одновимірними масивами x і y. Рядки масиву X є копіями вектору x, а стовпці – копіями вектору y. Формування таких масивів спрощує обчислення функцій двох змінних, дозволяючи застосовувати операції над масивами.

Функція [X, Y] = meshgrid (x) є спрощеною формою запису для функції [X, Y] = meshgrid (x, x).

Приклади:

Визначимо двовимірні масиви і обчислимо функцію , задану на квадраті -2 <= x <= 2, -2 <= y <= 2.

[X, Y] = meshgrid(-2 : 0.2 : 2); Z = X .* exp(-X .* 2 - Y.* 2);

MESH,

 

MESHC,

Тривимірна сітчаста поверхня

MESHZ

 

 

 

Синтаксис:

mesh(X, Y, Z, C)

meshc(X, Y, Z, C)

meshz(X, Y, Z, C)

mesh(x, y, Z, C )

meshc(x, y, Z, C )

meshz(x, y, Z, C )

mesh(Z, C)

meshc(Z, C)

meshz(Z, C)

mesh(X, Y, Z)

meshc(X, Y, Z)

meshz(X, Y, Z)

8

mesh(x, y, Z)

meshc (x, y, Z)

meshz(x, y, Z)

mesh(Z)

meshc(Z)

meshz(Z)

Опис:

Команда mesh (X, Y, Z, C) виводить на екран сітчасту поверхню для значень масиву Z, визначених на безлічі значень масивів X і Y. Кольори вузлів поверхні задаються масивом C. Кольори ребер визначаються властивістюEdgeColor об'єкту surface. Можна задати однаковий колір для усіх ребер, визначивши його у вигляді вектору [r g b] інтенсивності трьох кольорів - червоного, зеленого,синього. Якщо визначити специфікацію none, то ребра непромальовуватимуться. Якщо визначити специфікацію flat, то колір ребер клітинки визначається кольором того вузла, який був першим при обході цьєї клітинки.Оскільки одні і ті ж ребра обходяться кілька разів, то кольори заміщатимуться. Якщо визначити специфікацію interp, то буде реалізована лінійна інтерполяція кольору між вершинами

Применение функции shading после обращения к функции mesh изменяет спецификации свойств EdgeColor и FaceColor согласно следующей таблице.

Застосування функції shading після звернення до функції mesh змінює специфікації властивостей EdgeColor і FaceColor згідно з наступною таблицею.

 

 

Функція, яка може застосовуватися

Властивість

 

 

 

mesh

shading flat

shading interp

 

 

 

 

 

EdgeColor

flat

flat

interp

 

 

 

 

FaceColor

Цвет фона

Цвет фона

Цвет фона

 

 

 

 

Команда mesh (x, y, Z, C) виконує ту ж функцію, але замість двовимірних масивів X, Y використовує їходновимірні проекції, тому якщо length (x) = n, а length(y) = m, то [m, n] = size (Z). В цьому випадку вузли сітчастої поверхні визначаються трійками {x (j), y (i), Z (i, j)}, де вектор x визначає стовпці масиву Z, а y - рядки.

Команда mesh (Z, C) використовує сітку, яка визначається одновимірними масивами x = 1 : n і y = 1 :m.

Команди mesh (X, Y, Z), mesh (x, y, Z), mesh (Z) використовують як масив кольорів C = Z, тобто колір в цьому випадку пропорційний висоті поверхні.

Група команд meshc (...) в доповнення до тривимірнихповерхонь будує проекцію ліній постійного рівня.

Група команд meshz (...) в доповнення до тривимірних поверхонь будує площину відліку на нульовому рівні, перекриваючи поверхню, що лежить нижче цього рівня.

Функція h = mesh (...) повертає дескриптор h для графічного об'єкту surface.

Приклади:

Побудуємо тривимірну поверхню для функції z = x * exp(-x2 -y2) з проекціями ліній постійного рівня.

[ X, Y ] = meshgrid([ -2 : 0.1 : 2 ]); Z = X . * exp(- X .^ 2 - Y .^ 2); meshc(X, Y, Z)

Тепер побудуємо цю ж функцію з формою звіту

meshz(X, Y, Z)

SURF,

Затінена сітчаста поверхня

SURFC

 

 

 

9

Синтаксис:

surf(X, Y, Z, C) surf(x, y, Z, C ) surf(Z, C) surf(X, Y, Z) surf(x, y, Z) surf(Z)

surfc(X, Y, Z, C) surfc(x, y, Z, C ) surfc(Z, C) surfc(X, Y, Z) surfc (x, y, Z) surfc(Z)

Опис:

Команда surf (X, Y, Z, C) виводить на екран поверхню у вигляды сітки для значень масиву Z, визначених на множині значень масивів X і Y. Колір клітинки визначається масивом C. Колір ребер - чорний, визначається властивістю EdgeColor, кодується як [0 0 0]. Є можливість задати однаковий колір для усіх ребер, визначивши його у вигляді вектору [r g b] інтенсивності трьох кольорів - червоного, зеленого, синього. Якщо визначити специфікацію none, то ребра не будуть промальовуватися.

Застосування функції shading після звернення до функції surf змінює специфікації властивостей EdgeColor і FaceColor графічного об'єкту surface згідно з наступною таблицею.

 

 

Функція, яка може застосовуватися

Властивість

 

 

 

surf

shading flat

shading interp

 

 

 

 

 

EdgeColor

[0 0 0]

none

none

 

 

 

 

FaceColor

flat

flat

interp

 

 

 

 

Команда surf (x, y, Z, C) виконує ту ж функцію, але замість двовимірних масивів X, Y використовує їх одновимірні проекції, так що якщо length (x) = = n, а length (y) = m, то [m, n] = size (Z). В цьому випадку вузли сітчастої поверхні визначаються трійками {x (j), y (i), Z (i, j)}, де вектор x визначає стовпці масиву Z, а y - рядки.

Команда surf (Z, C) використовує сітку, яка визначається одновимірними масивами x = 1 : n і y = 1 : m.

Команди surf (X, Y, Z), surf (x, y, Z), surf (Z) використовують як масив кольору C = Z, тобто колір в цьому випадку пропорційний висоті поверхні.

Група команд surfc (...) на додаток до тривимірних затінених поверхонь будує проекцію ліній постійного рівня.

Функція h = surf (...) повертає дескриптор h для графічногооб'єкту surface.

Приклади:

Побудуємо тривимірну затінену поверхню для функції z = x * exp(-x2 - y2) зі шкалою затіненості.

[ X, Y ] = meshgrid([ -2 : 0.1 : 2 ]); Z = X . * exp(- X .^ 2 - Y .^ 2); surf(X, Y, Z)

colormap(gray) shading interp colorbar

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]