Реферат: Основы графической визуализации вычислений


Основы графической визуализации вычислений

 


Особенностиграфики системы MATLAB

 

·  Построение графика функций однойпеременной

·  Построение графиков точками иотрезками прямых

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

·  Гистограммы и диаграммы

·  Графики специальных типов

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

·  Построение графиков трехмерныхповерхностей, сечений и контуров

·  Средства управления подсветкой иобзором фигур

·  Средства оформления графиков

·  Одновременный вывод несколькихграфиков

·  Управление цветовой палитрой

·  Окраска трехмерных поверхностей

·  Двумерные и трехмерные графическиеобъекты

 

Основныеотличительные черты графики MATLAB

 

·  существенно улучшенный интерфейсграфических окон;

·  введение новой панели инструментовCamera для интерактивного изменения условий видимости объекта;

·  расширенные возможностиформатирования графики;

·  возможность создания графики вотдельных окнах;

·  возможность вывода несколькихграфических окон;

·  возможность перемещения окон по экрануи изменения их размеров;

·  возможность перемещения областиграфики внутри графического окна;

·  задание различных координатных системи осей;

·  высокое качество графики;

·  широкие возможности использованияцвета;

·  легкость установки графических признаков- атрибутов;

·  снятие ограничений на число цветов;

·  обилие параметров команд графики;

·  возможность получения естественновыглядящих трехмерных фигур и их сочетаний;

·  простота построения трехмерныхграфиков с их проекцией на плоскость;

·  возможность построения сеченийтрехмерных фигур и поверхностей плоскостями;

·  функциональная многоцветная иполутоновая окраска;

·  возможность имитации световыхэффектов при освещении фигур точечным источником света;

·  возможность создания анимационнойграфики;

·  возможность создания объектов длятипового интерфейса пользователя.

 

Построениеграфика функций одной переменной

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

/>


Рассмотримпростейший пример — построение графика синусоиды. MATLAB строит графики функцийпо ряду точек, соединяя их отрезками прямых, т. е. осуществляя линейнуюинтерполяцию функции в интервале между смежными точками. Зададим интервализменения аргумента x от 0 до 10 с шагом 0.1. Дляпостроения графика достаточно вначале задать вектор х=0:0.1:10, а затемиспользовать команду построения графиков plot (sin(x)).

Вектор x задает интервал изменения независимой переменной от 0 до 10 сшагом 0.1. Функция plot строит не истинный график функции sin(x), алишь заданное числом элементов вектора x число точек. Эти точки затем просто соединяются отрезкамипрямых, т. е. осуществляется кусочно-линейная интерполяция данных графика. При100 точках полученная кривая глазом воспринимается как вполне плавная, но при10 — 20 точках она будет выглядеть состоящей из отрезков прямых.

MATLAB строитграфики в отдельных окнах, называемых графическими окнами. В главном меню окнакоманды пункта меню Tools (Инструменты), позволяют вывести или скрытьинструментальную панель. Средства этой панели позволяют легко управлятьпараметрами графиков и наносить на них текстовые комментарии в любом месте.

 

Построениев одном окне графиков нескольких функций

/>

Построимграфики сразу трех функций:sin(x), cos(x) и sin(x)/х. Прежде всего, отметим, что эти функции могут бытьобозначены переменными, не имеющими явного указания аргумента в виде у (x):

>>y1=sin(x);y2=cos(x); y3=sin(x)/x;

Такаявозможность обусловлена тем, что эти переменные являются векторами — как ипеременная x. Теперь можно использовать одну из ряда форм команды

plot:plot(a1, f1, a2, f2, a3, f3,...).

где a1, a2, a3,…- векторы аргументов функций, а f1, f2, f3,… — векторызначений функций, графики которых строятся в одном окне. В нашем случае дляпостроения графиков указанных функций мы должны записать следующее:

>>plot (x, y1, x, y2, x, y3)

/>

