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

Lab2_2014

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

Розглянемо приклад сфери, яка розфарбована відповідно до матриці Адамара (Hadamard), що часто використовується в теорії кодування сигналів і яка складається тільки з двох чисел 1 та, - 1.

k = 5; n = 2 ^ k - 1; [X, Y, Z]=sphere(n); C = hadamard(2 ^ k); surf(X, Y, Z, C);

colormap([1 1 1; 2/3 2/3 2/3]) colorbar

Алгоритм:

У загальному вигляді, для задання поверхні можна використати два незалежні параметри i і j, які змінюються безперервно, наприклад в прямокутнику 1 <= i <= m, 1 <= j <= n; тоді поверхня визначатиметься трьома функціями x (i, j), y (i, j), z (i, j). Якщо i і j цілі числа, вони задають прямокутну сітку з цілочисельними значеннями для вузлів. Функції x (i, j), y (i, j), z (i, j) стають двовимірними масивами X, Y, Z розміру m х n. Четверта функція - колір комірок поверхні c (i, j) задає четверту матрицю C.

Кожна точка сітчастої поверхні має в загальному випадку чотирьох сусідів, як показано на наступній схемі.

Така прямокутна сітка приводить до розбиття поверхні на клітинки, які обмежені чотирма ребрами. Кожен внутрішній вузол поверхні має чотирьох сусідів, вузол на межі - трьох, вузол на куті поверхні - двох.

11

Колір такої сітчастої поверхні може бути заданий двома способами: або кольором однієї з вершин, або кольором в центрі клітинки.

Розглянемо, як в цьому випадку діє функціязафарбовування shading. Якщо задано значення shadinginterp, то колір клітинки визначається як білінійна функція поточних координат. Якщо задано значення shading faceted (прийнято за замовчуванням) або shadingflat, то колір клітинки сталий і визначається кольором верхньої лівої вершини, як показано на наступній схемі:

SURFL

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

 

 

Синтаксис:

surfl(X, Y, Z, s)

surfl(Z, s)

surfl(X, Y, Z, s, k)

surfl(Z, s, k)

surfl(X, Y, Z)

surfl(Z)

Опис:

 

Команда surfl (X, Y, Z, s) виводить на екран затінену поверхню з підсвічуванням для значень масиву Z, визначених на множині значень масивів X і Y. Напрям на джерело світла може бути заданий за допомогою вектору s =[Sx, Sy, Sz] у декартових координатах або вектору s = =[az, elev] у сферичних координатах. За замовчування азимут аz = - 37.5°, підвищення elev = 30°. Підсвічування враховує моделі розсіювання, відбиття і дзеркального ефекту освітлення поверхні.

Команда surfl (X, Y, Z, s, k) дозволяє керувати параметрами розсіювання , відбиття і дзеркальногоефекту, використовуючи вектор k =[ka, kd, ks, spread], який враховує ефекти відбитого світла ka, дифузного відбиття kd, дзеркального відбиття ks і дзеркального поширення spread. За замовчуванням вектор k має значення [0.55 0.6 0.4 10].

Команда surfl (X, Y, Z) використовує значення параметрів за замовчуванням.

Команди surfl (Z ...) будують графіки, не враховуючи істинних значень масивів X і Y.

У зв’язку із тим, що алгоритм surfl обчислює нормалі до поверхні, потрібно, щоб початкові матриці мали розмір принаймні 3 х 3.

Приклади:

Побудуємо зображення функції peaks, використовуючи підсвічування.

[X, Y] = meshgrid(-3 : 1/8 : 3); Z = peaks(X, Y);

surfl(X, Y, Z) shading interp colormap(gray)

12

AXIS

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

 

 

Синтаксис:

axis([xmin xmax ymin ymax]) axis([xmin xmax ymin ymax zmin zmax]) axis(‘auto’)

axis(axis) v = axis axis(‘ij’) axis(‘xy’)

axis(‘square’)

axis(‘equal’)

axis(‘off’)

axis(‘on’)

[s1, s2, s3] = axis(‘state’) axis(s1, s2, s3)

Опис:

Команда axis забезпечує спадкоємність попередніх версій системи MATLAB, орієнтованих на символьну обробку, з версіями 4.х, орієнтованими на графічний інтерфейс.

Команда axis ([xmin xmax ymin ymax]) встановлює масштаб по осях x, y для активного графічного вікна.

Команда axis ([xmin xmax ymin ymax zmin zmax]) встановлює масштаб по осях x, y, z для активного графічного вікна.

Команда axis ('auto') повертає масштаб по осях до штатних значень (прийнятим за замовчуванням).

Команда axis (axis) фіксує поточні значення масштабів для наступних графіків, так ніби то був включений режим hold.

Функція v = axis повертає вектор-рядок масштабів по осях для активного графіку. Якщо графік двовимірний, то v має 4 компоненти; якщо тривимірний - 6 компонентів.

Команда axis ('ij') переміщує початок відліку в лівий верхній кут, зберігає положення осей і реалізує відлік по вертикальній осі з верхнього лівого кута (матрична система координат).

Команда axis('equal') устанавливает масштаб, который обеспечивает одинаковые расстояния между метками по осям x и y.

Команда axis ('xy') повертає декартову систему координат; початок відліку знаходиться в нижньому лівому кутку; вісь x горизонтальна і розміщується зліва направо, вісь y вертикальна і розміщується знизу до верху.

Команда axis ('square') встановлює однаковий діапазон варіації змінних по осях.

13

Команда axis ('equal') встановлює масштаб, який забезпечує однакові відстані між мітками по осях x і y.

Команда axis ('image') встановлює масштаб, якийзабезпечує квадратні розміри пікселів.

Команда axis ('normal') відновлює масшаб у повний розмір, відміняючи масштаби, встановлені командами axis ('square') та axis ('equal').

Команда axis ('off') знімає з осей їх позначення і маркери.

Команда axis ('on') відновлює на осях їх позначення та маркери.

Функція [s1, s2, s3] = axis ('state') повертає рядок, що визначає вектор стану об'єкту axes :

s1 = 'auto' | 'manual'.

s2 = 'on' | 'off'.

s3 = 'xy' | 'ij'.

Команда axis (s1, s2, s3) встановлює параметри об'єкту axes відповідно до вектору стану [s1, s2, s3]. За замовчуванням цей вектор набуває значень ['auto', 'on', 'xy'].

GRID

Нанесення сітки

 

 

Синтаксис:

grid on grid off grid

Опис:

Команда grid on наносить координатну сітку на поточні осі.

Команда grid off видаляє координатну сітку.

Команда grid виконує роль перемикача з однієї функції на іншу.

Команди групи grid здійснюють встановлення властивостей 'XGrid', 'YGrid', 'ZGrid' об'єкту axes.

HOLD

Управління режимом збереження поточного графічного

вікна

 

Синтаксис:

hold on hold off hold

Опис:

Команда hold on включає режим збереження поточного графіку і властивостей об'єкту axes, так що подальші команди приведуть до додавання нових графіків в графічному вікні.

Команда hold off вимикає режим збереження графіку.

Команда hold реалізує перемикання від одного режимудо іншого.

Пояснення:

14

Команди hold впливають на значення властивості NextPlot для об'єктів figure і axes :

hold on надає значення add для властивості NextPlot поточним об'єктам figure і axes;

hold off надає значення replace для властивості NextPlot поточним об'єктам figure і axes.

SUBPLOT

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

 

 

Синтаксис:

subplot(m, n, p) subplot(h) subplot(mnp)

Опис:

Ця команда виконується перед зверненням до функцій побудови графіків для одночасної побудови декількох графіків в різних частинах графічного вікна.

Команди subplot (mnp) або subplot (m, n, p), де mnp – 3 цифри, робить розбиття графічного вікна на декілька підвікон, створюючи при цьому нові об'єкти axes; значення m вказує, на скільки частин розбивається вікнопо горизонталі, n - по вертикалі, а p - номер підвікна, куди виводитиметься черговий графік. Ці ж команди можуть використовуватися для переходу від одного підвікна до іншого.

Команда subplot (h), де h - дескриптор для об'єкту axes відповідного підвікна, - інший спосіб вибору підвікна для розміщення графіку.

Команди clf, subplot (111), subplot (1, 1, 1) виконують однуі ту ж функцію - видаляють усі підвікна і повертають графічне вікно в штатний стан.

Приклад:

У верхній частині екрану будується графік функції y1 = sin(x), в нижній - y2 = log(abs(y)).

x = -1:.1:1; y1 = sin(x);

subplot(2, 1, 1), plot(x, y1) y2 = log(abs(y1)); subplot(2, 1, 2), plot(x, y2)

ZOOM

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

 

 

Синтаксис:

zoom on zoom off zoom zoom out

Опис:

Команда zoom on включає режим масштабування активного графіку. Тепер при натисненні лівої клавіші миші поблизу точки графіку, яка цікавить вас, масштаб вікна збільшується в 2 рази; при натисненні правої клавіші масштаб в 2 рази зменшується. Утримуючи ліву клавішу, можна виділити зону вікна, яка цікавить вас.

Команда zoom off вимикає режим масштабування.

Команда zoom реалізує перемикання від одного режимудо іншого.

15

Команда zoom out повертає графік в початковий стан.

COLORMAP

Палітра кольорів

 

 

Синтаксис:

colormap(C)

colormap(‘default’)

C = colormap caxis(caxis)

Опис:

Палітра кольорів C - це матриця розміру m х 3 дійснихчисел з діапазону [0.0 1.0]. Рядок k палітри сформованийз трьох чисел, які вказують інтенсивність червоного,зеленого і синього кольорів, тобто C (k :) =[r (k) g (k) b (k)].

Команда colormap (C) встановлює палітру згідно з матрицею C. Якщо значення елементу матриці виходить за межі інтервалу [0 1], видається повідомлення про помилку

Colormap must have values in [0,1].

Значення елементів палітри мають бути з інтервалу [0 1].

Команди colormap ('default') або colormap (hsv) встановлюють штатну палітру, яка відповідає моделі hue,- saturation - value (відтіннок-насищеність-значення).Послідовність кольорів цієї палітри відповідає барвам веселки.

red

Червоний

Каждый

 

 

 

-

-

охотник

 

 

 

yellow

Жевтий

желает

 

 

 

green

Зелений

знать,

 

 

 

cyan

Блакитнийй

где

 

 

 

blue

Синій

сидит

 

 

 

magenta

Фіолетовий

фазан

 

 

 

У версій 4.x системи MATLAB реалізовані наступніпалітри:

bone

Grey-scale with tinge of blue color map

Сіра палітка з відтінком синьо

 

 

 

 

 

cool

Shades of cyan and magenta color map

Палітра з відтінком блакитного і фіолетового

 

 

 

 

 

copper

Linear copper-tone color map

Лінійна палітра з відтінками міді

 

 

 

 

 

flag

Alternating red, white, blue, and black

Палітра з чергуванням червоного, синього, чорного

 

 

color map

 

 

 

 

 

 

gray

Linear grey-scale color map

Лінійна палітра з відтінками сірого

 

 

 

 

 

hot

Black-red-yellow-white color map

Палітра з чергуванням чорного, червоного, довтого, білого

 

 

 

 

 

hsv

Hue-saturation-value color map

Палітра веселки

 

 

 

 

 

jet

Variant of hsv

Разновид hsv-палітри

 

 

 

 

 

pink

Pastel shades of pink color map

Рожева палітра з пастельними відтінками

 

 

 

 

 

prism

Prism (red-orange-yellow-green -blue-

Палітра з чергуванням червоного, помаранчевого, жовтого,

 

 

violet) color map

зеленого, синього, фіолетового

 

 

 

 

 

white

All white color map

Беіла палітра

 

 

 

Встановлення відповідності між палітрою

 

CAXIS

 

 

 

кольорів і масштабуванням осей

 

 

 

Синтаксис:

16

caxis([cmin cmax]) caxis( ‘auto’ )

v = caxis caxis(caxis)

Опис:

Команда caxis дає простий спосіб управління властивостями Clim і CLimMode об'єкту axes і таким чином забезпечує спадкоємність попередніх версій системи MATLAB, орієнтованих на символьну обробку, з версіями 4.x, орієнтованими на графічний інтерфейс.

Команда caxis ([cmin cmax]) встановлює діапазон з палітри кольорів для масштабування даних, які використовуються об'єктами surface і patch, що створені за допомогою команд mesh, pcolor, surf.

Параметри cmin і cmax призначені для вибору граничних кольорів з поточної палітри. Значення кольорів позаінтервалом [cmin cmax] відсікаються, тобто відповідні фрагменти і пікселі не виводяться на екран.

Команда caxis ('auto') встановлює штатне масштабування даних палітрою кольорів; в цьому випадку відсікаються кольори, які відповідають значенням Inf і NaN.

Команда v = caxis повертає вектор-рядок [cmin cmax].

Команда caxis (caxis) фіксує поточну палітру для подальших графіків, начебто був включений режим hold.

Приклад:

[X, Y, Z] = sphere(32);

% Cфера радіусом 1

C = Z;

% Значення для С - в діапазоні [-1 1].

surf(X, Y, Z, C)

% Зобрадення сфери

SHADING

Затінювання поверхонь

 

 

Синтаксис:

shading faceted shading flat shading interp

Опис:

Команди групи shading встановлюють спосіб затінюванняграфічних об'єктів surface і patch, які створюються при використанні функцій mesh, surf, pcolor, fill і fill3.

17

Команда shading faceted встановлює рівномірне розфарбовування комірок з нанесенням чорних граней. Таке затінювання поверхні часто виявляється найбільш ефективним і прийняте за замовчуванням.

Команда shading flat встановлює розфарбовування кожної клітинки або грані певними кольорами, які залежать від кольору вузлів сітки.

Команда shading interp встановлює розфарбовування кожної клітинки або грані кольорами, які визначаються білінійною нитерполяцією кольорів у вузлах сітки.

Алгоритм:

Команды группы shading устанавливают требуемые значения свойств EdgeColor и FaceColor графических объектов surface и patch. Устанавлива-емые значения зависят от того, является ли трехмерный график сетчатой поверхностью (функция mesh) или затененной поверхностью (функция surf).

Команди групи shading встановлюють необхідні значення властивостей EdgeColor і FaceColor графічних об'єктів surface і patch. Встановлені значення залежать від того, чи є тривимірний графік сітчастою поверхнею(функція mesh) чи затіненою поверхнею (функція surf).

CONTOURC

Формування масиву опису ліній рівнів

 

 

Синтаксис:

C = contourc(Z)

C = contourc(x, y, Z)

C = contourc(Z, n)

C = contourc(x, y, Z, n)

C = contourc(Z, v)

C = contourc(x, y, Z, v)

Опис:

 

Функція C = contourc (Z) формує масив C опису ліній рівнів для їх виведення на екран за допомогою функції contour.

Функція C = contourc (x, y, Z) формує масив ліній рівнів із урахуванням діапазону зміни координат x і y.

Функції C = contourc (Z, n) і C = contourc (x, y, Z, n) формують масив C для n ліній рівнів.

Функції C = contourc (Z, v) і C = contourc (x, y, Z, v) формують масив C тільки для ліній рівня, які задані вектором v.

Маccив ліній рівня складається з двох рядків і описує кожну лінію рівня у вигляді сегменту з наступними параметрами:

значення рівня (leveli) - координати x(i); кількість точок (pairsi) - координати y(i),

так, що массив C має вигляд:

C = [level1 x1 x2 ... xk1 level2 x1 x2 ... xk2 ...; pairs1 y1 y2 ... yk1 pairs2 y1 y2 ... yk2 ...].

Обмеження:

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

CONTOUR

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

 

 

Синтаксис:

contour(Z) contour(x, y, Z)

18

contour(Z, n)

contour(x, y, Z, n)

contour(Z, v)

contour(x, y, Z, v)

contour(...,’тип_лінії’)

 

C = contour(...)

 

[C, h] = contour(...)

 

Опис:

Команда contour (Z) малює двовимірні лінії рівня для масиву даних Z, що визначають поверхню в тривимірному просторі без урахування діапазону зміни координат x і y.

Команда contour (x, y, Z), де x і y - вектори, малює лінії рівня для масиву даних Z з урахуванням діапазону зміни координат x і y.

Команди contour (Z, n), contour (x, y, Z, n) малює n ліній рівня для масиву даних Z; за замовчуванням, n дорівнює 10.

Команди contour (Z, v), contour (x, y, Z, v) малюють лінії рівня для заданих значень, які вказані у векторі v.

Команда contour (...,'<тип лінії>') малює лінії рівня, тип і колір яких визначаються параметром <тип лінії> команди plot.

Функція C = contour (...) повертає масив C опису ліній рівнів по аналогії з функцією contourc для подальшого використання командою clabel.

Функція [C, h] = contour (...) повертає масив C і вектор-стовпець дескрипторів h графічних об'єктів line длякожної лінії рівня.

Приклад:

Побудувати лінії рівня для функції в області -2 <= x <= 2, -2<= y<= 2.

x = -2 : .2 : 2; y = x; [X, Y] = meshgrid(x);

Z = X.* exp(- X.^2 - Y.^2); contour(X, Y, Z)

Діагностичні повідомлення:

Якщо менша розмірність масиву Z виявляється менше двох, то видається повідомлення

Matrix must be 2-by-2 or larger.

Матрица должна иметь размер 2 х 2 или больше.

Обмеження:

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

CONTOUR3

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

 

 

Синтаксис:

contour3(Z)

contour3(X, Y, Z)

contour3(Z, n)

contour3(X, Y, Z, n)

C = contour3(...

)

19

[C, h] = contour3(...)

Опис:

Команда contour3 (Z) малює тривимірні лінії рівня для масиву даних Z, що визначають поверхню в тривимірному просторі без урахування діапазону зміни координат x і y.

Команда contour3 (X, Y, Z), де X і Y - двовимірні масиви, визначені за допомогою функції meshgrid, малює лінії рівня для масиву даних Z з урахуванням діапазону зміни координат x і y.

Команди contour3 (Z, n), contour (X, Y, Z, n) малюють n ліній рівня для масиву даних Z; за замовчуванням n дорівнює10.

Функція C = contour3 (...) повертає масив C опису ліній рівнів по аналогії з функцією contourc для подальшого використання командою clabel.

Функція [C, h] = contour3 (...) повертає масив C і вектор-стовпець дескрипторів h графічних об'єктів line длякожної лінії рівня.

Приклад:

Побудувати лінії рівня для функції в області -2 <= x <= 2, -2<= y<= 3.

x = -2 : .2 : 2; y = -2 : .2 : 2;

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

Z = X.* exp(- X.^2 - Y.^2); contour3(X, Y, Z)

Обмеження:

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

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

TITLE

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

 

 

Синтаксис:

title(‘<текст>’)

Опис:

Команда title(‘<текст>’) разміщуєт текст над графіком.

XLABEL

YLABEL Позначення осей

ZLABEL

Синтаксис:

xlabel('<текст>') ylabel('<текст>') zlabel('<текст>')

Опис:

20

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