Графічні команди та функції
Міністерство освіти і науки, молоді
та спорту України
Національний технічний університет
України
Реферат на тему:
Графічні команди та функції
Київ
Зміст
Загальні відомості по
графічним графікам та функціям
Розглянемо двомірні графіки
Графіка в лінійному масштабі
Розглянемо трьохвимірні
графіки
Завдання осей координат
Лінії рівня
Додаткові можливості
Список використаної
літератури
Загальні відомості по графічним графікам та функціям
Починаючи з версії 4.0 до складу системи MATLAB входить потужна графічна
підсистема, яка підтримує як засобу візуалізації двовимірної і тривимірної
графіки на екран терміналу, так і засоби презентаційної графіки. Слід виділити
декілька рівнів роботи з графічними об'єктами. В першу чергу це команди і функції,
орієнтовані на кінцевого користувача і призначені для побудови графіків в
прямокутних і полярних координатах, гістограм і столбцових діаграм, тривимірних
поверхонь і ліній рівня, анімації. Графічні команди високого рівня автоматично
контролюють масштаб, вибір кольорів, не вимагаючи маніпуляцій з властивостями
графічних об'єктів. Відповідний низькорівневий інтерфейс забезпечується
дескрипторної графікою, коли кожному графічному об'єкту ставиться у
відповідність графічна підтримка (дескриптор), на який можна посилатися при
зверненні до цього об'єкта. Використовуючи дескрипторного графіком, можна
створювати меню, кнопки виклику, текстові панелі і інші об'єкти графічного
інтерфейсу.
За обмеженого обсягу даного довідкового посібника в нього включені тільки
графічні команди і функції з мінімальними елементами дескрипторної графіки.
Зацікавленому читачеві слід звернутися до документації по системі MATLAB, і в
першу чергу до щойно вийшла з друку книзі "Using MATLAB Graphics".
Елементарні графічні функції системи MATLAB дозволяють побудувати на
екрані та вивести на друкувальний пристрій наступні типи графіків: лінійний,
логарифмічний, полулогарифмической, полярний.
Для кожного графіка можна задати заголовок, нанести позначення осей і
масштабну сітку.
Розглянемо двомірні графіки
(y) - побудова графіка одновимірного масиву в залежності від номера
елемента (для двовимірного масиву будуються графіки для стовпців); plot (x, y)
- побудова графіка функції y = y (x); при двовимірному х будуються графіки х =
х (у); якщо обидва масиву двовимірні, будуються залежності для відповідних
стовпців; plot (x, y, LineSpec) - завданням рядки LineSpec (до 3 символів)
визначає стиль ліній, форму маркера точок і колір ліній і маркера:
Символ стиля линии
|
Цвет
|
Цвет
|
Непрерывная - Штриховая
-- Двойной пунктир : Штрихпунктирная -.
|
Желтый y Фиолетовый m
Голубой c Красный r
|
Зеленый g Синий b Белый
w Черный k
|
Маркер може визначатися символами:
+ * ° ´ s
(квадрат) d (ромб) р (п'ятикутник) h (шестикутник)^ <> (стрілки)
За умовчанням вибирається безперервна лінія з точковим маркером і
чергуванням квітів з жовтого по синій.(x1, y1, LineSpec1, x1, y1, LineSpec2,
...) - будує на одному графіку кілька ліній (діапазон по аргументу - об'єднання
х1 і х2;(..., 'PropertyName', PropertyValue, ...)-задає значення властивостей
графічного об'єкту Line (товщину ліній LineWidth, розмір маркера MarcerSize,
колір маркера MarcerFaceColor і та ін.)
Приклад:
>> x=0:0.3:6;
>> y=besselj(0,x);
>> x1=0:0.4:8;
>> y1=besselj(1,x1);
>> plot(x,y,'-sk', x1,y1,'-pk','LineWidth',1 )
Приклад виконання функції plot зображено на рис1.
Рис1. Приклад графіка, функції plot.
Побудова графіків функцій(<ім'я функції>, limits) будує
графік функції (функцій) в інтервалі limits = [xmin, xmax]. В якості імені
функції може використовуватися М-файл або рядок типу 'sin (x)', '[sin (x) cos
(x)]', '[sin (x), myfun1 (x), myfun2 (x)]' . Можна встановити розміри графіка
по осі значень функції limits = [xmin, xmax ymin ymax].(<ім'я функції>,
limits, eps) будує графік c відносною похибкою ерs (за замовчуванням 0.002) і
максимальне число кроків (1/eps) +1. Цю конструкцію можна доповнити четвертим
параметром n (n +1 - мінімальне число точок) і параметром LineSpec:
>> fplot ('[besselj (0, x) besselj (1, x) 0]', [0 10],
[], 20)('f (x)') будує графік f (x), заданої символьним виразом (наприклад,
ezplot ('x ^ 2-2 * x +1')), на інтервалі [-2p 2p] з висновком вираження в
якості заголовка графіка.('f (x)', limits) і ezplot ('f (x)', limits, fig)
будують графік f (x) на зазначеному інтервалі і в заданому вікні. Приклад побудови
графіків функцій зображено на рис.2.
Рис.2. Приклад графіка, функції fplot.
Графік в полярних координатах визначається функціями polar (f, r)
і polar (f, r, LineSpec), де f - масив значень кута і r - відповідні значення
радіусу: x=r×cos(j), y=r×sin(j):
>> f=0:0.01:2*pi;
>> r=sin(2.*f).*cos(2.*f);
>> hp=polar(f,r),hold on
>> set(hp,'LineWidth',4)
Приклад виконання зображено рис3.
Рис3. Реалізація приведеного прикладу.
Розглянемо ще один приклад:
>> f=0:0.01:12*pi;
>> r=exp(-0.1*f);
>> hp=polar(f,r) ,hold on
>> set(hp,'LineWidth',2)
Реалізація роботи відтворена на рис4.
Рис 4. Реалізація приведеного прикладу.
Графік у логарифмічному масштабі задається функцією loglog c тим же
набором параметрів, що і plot, з тією лише різницею, що проводиться
масштабування десятковим логарифмування по обидва координатам.
Графік у напівлогарифмічному масштабі задається функціями semilogx
і semilogy c тим же набором параметрів, що і plot (проводиться масштабування
логарифмування по одній з координат).
Графік з двома осями ординат (одна відображається
ліворуч, інша справа) реалізується функцією plotyy (x1, y1, x2, y2) і тією ж
функцією з додаванням параметрів масштабування 'f1' або 'f1', 'f2', в ролі яких
можуть виступати plot, semilogx, semilogx, loglog:
>> x=0:0.01:12*pi;
>> plotyy(x,sin(x).*exp(-0.1.*x),x, 10*exp(-0.1.*x))
Приклад виконання зображено на рис 5.
Рис 5. Реалізація приведеного прикладу
Розглянемо трьохвимірні графіки
графіка візуалізація презентаційний екран
У тривимірній графіці виконуються представлення функції z = z
(x, y), що відрізняються способом з'єднання точок: лінія, перетину, сітчаста
або суцільна поверхня.(x, y, z) в тих же варіаціях, що і plot, припускає
завдання одновимірних і двовимірних масивів (будуються точки з координатами x
(i, :), y (i, :), z (i, :) для кожного стовпця і з'єднуються прямими лініями.
Якщо використовується [x, y] = meshgrid (...), то будуються перетину.
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
Рис. 6 Реалізація приведеного прикладу
>> [x,y]=meshgrid([-2:0.1:2],[-2:0.01:2]);
>> z=exp(-x.^2-y.^2);
>> plot3(x,y,z)
Приклад побудови графіків функцій зображено на рис.7
Рис.7. Приклад графіка, функції plot3
(x, y, z, c), mesh (z, c), mesh (z) визначають завдання
сітчастої поверхні (масив визначає кольори вузлів поверхні; якщо x, y не
вказани, то x = 1: n, y = 1: m, де [m, n] = size (z).
>> [x,y]=meshgrid(-8:0.5:8);
>> t=sqrt(x.^2+y.^2)+0.001;
>> z=sin(t)./t;
>> mesh(x,y,z)
Приклад побудови графіків функцій зображено на рис. 8
Рис.8. Приклад графіка, функції mesh
Аналогічна функція meshс на додаток до поверхні будує
проекції ліній рівня, а meshz робить зріз поверхні до нульового рівня
(своєрідний п'єдестал).
>> meshc(x,y,z)
Приклад побудови графіка функцій зображено на рис.8.1
Рис.8.1. Приклад графіка, функції meshc
>> meshz(x,y,z)
Приклад побудови графіка функцій зображено на рис.8.2
Рис.8.2. Приклад графіка, функції meshz
(x, y, z, c), surf (z, c), surf (z) визначають завдання
суцільної поверхні, відрізняючись від mesh системою фарбування; аналогічна
функція surfс (...) задає проекції ліній рівня.
Реалізація тривимірної графіки може супроводжуватися безліччю
допоміжних команд, наприклад:on / off включає або вимикає режим видалення
невидимих ліній (за замовчуванням on);faceted / flat / interp
встановлює затінення поверхонь (за замовчуванням faceted дає рівномірне
забарвлення осередків з чорними гранями, flat - квітами вузлів сітки, interp -
інтерполяцією квітів.
Завдання осей координат
Створення графічного об'єкта виходить автоматично при
зверненні до команд, що породжує об'єкти Line і Surface, але може виконуватися
і командою axec ('<ім'я властивості>', <значення>, ...). Є й
команди більш високого рівня:([xmin xmax ymin ymax]), axis ([xmin xmax ymin
ymax zmin zmax]) встановлює масштаб по осях;off / on вимикає (включає) висновок
на координатні осі позначень та маркерів;on / off, grid включає (вимикає) або
перемикає режим нанесення координатної сітки на осях;on / off, box включає
(вимикає) або перемикає режим малювання контуру паралелепіпеда, тривимірний
об'єкт;on / off включає (вимикає) режим інтерактивного масштабування графіків
(ліва миша близько точки збільшує масштаб вдвічі, права - зменшує; утриманням
лівої миші можна виділити прямокутну область для детального перегляду; zoom out
відновлює вихідний графік.
Лінії рівня
На відміну від meshс (...) і surfс (...) функція contour
малює тільки лінії рівня відповідних поверхонь і виступає в різноманітті
синтаксичних форм: contour (X, Y, Z) - для масиву Z = Z (X, Y) , contour (X, Y,
Z, n) - то ж із зазначенням числа ліній рівня (за замовчуванням 10), contour
(X, Y, Z, v) - то ж для масиву зазначених значень; contour (Z), contour (Z, n),
contour (Z, v) - аналогічні функції без вказівки діапазонів для аргументів і
contour (..., LineSpec) - аналогічні функції c зазначенням типу і кольору ліній
(див. plot); [C, h] = contour (...) повертає масив с і вектор дескрипторів,
дозволяючи тим самим продовжити роботу з малюнком (давати оцифровку ліній,
заголовки та ін.)
Функція contourf (...) зафарбовує області між лініями рівня,
аналогічна contourf (...) з різницею в форматі [C, h, cf] = contour (...), де
cf визначає матрицю розмальовки.
>> [x,y]=meshgrid(-8:0.5:8);
>> t=sqrt(x.^2+y.^2)+0.001;
>> z=sin(t).^3./t;
>> [c,h]=contour(x,y,z,20);
Приклад побудови лінії рівня зображено на рис.9
Рис.9 Приклад лінії рівня contour
>> [x,y]=meshgrid(-2:0.25:2);
>> t=sqrt(x.^2+y.^2)+0.001;
>> z=sin(t).^3./t;
>> [c,h,cf]=contourf(x,y,z,4);
Приклад побудови лінії рівня зображено на рис.10
Рис.10 Приклад лінії рівня contourf
Функція contour3 (...) по синтаксису повністю аналогічна
contour (...), але зображує не проекції ліній рівня, а малює їх у просторової
інтерпретації; так команда [c, h] = contour3 (x, y, z, 20) ; дає фігуру
(рис.11)
Рис.11 Приклад прсторові лінії рівня contour3
Додаткові можливості
Створення нового графічного вікна figure; командою figure (n)
можна вибирати деякий із створених вікон в якості поточного.
Включення (виключення) режиму збереження поточного графіка:on
/ off, hold.
Висновок заголовків для графіків (у поточному вікні): title
('текст'), title (<ім'я функції-рядки> '), title (...,' Property-Name ','
PropertyValue ', ...), h = title (...).
Висновок графіків в декількох вікнах малюнка: subplot (m, n,
k), subplot (mnk) - m - число вікон по горизонталі, n - по вертикалі, k - номер
вікна:
>>subplot(121)
>> plot([1:0.3:4])
>> subplot(122)
>> plot([4:-0.3:1])
>> title ('y=4-0.3(x-1)')
Приклад графіків в кількох вікнах зображено на рис.12
Рис.12 Графік в кількох вікнах
Виведення тексту для позначення координатної осі: xlabel
(...), ylabel (...), zlabel (...) - синтаксис аналогічний title (...).
Виведення тексту в зазначеній позиції графіка: text (x, y,
'текст'), text (x, y, z, 'текст'), text (... 'PropertyName', 'PropertyValue',
...), h = text (...).) - x, y, z-координати початку тексту.
Виведення тексту під управлінням миші: gtext ('текст'), h =
gtext ('текст') - виведений текст можна переміщати мишею.
Висновок легенди legend ('Текст1', 'Текст2', ...), legend
(M), legend (h, M), legend off, legend (..., pos), h = legend (...) - тут М -
рядковий масив (довжина рядків однакова), off видаляє пояснення до графіку, pos
визначає позицію легенди (-1 - праворуч від графіка, 0 - в одному з 4 кутів із
мінімумом втрат точок графіка, 1-4 - у вказаному кутку, [xy] - у вказаному
місці); можна перетягувати легенду мишею.
>> subplot(111)
>> t=[0:pi/30:2*pi];
>> a=sin(t); b=cos(t);
>> x=0:60;
>> plot(x,a+b),hold on
>> hp=plot(x,a', 'g', x,b','r'); set(hp,'LineWidth',2)
>> legend('a+b','a=sin(t)','b=cos(t)')
Приклад реалізації зображено на рис.13
Рис.13 Реалізація прикладу
Маркування ліній рівня, створюваних функціями contour,
contour3, contourf: clabel (C, h), clabel (C, h, v), clabel (C, h, 'manual'),
clabel (C), clabel (C, v) , clabel (C, 'manual') - за наявності h маркування на
лініях, при наявності 'manual' - примусова маркування натисканням лівої миші
або пробілу (права миша або Return завершує маркування).
Список використаної літератури
1.
http://www.exponenta.ru/soft/matlab/potemkin/book2/chapter10/contens.asp
2.
<http://vtit.kuzstu.ru/books/shelf/158/doc/glava9.html>