Можноожидать, что MATLAB в этом случае построит, как обычно, точки графиков этихфункций и соединит их отрезками линий. Но, если мы выполним эти команды, тоникакого графика не получим вообще. Не исключен даже сбой в работе программы.Причина этого казуса возникнет при вычислении функции y3=sin(x)/x, если xпредставляет собой массив (вектор), то нельзя использовать оператор матричногоделения /.

Чтобыполучить график, надо вычислять отношение sin(x) к x с помощью оператора поэлементного деления массивов ./.

>>y1=sin(x);y2=cos(x); y3=sin(x)./x;

Warning:Divide by zero.

(Type«warning off MATLAB:divideByZero» to suppress this warning.)

>>plot(x,y1,x,y2,x,y3)

/>

MATLABпостроил графики всех трех функций, но в окне командного режима появилосьпредупреждение о делении на 0 — в момент, когда х=0. Это говорит о том, что plot «не знает» о том, чтонеопределенность sin(x)/x=0/0 устранима и дает 1. Это недостаток практически всехсистем для численных вычислений.

 

Графическаяфункция fplot

MATLAB имеетсредства для построения графиков и таких функций, как sin(x)/x, которые имеют устранимыенеопределенности. Это делается, с помощью другой графической команды –

fplot:fplot('f(x)', [xmin, xmax])


Она позволяетстроить функцию, заданную в символьном виде, в интервале изменения аргумента хот xmin до xmax без фиксированного шага изменения х. Хотя в процессевычислений предупреждение об ошибке (деление на 0) выводится, график строитсяправильно, при х=0 sinx/x=1. Команда grid on (сетка)- включает отображение сетки, которая строитсяпунктирными линиями.

>>fplot('sin(x)/x', [-15,15]); grid on

 

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

Дляотображения функции одной переменной у (x) используются графики в декартовой (прямоугольной) системекоординат. При этом обычно строятся две оси: горизонтальная X и вертикальная Y,и задаются координаты x и у, определяющиеузловые точки функции у(x).

Команда plot служит для построения графиковфункций в декартовой системе координат. Эта команда имеет ряд параметров,рассматриваемых ниже.

·  plot (X, Y) — строит график функции у(х), координаты точек (х,у) которой берутся из вектороводинакового размера Y и X. Если X или Y — матрица, то строится семействографиков по данным, содержащимся в колонках матрицы.

/>


Приведенныйниже пример иллюстрирует построение графиков двух функций — sin(x) и cos(x), значения, функции которых содержатся в матрице Y, а значенияаргумента х хранятся в векторе X:

>>x=[0 1 2 3 4 5];

>>y1=sin(x); y2=cos(x);

>> plot(x,y1,x,y2)

На рисункепоказан график функций из этого примера. В данном случае отчетливо видно, чтографик состоит из отрезков, и если вам нужно, чтобы отображаемая функция имелавид гладкой кривой, необходимо увеличить количество узловых точек. Расположениеих может быть произвольным.

/>

·  plot(Y) —строит график у(x), гдезначения y берутся из вектора Y, а x представляет собой индекс соответствующего элемента. Если Yсодержит комплексные элементы, то строится график plot (real (Y), imag(Y)). Во всех других случаях мнимая частьданных игнорируется.

Примериспользования команды plot(Y):

>>x=-2*pi:0.02*pi:2*pi;

>>y=sin(x)+i*cos(3*x);

>>plot(y)


plot(X,Y,S) — аналогична команде plot(X,Y), но тип линии графика можно задавать с помощью строковойконстанты S.

 

Значениямиконстанты S могут быть следующие символы:

 

Цвет линии Тип точки Тип линии Желтый y Точка . Сплошная - Фиолетовый m Окружность Двойной пунктир ; Голубой c Крест x Штрих-пунктир -. Красный r Плюс + Штриховая -- Зеленый g Звездочка * Синий b Квадрат s Белый w Ромб d Черный k Треугольник (вниз) v Треугольник (вверх) ^ Треугольник (влево) <  Треугольник (вправо) >  Пятиугольник p Шестиугольник h

/>

Такимобразом, с помощью строковой константы S можно изменять цвет линии,представлять узловые точки различными отметками (точка, окружность, крест,треугольник с разной ориентацией вершины и т. д.) и менять тип линии графика.

·  рlot (X1,Y1, S1, Х2, Y2, S2, ХЗ, Y3, S3,...) — эта команда строит на одномграфике ряд линий, представленных данными вида (X.,Y.,S.), где X. и Y. — векторы или матрицы, а S. —строки. С помощью такой конструкции возможно построение, например, графикафункции линией, цвет которой отличается от цвета узловых точек. Так, если надопостроить график функции линией синего цвета с красными точками, то вначаленадо задать построение графика с точками красного цвета (без линии), а затемграфика только линии синего цвета (без точек).

Приотсутствии указания на цвет линий и точек он выбирается автоматически изтаблицы цветов (белый исключается). Если линий больше шести, то выбор цветовповторяется. Для монохромных систем линии выделяются стилем.

Рассмотримпример построения графиков трех функций с различным стилем представления каждойиз них:

>>x=-2*pi:0.1*pi:2*pi;

>>y1=sin(x);y2=sin(x).^2;

>>y2=sin(x).^2;

>>y3=sin(x).^3;

>>plot(x,y1,'-m',x,y2,'-.+r',x,y3,'--ok')

Здесь графикфункции y1 строится сплошной фиолетовой линией, график у2 строится штрих пунктирной линией с точками в виде знака«плюс» красного цвета, а график yЗ строится штриховой линией с кружкамичерного цвета.

 

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

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


/> 

·  loglogx(...) — синтаксис команды аналогичен ранее рассмотренномудля функции plot(...). Логарифмический масштаб используется для координатныхосей X и Y. Нижедан пример применения данной команды:

>>x=logspace(-1,3);

>>loglog(x,exp(x)./x) grid on

Функция x = logspace(d1, d2) формирует вектор-строку, содержащую50 равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазонот 10d1 до 10d2 .

Функция x =logspace(d1, d2, n) формирует вектор-строку, содержащую n равноотстоящих в логарифмическом масштабе точек, которыепокрывают диапазон от 10d1 до 10d2.

На рисункепредставлен график функции ехр(х)/х в логарифмическом масштабе. Командой grid on строится координатная сетка. Неравномерное расположение линийкоординатной сетки указывает на логарифмический масштаб осей.

 

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

В некоторыхслучаях предпочтителен полулогарифмический масштаб графиков, когда по одной осизадается логарифмический масштаб, а по другой — линейный.

Дляпостроения графиков функций в полулогарифмическом масштабе используютсяследующие команды: semilogx(...) — строит график функции влогарифмическом масштабе (основание 10) по оси X и линейном по оси Y; semilogy(...)— строит график функции в логарифмическом масштабе пооси Y и линейном по оси X.

/>

Записьпараметров (...) выполняется по аналогии с функцией plot(...). приведем примерпостроения графика экспоненциальной функции:

>>x=0:0.5:10;

>>semilogy(x,exp(x))

Нетруднозаметить, что при таком масштабе график экспоненциальной функции выродился впрямую линию. Масштабной сетки теперь уже нет.

 

Столбцовыедиаграммы

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

·  bar(x, Y) — строит столбцовый график элементоввектора Y (или группы столбцов для матрицы Y) со спецификацией положениястолбцов, заданной значениями элементов вектора х, которые должны идти в монотонно возрастающем порядке;

·  bar(Y)— строит график значений элементовматрицы Y так же, как указано выше, нофактически для построения графика используется вектор х=1:m;

·  bar(x,Y,WIDTH) или bar(Y,WIDTH) — команда аналогична ранеерассмотренным, но со спецификацией ширины столбцов (при WIDTH > 1 столбцы в одной и той же позицииперекрываются). По умолчанию задано WIDTH = 0.8.

Возможноприменение этих команд и в следующем виде: bar(… 'Спецификация') для задания спецификации графиков, например типа линий,цвета и т. д., по аналогии с командой plot. Спецификация 'stacked' задает рисование всех n столбцов в позиции m друг на друге.

Примерпостроения столбцовой диаграммы матрицы размером 12x3 приводится ниже:

>>%Столбцовая диаграмма

>>subplot(2,1,1), bar(rand(12,3),stacked'), colormap(cool)

/>

Помимокоманды bar(...) существует аналогичная ей по синтаксису команда barh(...), которая" строит столбцовые диаграммы сгоризонтальным расположением столбцов.

>>subplot(2,1,1), barh(rand(5,3), 'stacked'),colormap(cool)


/>

Какое именнорасположение столбцов выбрать, зависит от пользователя, использующего этикоманды для представления своих данных.

 

Построениегистограмм

Классическаягистограмма характеризует числа попаданий значений элементов вектора Y в Минтервалов с представлением этих чисел в виде столбцовой диаграммы. Дляполучения данных для гистограммы служит функция hist, записываемая в следующемвиде:

·  N=hist(Y) — возвращает вектор чисел попаданийдля 10 интервалов, выбираемых автоматически. Если Y — матрица, то выдаетсямассив данных о числе попаданий для каждого из ее столбцов;

·  N=hist(Y,M) — аналогична вышерассмотренной, но используется М интервалов(М- скаляр);

·  N=hist(Y,X) — возвращает числа попаданий элементов вектора Y винтервалы, центры которых заданы элементами вектора X;

·  [N,X]=HIST(...) — возвращает числа попаданий в интервалы и данные оцентрах интервалов.

Команда hist(...) с синтаксисом, аналогичным приведенному выше, строитграфик гистограммы. В следующем примере строится гистограмма для 1000 случайныхчисел и выводится вектор с данными о числах их попаданий в интервалы, заданныевектором x:


/>

>>x=-3:0.2:3;

>>y=randn(1000,1);

>>hist(y,x)

>>h=hist(y,x)

h=

Columns1 through 9

0 03 7 8 9 11 23 33

Columns10 through 18

4357 55 70 62 83 87 93 68

Columns19 through 27

7065 41 35 27 21 12 5 6

Columns28 through 31

3 2 1 0

Нетруднозаметить, что распределение случайных чисел близко к нормальному закону.Увеличив их количество, можно наблюдать еще большее соответствие этому закону.

 

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

Трехмерныеповерхности обычно описываются функцией двух переменных z(x,y). Специфика построения трехмерныхграфиков требует не просто задания ряда значений x и у, то есть векторов 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 и у,в массивы X и Y, которые могут быть использованы для вычисления функции двухпеременных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора x; а столбцы Y — копиями вектора у.

Пример:

>> [X,Y]=meshgrid(1: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:0.2:2,-2:0.2:2);

Такой вызовфункции позволяет задать опорную плоскость для построения трехмернойповерхности при изменении x и y от-2 до 2с шагом 0.2.

Функция ndgrid является многомерным аналогом функцииmeshgrid:

·  [Х1, Х2, ХЗ,...] = ndgrid(x1,x2,x3....) — преобразует область, заданную векторами x1,.x,x3..., в массивы Х1, Х2, ХЗ..., которые могут быть использованы длявычисления функций нескольких переменных и многомерной интерполяции, i-яразмерность выходного массива Xi является копиейвектора xi;

[XI, Х2....] = ndgrid(x) — аналогична [XI, Х2....] = ndgrid(x,x,...).

Примерприменения функции ndgrid представлен ниже:

>>[X1,X2]=ndgrid(-2:0.2:2,-2:0.2:2);

>>Z=X1.*exp(-X1.^2-X2.^2);

>> mesh(Z)

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

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

·  plot3(x, y, z) — строит массив точек, представленных векторами x, у и z соединяя их отрезками прямых. Этакоманда имеет ограниченное применение;

·  plot3(X,Y,Z), где X, Y и Z — три матрицы одинакового размера, строит точки скоординатами X(i,:), Y(i,:) и Z(i,:) исоединяет их отрезками прямых.

Ниже данпример построения трехмерной поверхности, описываемой функцией

z(х, у)=х^2+у^2;

>> [X,Y]=meshgrid(-3:0.15:3);

>>Z=X.^2+Y.^2;

>>plot3(X,Y,Z)

График этойповерхности показан на рисунке:

/>

·  plot3 (X, Y, Z, S) —обеспечивает построения, аналогичные рассмотренным ранее, но со спецификациейстиля линий и точек, соответствующей спецификации команды plot. Ниже дан пример применения этой команды для построенияповерхности кружками:

>>[X,Y]=meshgrid(-3:0.15:3);

>>Z=X.^2+Y.^2;

>>plot3(X,Y,Z,'o')


Графикповерхности, построенный кружками, показан на рисунке:

 

/>

·  plot3(x1 ,y1,z1, s1, х2, у2,z2, s2, х3, уЗ,z3,s3,...) строит наодном рисунке графики нескольких функций z1(x1 ,y1), z2(x2,y2) ит. д. со спецификацией линий и маркеров каждой из них.

Примерприменения последней команды дан ниже:

>>[X,Y]=meshgrid(-3:0.15:3);

>>Z=X.^2+Y.^2;

>>plot3(X,Y,Z,'-k',Y,X,Z,'k')

/>

В данномслучае строятся два графика одной и той же функции с взаимно перпендикулярнымиобразующими линиями. Поэтому график имеет вид сетки без окраски ее ячеек(напоминает проволочный каркас фигуры).

 


Установкатитульной надписи

После тогокак график уже построен, MATLAB позволяет выполнить его форматирование илиоформление в нужном виде. Соответствующие этому средства описаны ниже. Так, дляустановки над графиком титульной надписи используется следующая команда:

·  title( 'string') — установка на двумерных итрехмерных графиках титульной надписи, заданной строковой константой 'string'.

Установкаосевых надписей

Для установкинадписей возле осей х, у и zиспользуются следующие команды:

/>

xlabel('String')

ylabel('String')

zlabell('String')

Соответствующаянадпись задается символьной константой или переменной 'String'. Пример установки титульной надписи и надписей по осям графиковприводится ниже:

>>surfl(X,Y,Z)

>>[X,Y]=meshgrid(-3:0.15:3);

>>Z=sin(X)./(X.^2+Y.^2+0.3);

>>surfl(X,Y,Z)

>>colorbar

>>colormap(gray)

>>shading interp

>>xlabel('Axis X')

>>ylabel('Axis Y')

>>zlabel('Axis Z')

>> title('Surface graphic')

 

Вводтекста в любое место графика

Частовозникает необходимость добавления текста в определенное место графика,например для обозначения той или иной кривой графика. Для этого используетсякоманда text:

·  text(X,Y, 'string') — добавляет в двумерный графиктекст, заданный строковой константой 'string', так что начало текста расположено в точке с координатами (X, Y). Если X и Y заданы как одномерные массивы, то надпись помещается во все позиции [x(i) ,y(i)];

/>

·  text(X,Y,Z. 'string') — добавляет в трехмерный графиктекст, заданный строковой константой 'string',так что начало текста расположено в позиции, заданной координатами X, Y и Z.

В приведенномпримере надпись размещается под кривой графика в позиции (-4, 0.7):

>>x=-10:0.1:10;

>>plot(x,sin(x).^3)

>>text(-4,0.7,'graphic sin(x)^3')

 

Позиционированиетекста с помощью мыши

Очень удобныйспособ ввода текста предоставляет команда gtext:

·  gtext('string') — задает выводимый на график текст ввиде строковой константы' string' и выводит награфик, перемещаемый мышью маркер в виде крестика. Установив маркер в нужноеместо, достаточно щелкнуть любой кнопкой мыши для вывода текста;

·  gtext (С) — позволяет аналогичным образомразместить многострочную надпись из массива строковых переменных С.

Примерприменения команды gtext:

>>x=-10:0.1:10;

>>plot(x,sin(x).^3)

>>gtext('Function sin(x)^3')

Установивперекрестие в нужное место графика, достаточно нажать любую клавишу или любуюкнопку мыши, и на этом месте появится надпись

Выводпояснений

Пояснение ввиде отрезков линий со справочными надписями, размещаемое внутри графика илиоколо него, называется легендой. Для создания легенды используются различныеварианты команды legend:

·  legend(string1,,string2, string3,...) — добавляет к текущему графикулегенду в виде строк, указанных в списке параметров;

·  legend (М) — размещает легенду, используяданные из строковой матрицы М;

·  legend OFF — устраняет ранее выведенную легенду;

·  legend (....Pos) — помещает легенду в точноопределенное место, специфицированное параметром Pos:

-  Pos=0 — лучшее место, выбираемое автоматически;

-  Pos=1 — верхний правый угол;

-  Pos=2 — верхний левый угол;

-  Pos=3 — нижний левый угол;

-  Pos=4 — нижний правый угол;

-  Pos=-1 — справа от графика.

Чтобыперенести легенду, установите на нее курсор, нажмите левую кнопку мыши иперетащите легенду в необходимую позицию.

Команда legend может использоваться с двумерной и трехмернойграфикой и со специальной графикой — столбцовыми и круговыми диаграммами и т.д. Двойным щелчком можно вывести легенду на редактирование.

/>

Пример,приведенный ниже, строит график трех функций с легендой, размещенной в полеграфика:

>>x=-2*pi:0.1*pi:2*pi;

>>y1=sin(x);

>>y2=sin(x).^2;

>>y3=sin(x).^3;

>>plot(x,y1,'-m',x,y2,'-.+r',x,y3,'--ok')

>>legend('Function 1','Function 2', 'Function 3');

Управлениесвойствами осей графиков

Обычнографики выводятся в режиме автоматического масштабирования. Следующие командыкласса axis меняют эту ситуацию:

·  axis([XMIN XMAX YMIN YMAX]) — установка диапазонов координат поосям x и у для текущего двумерного графика;

·  axis([XMIN XMAX YMIN YMAX ZMIN ZMAX])- установка диапазоновкоординат по осям x, у и z текущего трехмерного графика;

·  axis auto — установка параметров осей поумолчанию;

·  axis manual — «замораживает» масштабирование втекущем состоянии, чтобы при использовании команды hold on следующие графики использовали те же параметры осей;

·  axis tight — устанавливает диапазоны координатпо осям в соответствии с диапазонами изменения данных;

·  axis ij — задает «матричную» прямоугольную систему координатс началом координат в левом верхнем углу, ось i — вертикальная, размечаемая сверху вниз, ось j — горизонтальная и размечается слева направо;

·  axis xy — устанавливает декартову систему координат сгоризонтальной осью х, размечаемой слева направо, и вертикальной осью у, размечаемойснизу вверх. Начало координат размещается в нижнем левом углу;

·  axis equal — включает масштаб с одинаковымрасстоянием между метками по осям х, у и z;

·  axis image — устанавливает масштаб, при которомпиксели изображения становятся квадратами;

·  axis square — устанавливает текущие оси в видеквадрата (или куба в трехмерном случае) с одинаковым расстоянием между меткамии одинаковой длиной осей;

·  axis normal — восстанавливает масштаб, отменяяустановки axis equal и axis square;

·  axis vis3d — «замораживает» пропорции осей длявозможности поворота трехмерных объектов;

·  axis off— убирает с осей их обозначения и маркеры; 0

·  axis on — восстанавливает ранее введенные обозначения осей имаркеры;

/>

·  V=axis — возвращает вектор- строку, содержащую коэффициентымасштабирования для текущего графика. Если текущий график двумерный, то векторимеет 4 компонента, если трехмерный — 6 компонентов.

Следующийпример иллюстрирует применение команды axisпри построении двумерного графика функции одной переменной:

>>axis([-10 10 -1.5 1.5])

>>x=-5:0.1:5;

>>plot(x, sin(x));

>>axis([-8 8 -1.5 1.5])


Обратитевнимание, что теперь масштабы осей заданы командой axis, а не диапазономизменения значений x и у.

 

Включениеи выключение сетки

Вматематической, физической и иной литературе при построении графиков вдополнение к разметке осей часто используют масштабную сетку. Команды gridпозволяют задавать построение сетки или отменять это построение:

·  grid on — добавляет сетку к текущему графику;

·  grid off — отключает сетку;

·  grid — последовательно производит включение и отключениесетки.

/>

Команды grid устанавливают свойства объектов XGrid, Ygrid и Zgrid для текущих осей. Ниже приведен пример изпредшествующего раздела с добавлением в него команды grid:

>>x=-5:0.1:5;

>>plot(x, sin(x));

>> axis([-8 8 -1.5 1.5])

>> grid on

 


Наложениеграфиков друг на друга

Во многихслучаях желательно построение многих наложенных друг на друга графиков в одноми том же окне. Для этого служит команда продолжения графических построений hold. Она используется в следующих формах:

·  hold on — обеспечивает продолжение вывода графиков в текущееокно, что позволяет добавлять последующие графики к уже существующим;

·  hold off — отменяет режим продолженияграфических построений;

·  hold— работает как переключатель, последовательно включая режим продолженияграфических построений и отменяя его.

Команда hold on устанавливает значение add для свойства NextPlot объектов figure и axes, a hold off устанавливает для этого свойствазначение replace.

Графикисинусоиды и трех параметрических функций в одном окне

/>

Приведенныйниже пример показывает, как с помощью команды hold on на график синусоиды накладываются еще три графикапараметрически заданных функций:


>>x=-5:0.1:5;

>>plot(x, sin(x));

>>hold on

>>plot(sin(x), cos(x));

>>plot(2*sin(x), cos(x));

>>plot(4*sin(x), cos(x));

>> hold off

В концеприведенного фрагмента программы команда hold off отключает режим добавления графиков к ранеепостроенным графикам.

 

Разбиениеграфического окна

/>

Бывает, что водном окне надо расположить несколько координатных осей с различными графикамибез наложения их друг на друга. Для этого используются команды subplot, применяемые перед построением графиков:

·  subplot — создает новые объекты класса axes (подокна);

·  subplot(m,n, p) или subplot(mnp) — разбивает графическое окно на тхпподокон, при этом m — число подоконпо горизонтали, n — число подоконпо вертикали, а p— номер подокна,в которое будет выводиться текущий график (подокна отсчитываютсяпоследовательно по строкам);

·  subplot(H), где Н — дескриптор для объекта axes, даетальтернативный способ задания подокна для текущего графика;

·  subplot( 'position',[left bottomwidth height]) — создаетподокно с заданными нормализованными координатами (в пределах от 0.0 до 1.0);

·  subplot(lll) и clf reset — удаляют все подокна и возвращают графическое окно в обычное состояние.

Следующийпример иллюстрирует применение команды subplot:

>>x=-5:0.1:5;

>>subplot(2,2,1), plot(sin(x), cos(x))

>>subplot(2,2,2), plot(sin(5*x), cos(2*x+0.2))

>>subplot(2,2,3), plot(sin(4*x), cos(2*x))

>> subplot(2,2,4), plot(cos(2*x))

В этомпримере последовательно строятся четыре графика различного типа, размещаемых вразных подокнах.

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

 

Изменениемасштаба графика

Для изменениямасштаба двумерных графиков используются команды класса zoom:

·  zoom— переключает состояние режима интерактивного изменения масштаба длятекущего графика;

·  zoom (FACTOR) устанавливает масштаб в соответствиис коэффициентом FACTOR;

·  zoom on — включает режим интерактивного изменения масштабадля текущего графика;

·  zoom off — выключает режим интерактивногоизменения масштаба для текущего графика;

·  zoom out — обеспечивает полный просмотр, т.е. устанавливает стандартный масштаб графика;

·  zoom xon или zoom yon — включает режим изменения масштабатолько по оси x или по оси у;

·  zoom reset — запоминает текущий масштаб вкачестве масштаба по умолчанию для данного графика;

/>

Команда zoom позволяет управлять масштабированием графика спомощью мыши. Для этого надо подвести курсор мыши к интересующей вас областирисунка. Если команда zoomвключена (on), то нажатие левой кнопки увеличивает масштаб вдвое, аправой — уменьшает вдвое. При нажатой левой кнопке мыши можно выделитьпунктирным черным прямоугольником нужный участок графика — при отпусканиикнопки он появится в увеличенном виде и в том масштабе, который соответствуетвыделяющему прямоугольнику.

Рассмотримработу команды zoom на следующем примере:

>>x=-5:0.1:5;

>>plot(x, sin(x.^5)./(x.^5+eps))

>> zoom on

Послепрекращения манипуляций левой кнопкой мыши график примет вид, показанный нарисунке. Теперь в полный размер графического окна будет развернуто изображение,попавшее в выделяющий прямоугольник.

/>

Команда zoom, таким образом, выполняет функцию «лупы», позволяющейнаблюдать в увеличенном виде отдельные фрагменты сложных графиков. Однакоследует учитывать, что для наблюдения фрагментов графиков при высокомувеличении они должны быть заданы большим количеством точек. Иначе видотдельных фрагментов и тем более особых точек (в нашем случае это точка при x вблизи нуля) будет существенно отличаться от истинного.

 

Установкапалитры цветов

Посколькуграфика MATLAB обеспечивает получение цветных изображений, в ней есть рядкоманд для управления цветом и различными световыми эффектами. Среди них важноеместо занимает установка палитры цветов. Палитра цветов RGB задается матрицей MAP изтрех столбцов, определяющих значения интенсивности красного (red), зеленого (green) и синего (blue) цветов. Их интенсивность задается в относительных единицах от 0.0 до1.0. Например, [0 0 0] задает черный цвет, [1 1 1] — белый цвет, [0 0 1] —синий цвет. При изменении интенсивности цветов в указанных пределах возможнозадание любого цвета. Таким образом, цвет соответствует общепринятому форматуRGB.

Для установкипалитры цветов служит команда colormap, записываемая в следующих формах:

·  colormap( 'default') — устанавливает палитру поумолчанию, при которой распределение цветов соответствует радуге;

·  colormap(MAP) — устанавливает палитру RGB,заданную матрицей MAP;

·  C= colormap — функция возвращает матрицу текущейпалитры цветов С.

m-файл сименем colormap устанавливает свойства цветов длятекущего графика.

Команда help graph3d наряду с прочим выводит полныйсписок характерных палитр, используемых графической системой MATLAB:

·  hsv — цвета радуги;

·  hot — чередование черного, красного, желтого и белогоцветов;

·  gray — линейная палитра в оттенках серого цвета;

·  bone — серые цвета с оттенком синего;

·  copper — линейная палитра с оттенками меди;

·  pink — розовые цвета с оттенками пастели;

·  white — палитра белого цвета;

·  flag — чередование красного, белого, синего и черногоцветов;

·  lines — палитра с чередованием цветов линий;

·  colorcube — расширенная палитра RGB;

·  jet — разновидность палитры HSV;

·  prism — призматическая палитра цветов;

·  cool — оттенки голубого и фиолетового цветов;

·  autumn -оттенки красного и желтого цветов;

·  spring — оттенки желтого и фиолетового цветов;

·  winter — оттенки синего и зеленого цветов;

·  summer — оттенки зеленого и желтого цветов.

Все этипалитры могут служить параметрами команды colormap, например colormap(hsv) фактически устанавливает то же, что и команда colormap( 'default').

 

Построениесферы

Для расчетамассивов X, Y и Z координат точек сферы как трехмерной фигуры используетсяфункция sphere:

·  [X,Y,Z]=sphere(N) — генерирует матрицы X, Y и Z размера (N+1)x (N+1)для последующего построения сферы с помощью команд surfl (X, Y,Z) или surfl(X,Y,,Z);

·  [X,Y,Z]=sphere — аналогична предшествующей функциипри N=20.

/>

Примерприменения этой функции:

>>[X,Y,Z]=sphere(30);

>>surfl(X,Y,Z)

Хорошо видныгеометрические искажения (сфера приплюснута), связанные с разными масштабами покоординатным осям.

Обратитевнимание на то, что именно функциональная окраска сферы придает ей довольнореалистичный вид. В данном случае цвет задается вектором Z.

еще рефераты
Еще работы по информатике, программированию