47953 (Основы графической визуализации вычислений), страница 2

2016-07-31СтудИзба

Описание файла

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

Онлайн просмотр документа "47953"

Текст 2 страницы из документа "47953"

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

>> 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 =

Columns 1 through 9

0 0 3 7 8 9 11 23 33

Columns 10 through 18

43 57 55 70 62 83 87 93 68

Columns 19 through 27

70 65 41 35 27 21 12 5 6

Columns 28 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')

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее