Введение графики функций и данных
Скачать 0.55 Mb.
|
ОГЛАВЛЕНИЕ ВВЕДЕНИЕ……………………………………………………………………..…2 1. ГРАФИКИ ФУНКЦИЙ И ДАННЫХ…………………………………………3 2. СОЗДАНИЕ МАССИВОВ ДАННЫХ ДЛЯ ТРЕХМЕРНОЙ ГРАФИКИ…..9 3. ОФОРМЛЕНИЕ ГРАФИКОВ………………………………………………..11 ЗАКЛЮЧЕНИЕ……………………………………………………………….…20 СПИСОК ЛИТЕРАТУРЫ……………………………………………………….21 ВВЕДЕНИЕ Одно из достоинств системы MATLAB – наличие обильных средств графики, которая начинается от команд построения простых графиков функций одной переменной в декартовой системе координат и заканчивая комбинированными и презентационными графиками с элементами анимации. Система MATLAB обладает средствами проектирования графического пользовательского интерфейса (GUI), что очень удобно при создании своих приложений. Большое и пристальное внимание в системе MATLAB уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых и визуальных эффектов. Система MATLAB дает возможность построение графиков как командами, исполняемыми из командной строки, так и с помощью простых программ с линейной структурой. 1. ГРАФИКИ ФУНКЦИЙ И ДАННЫХ Построение графика функций одной переменной Функции одной переменной y(x) широко применяются в практике математических, физически, статистических и других расчетов, а также в математическом моделировании различных процессов. Для визуального отображения таких функций используются различные графики в декартовой (прямоугольной) системе координат. При этом обычно используются две оси, где: X –горизонтальная ось и Y вертикальная ось (Рис.1). Они определяют координаты x и y, определяющие узловые точки функции y(x). Эти точки соединяются друг с другом отрезками прямых, то есть при построении графика осуществляется линейная интерполяция для промежуточных точек. Поскольку MATLAB – матричная система, совокупность точек y(x) задается векторами X и Y одинакового размера. Команда plot служит для построения графиков функций в декартовой системе координат. Эта команда имеет ряд параметров, рассматриваемых ниже. plot(X,Y) строит график функции y(x), координаты точек (x,y) которой берутся из векторов одинакового размера Y и X. Если X или Y – матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы. • Рис.1. Графики двух функций в декартовой системе координат plot(Y) строит график y(i), где значения y берутся из вектора Y, а i представляет собой индекс соответствующего элемента (Рис.2). Если Y содержит комплексные элементы, то выполняется команда plot(real(Y), imag(Y)). Во всех других случаях мнимая часть данных игнорируется. plot(X,Y,S) аналогична команде plot(X,Y), но тип линии графика можно задавать с помощью строковой константы S. Рис.2. График функции, представляющей вектор Y с комплексными элементами plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,…) – эта команда строит на одном графике ряд линий, представленных данными вида (Xi ,Yi,Si), где Xi иYi – векторы или матрицы, а Si – строки. С помощью такой конструкции возможно построение, например, графика функции линией, цвет которой отличается от цвета узловых точек (Рис. 3). Так, если надо построить график функции линией синего цвета с красными точками, то вначале надо задать построение графика с точками красного цвета (без линии), а затем графика только линии синего цвета (без точек). Рис.3. Построение графиков трех функций на одном рисунке с разным стилем линий Графики в логарифмическом масштабе Для построения графиков функций со значениями x и у, изменяющимися в широких пределах, нередко используются логарифмические масштабы (Рис. 4). Команды, которые используются в таких случаях. Рис.4. График функции exp(x)/x в логарифмическом масштабе loglogx(...) - синтаксис команды аналогичен ранее рассмотренному для функции plot(...). Логарифмический масштаб используется для координатных осей X и Y. Функция x = logspace(d1, d2) формирует вектор-строку, содержащую 50 равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10d1 до 10d2 . Функция x =logspace(d1, d2, n) формирует вектор-строку, содержащую n равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10d1 до 10d2. На рисунке представлен график функции ехр(х)/х в логарифмическом масштабе. Командой grid on строится координатная сетка. Неравномерное расположение линий координатной сетки указывает на логарифмический масштаб осей. Графики в полулогарифмическом масштабе В некоторых случаях предпочтителен полулогарифмический масштаб графиков, когда по одной оси задается логарифмический масштаб, а по другой — линейный. Для построения графиков функций в полулогарифмическом масштабе используются следующие команды: semilogx(...) — строит график функции в логарифмическом масштабе (основание 10) по оси X и линейном по оси Y; semilogy(...)— строит график функции в логарифмическом масштабе по оси Y и линейном по оси X (Рис.5). Рис.5. График экспоненты в полулогарифмическом масштабе Запись параметров (...) выполняется по аналогии с функцией plot(...). приведем пример построения графика экспоненциальной функции: Нетрудно заметить, что при таком масштабе график экспоненциальной функции выродился в прямую линию. Масштабной сетки теперь уже нет. Столбцовые диаграммы Столбцовые диаграммы широко используются в литературе, посвященной финансам и экономике, а также в математической литературе. Ниже представлены команды для построения таких диаграмм. 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 друг на друге (Рис. 6). Рис.6. Пример построения диаграммы с вертикальными столбцами Помимо команды bar(...) существует аналогичная ей по синтаксису команда barh(...), которая" строит столбцовые диаграммы с горизонтальным расположением столбцов (Рис.7). Рис.7. Пример построения столбцовой диаграммы с горизонтальными столбцами Какое именно расположение столбцов выбрать, зависит от пользователя, использующего эти команды для представления своих данных. Построение гистограмм Классическая гистограмма характеризует числа попаданий значений элементов вектора Y в М интервалов с представлением этих чисел в виде столбцовой диаграммы. Для получения данных для гистограммы служит функция hist, записываемая в следующем виде. N=hist(Y) — возвращает вектор чисел попаданий для 10 интервалов, выбираемых автоматически. Если Y — матрица, то выдается массив данных о числе попаданий для каждого из ее столбцов. N=hist(Y,M) — аналогична вышерассмотренной, но используется М интервалов (М- скаляр). N=hist(Y,X) — возвращает числа попаданий элементов вектора Y в интервалы, центры которых заданы элементами вектора X. [N,X]=HIST(...) — возвращает числа попаданий в интервалы и данные о центрах интервалов. Команда hist(...) с синтаксисом, аналогичным приведенному выше, строит график гистограммы. В следующем примере строится гистограмма для 1000 случайных чисел и выводится вектор с данными о числах их попаданий в интервалы, заданные вектором x (Рис. 8). Рис.8. Пример построения гистограммы Нетрудно заметить, что распределение случайных чисел близко к нормальному закону. Увеличив их количество, можно наблюдать еще большее соответствие этому закону. 2. СОЗДАНИЕ МАССИВОВ ДАННЫХ ДЛЯ ТРЕХМЕРНОЙ ГРАФИКИ Трехмерные поверхности обычно описываются функцией двух переменных z(x,y). Специфика построения трехмерных графиков требует не просто задания ряда значений x и у, то есть векторов x и у. Она требует определения для X и Y двумерных массивов - матриц. Для создания таких массивов служит функция meshgrid. В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция meshgrid записывается в следующих формах. Функция ndgrid является многомерным аналогом функции meshgrid: [Х1,Х2,ХЗ,...] = ndgrid(x1,x2,x3....) — преобразует область, заданную векторами x1,.x,x3..., в массивы Х1,Х2,ХЗ..., которые могут быть использованы для вычисления функций нескольких переменных и многомерной интерполяции, i-я размерность выходного массива Xi является копией вектора xi. Построение графиков поверхностей Команда plot3(...) является аналогом команды plot (...), но относится к функции двух переменных z(x, у) (Рис.9). Она строит аксонометрическое изображение трехмерных поверхностей и представлена следующими формами. plot3(x, y, z) — строит массив точек, представленных векторами x, у и z соединяя их отрезками прямых. Эта команда имеет ограниченное применение. plot3(X,Y,Z), где X, Y и Z — три матрицы одинакового размера, строит точки с координатами X(i,:), Y(i,:) и Z(i,:) и соединяет их отрезками прямых. Рис.9. График поверхности plot3 (X, Y, Z, S) — обеспечивает построения, аналогичные рассмотренным ранее, но со спецификацией стиля линий и точек, соответствующей спецификации команды plot. Ниже дан пример применения этой команды для построения поверхности кружками: График поверхности, построенный кружками, показан на рисунке 10: Рис.10. График поверхности, построенный разноцветными кружками plot3(x1 ,y1,z1, s1,х2,у2,z2, s2, х3,уЗ,z3,s3,...) — строит на одном рисунке графики нескольких функций z1(x1 ,y1), z2(x2,y2) и т. д. со спецификацией линий и маркеров каждой из них (Рис.11). Рис.11. График функции в сетчатом представлении В данном случае строятся два графика одной и той же функции с взаимно перпендикулярными образующими линиями. Поэтому график имеет вид сетки без окраски ее ячеек (напоминает проволочный каркас фигуры). 3. ОФОРМЛЕНИЕ ГРАФИКОВ Установка титульной надписи После того как график уже построен, MATLAB позволяет выполнить его форматирование или оформление в нужном виде. Соответствующие этому средства описаны ниже. Так, для установки над графиком титульной надписи используется следующая команда (Рис.12). title( 'string') — установка на двумерных и трехмерных графиках титульной надписи, заданной строковой константой 'string'. Рис.12. График трехмерной поверхности с титульной надписью и надписями по координатным осям Соответствующая надпись задается символьной константой или переменной 'String'. Ввод текста в любое место графика Часто возникает необходимость добавления текста в определенное место графика, например для обозначения той или иной кривой графика(Рис. 13). Для этого используется команда text. text(X,Y, 'string') — добавляет в двумерный график текст, заданный строковой константой 'string', так что начало текста расположено в точке с координатами (X, Y). Если X и Y заданы как одномерные массивы, то надпись помещается во все позиции [x(i) ,y(i)]. Рис.13. Пример ввода надписи в поле графика функции text(X,Y,Z. 'string') — добавляет в трехмерный график текст, заданный строковой константой 'string', так что начало текста расположено в позиции, заданной координатами X, Y и Z. Позиционирование текста с помощью мыши Очень удобный способ ввода текста предоставляет команда gtext: gtext('string') — задает выводимый на график текст в виде строковой константы ' string' и выводит на график, перемещаемый мышью маркер в виде крестика. Установив маркер в нужное место, достаточно щелкнуть любой кнопкой мыши для вывода текста. gtext (С) — позволяет аналогичным образом разместить многострочную надпись из массива строковых переменных С. Установив перекрестие в нужное место графика, достаточно нажать любую клавишу или любую кнопку мыши, и на этом месте появится надпись Вывод пояснений Пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него, называется легендой. Для создания легенды используются различные варианты команды legend: legend(string1,,string2, string3,...) — добавляет к текущему графику легенду в виде строк, указанных в списке параметров; legend (М) — размещает легенду, используя данные из строковой матрицы М; legend OFF — устраняет ранее выведенную легенду; legend (....Pos) — помещает легенду в точно определенное место, специфицированное параметром Pos: Pos=0 - лучшее место, выбираемое автоматически; Pos=1 - верхний правый угол; Pos=2 - верхний левый угол; Pos=3 - нижний левый угол; Pos=4 - нижний правый угол; Pos=-1 - справа от графика. Чтобы перенести легенду, установите на нее курсор, нажмите левую кнопку мыши и перетащите легенду в необходимую позицию (Рис.14). Команда legend может использоваться с двумерной и трехмерной графикой и со специальной графикой - столбцовыми и круговыми диаграммами и т. д. Двойным щелчком можно вывести легенду на редактирование. Рис.14. График трех функций с легендой в поле графика Управление свойствами осей графиков Обычно графики выводятся в режиме автоматического масштабирования. Следующие команды класса axis меняют эту ситуацию (Рис.15). 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 — убирает с осей их обозначения и маркеры. axis on — восстанавливает ранее введенные обозначения осей и маркеры. Рис.15. Пример задания масштаба осей двумерного графика V=axis — возвращает вектор- строку, содержащую коэффициенты масштабирования для текущего графика. Если текущий график двумерный, то вектор имеет 4 компонента, если трехмерный — 6 компонентов. Обратите внимание, что теперь масштабы осей заданы командой axis, а не диапазоном изменения значений x и у. Включение и выключение сетки В математической, физической и иной литературе при построении графиков в дополнение к разметке осей часто используют масштабную сетку (Рис.16). Команды grid позволяют задавать построение сетки или отменять это построение: Рис.16. График синусоиды с сеткой разметки Команды grid устанавливают свойства объектов XGrid, Ygrid и Zgrid для текущих осей. Разбиение графического окна Бывает, что в одном окне надо расположить несколько координатных осей с различными графиками без наложения их друг на друга. Для этого используются команды subplot, применяемые перед построением графиков (Рис.17). Рис.17. Четыре графика различного типа, размещенных в подокнах одного окна subplot — создает новые объекты класса axes (подокна). subplot(m,n, p) или subplot(mnp) — разбивает графическое окно на тхп подокон, при этом m — число подокон по горизонтали, n — число подокон по вертикали, а p— номер подокна, в которое будет выводиться текущий график (подокна отсчитываются последовательно по строкам). subplot(H), где Н — дескриптор для объекта axes, дает альтернативный способ задания подокна для текущего графика. subplot( 'position',[left bottom width height]) — создает подокно с заданными нормализованными координатами (в пределах от 0.0 до 1.0). subplot(lll) и clf reset — удаляют все подокна и возвращают графическое окно в обычное состояние. В этом примере последовательно строятся четыре графика различного типа, размещаемых в разных подокнах. Для всех графиков возможна индивидуальная установка дополнительных объектов, например титульных надписей, надписей по осям и т. д. Изменение масштаба графика Для изменения масштаба двумерных графиков используются команды класса zoom. Рис.18 Выделение части графика мышью при использовании команды zoom Команда zoom позволяет управлять масштабированием графика с помощью мыши. Для этого надо подвести курсор мыши к интересующей вас области рисунка. Если команда zoom включена (on), то нажатие левой кнопки увеличивает масштаб вдвое, а правой — уменьшает вдвое. При нажатой левой кнопке мыши можно выделить пунктирным черным прямоугольником нужный участок графика — при отпускании кнопки он появится в увеличенном виде и в том масштабе, который соответствует выделяющему прямоугольнику. После прекращения манипуляций левой кнопкой мыши график примет вид, показанный на рисунке. Теперь в полный размер графического окна будет развернуто изображение, попавшее в выделяющий прямоугольник (Рис.19.). Рис.19. График выделенного участка Команда zoom, таким образом, выполняет функцию «лупы», позволяющей наблюдать в увеличенном виде отдельные фрагменты сложных графиков. Однако следует учитывать, что для наблюдения фрагментов графиков при высоком увеличении они должны быть заданы большим количеством точек. Иначе вид отдельных фрагментов и тем более особых точек (в нашем случае это точка при x вблизи нуля) будет существенно отличаться от истинного. Установка палитры цветов Поскольку графика MATLAB обеспечивает получение цветных изображений, в ней есть ряд команд для управления цветом и различными световыми эффектами. Среди них важное место занимает установка палитры цветов. Палитра цветов RGB задается матрицей MAP из трех столбцов, определяющих значения интенсивности красного (red), зеленого (green) и синего (blue) цветов. Их интенсивность задается в относительных единицах от 0.0 до 1.0. Например, [0 0 0] задает черный цвет, [1 1 1] — белый цвет, [0 0 1] — синий цвет. При изменении интенсивности цветов в указанных пределах возможно задание любого цвета. Таким образом, цвет соответствует общепринятому формату RGB. Построение сферы Для расчета массивов 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). Хорошо видны геометрические искажения (сфера приплюснута), связанные с разными масштабами по координатным осям. Рис.20. Построение сферы Обратите внимание на то, что именно функциональная окраска сферы придает ей довольно реалистичный вид. В данном случае цвет задается вектором Z. ЗАКЛЮЧЕНИЕ В составе пакета MATLAB имеется большое количество функций для построения графиков, в том числе трёхмерных, визуального анализа данных и создания анимированных роликов. Встроенная среда разработки позволяет создавать графические интерфейсы пользователя с различными элементами управления, такими как кнопки, поля ввода и другими. С помощью компонента MATLAB Compiler эти графические интерфейсы могут быть преобразованы в самостоятельные приложения, для запуска которых на других компьютерах необходима установленная библиотека MATLAB Component Runtime СПИСОК ЛИТЕРАТУРЫ Дьяконов В.П. Справочник по применению системы PC MATLAB. — М.: «Физматлит», 1993. — С. 112. —ISBN 5-02-015101-7 Дьяконов В.П. Компьютерная математика. Теория и практика. — СПб: «Питер», 1999, 2001. — С. 1296. — ISBN 5-89251-065-4 Дьяконов В.П. MATLAB 5 - система символьной математики. — М.: «Нолидж», 1999. — С. 640. — ISBN 5-89251-069-7 Дьяконов В.П., Абраменкова И.В. MATLAB. Обработка сигналов и изображений. Специальный справочник. — СПб.: «Питер», 2002. — С. 608. — ISBN 5-318-00667-608 Дьяконов В.П., Круглов В.В. MATLAB. Анализ, идентификация и моделирование систем. Специальный справочник. — СПб.: «Питер», 2002. — С. 448. — ISBN 5-318-00359-1 |