Elettracompany.com

Компьютерный справочник
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как построить график в matlab

Как построить график в matlab

1. Построение двумерных графиков функций

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

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

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

x = 0 : 0.01 : 2;

y = sin( x );

вычисляют массив y значений функции sin для заданного набора аргументов.

После этого одной единственной командой

plot( x , y )

удаётся построить вполне качественно выглядящий график функции:

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

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

Если мы, не убирая с экрана дисплея первое графическое окно, вводим и исполняем ещё один набор команд

x = 0 : 0.01 : 2;

z = cos( x );

plot( x , z )

то получаем новый график функции в том же самом графическом окне (при этом старые оси координат и график в нём пропадают — этого можно также добиться командой clf, а командой cla удаляют только график с приведением осей координат к их стандартным диапазонам от 0 до 1):

Если нужно второй график провести «поверх первого графика», то перед исполнением второй графической команды plot, нужно выполнить команду

hold on

которая предназначена для удержания текущего графического окна. В результате будет получено следующее изображение:

Того же самого можно добиться, потребовав от функции plot построить сразу несколько графиков в рамках одних и тех же осей координат:

x = 0 : 0.01 : 2;

y = sin( x ); z = cos( x );

plot( x , y , x , z )

У такого способа есть ещё одно (кроме экономии на команде hold on) преимущество, так как разные графики автоматически строятся разным цветом.

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

Если всё же нужно одновременно визуализировать несколько графиков так, чтобы они не мешали друг другу, то это можно сделать двумя способами. Во-первых, можно построить их в разных графических окнах. Например, построив графики функций sin и cos в пределах одного графического окна (показано выше), вычисляем значения для функции exp:

w = exp( x );

После этого выполняем команды

figure; plot( x , w )

которые построят график функции exp в новом графическом окне, так как команда figure создаёт новое (добавочное) графическое окно, и все последующие за ней команды построения графиков выводят их в новое окно:

В результате в первом графическом окне (Figure No. 1) по вертикальной оси переменные изменяются в диапазоне от -0.5 до 1, а во втором графическом окне (Figure No. 2) — от 1 до 8.

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

Например, для ранее выполненных вычислений с функциями sin, cos и exp, строим графики первых двух функций в первой подобласти, а график третьей функции — во второй подобласти одного и того же графического окна:

subplot(1,2,1); plot(x,y,x,z)

subplot(1,2,2); plot(x,w)

в результате чего получаем графическое окно следующего вида:

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

Функция subplot принимает три числовых аргумента, первый из которых равен числу рядов подобластей, второе число равно числу колонок подобластей, а третье число — номеру подобласти (номер отсчитывается вдоль рядов с переходом на новый ряд по исчерпанию).

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

help имя_функции

набираемой с клавиатуры и выполняемой в командном окне системы MATLAB.

Итак, уже рассмотренные примеры показывают, как подсистема высокоуровневой графики MATLABа легко справляется с различными случаями построения графиков, не требуя слишком большой работы от пользователя. Ещё одним таким примером является построение графиков в полярных координатах. Например, если нужно построить график функции r = sin( 3 f ) в полярных координатах, то следующие несколько команд

Читать еще:  Корректность данных сертификата ошибка

phi = 0 : 0.01 : 2*pi; r = sin( 3* phi );

Как построить график в matlab

Обычная графика MATLAB

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

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

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

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

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

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

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

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

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

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

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

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

Одно из достоинств системы MATLAB — обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI). Особое внимание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов.

Описанию графических функций и команд посвящена обширная электронная книга в формате PDF. Объем материала по графике настолько велик, что помимо вводного описания графики в уроке 3 в этой книге даются еще два урока по средствам обычной и специальной графики. Они намеренно предшествуют систематизированному описанию большинства функций системы MATLAB, поскольку графическая визуализация вычислений довольно широко используется в последующих материалах книги. При этом графические средства системы доступны как в командном режиме вычислений, так и в программах. Этот урок рекомендуется изучать выборочно или выделить на него не менее 4 часов.

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

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

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

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

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

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

Рис. 6.1. Графики двух функций в декартовой системе координат

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

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

Соответствующий график показан на рис. 6.2.

Рис. 6.2. График функции, представляющей вектор Y с комплексными элементами

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

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

Технология построения графиков в Matlab

Построение графика по узловым точкам

Графики в Matlab, также как в табличном процессоре, могут быть построены по узловым точкам. Поскольку MATLAB — матричная система, совокупность узловых точек у(х) для построения графика задается векторами X и Y одинакового размера.

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

В Matlab для построения графиков функций по узловым точкам в декартовой системе координат служит функция plot. Функция plot имеет несколько синтаксических конструкций:
plot (X, Y) — строит график функции у(х), координаты точек (х, у) которой берутся из векторов одинакового размера Y и X. Если X или Y матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы;
plot(Y) — строит график у(i), где значения у берутся из вектора Y, a i представляет собой индекс соответствующего элемента. Если Y содержит комплексные элементы, то выполняется команда plot (real (Y), imag(Y)). Во всех других случаях мнимая часть данных игнорируется;
plot(X,Y,S) — аналогична команде plot(X,Y), но тип линии графика можно задавать с помощью строковой константы S. Значениями константы S могут быть следующие символы:

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

Читать еще:  Ошибочный сертификат безопасности

>> x=[0; 0.4; 0.8; 1.2; 1.4;1.8;2.2;2.6;3;3.4;3.8]; Y=sin(x); plot(x,Y)

В этом примере уже определены значения вектора x , вычисляемые значения функции содержатся в векторе Y.

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

Для того, чтобы построить график функции y = f(x) , необходимо сформировать два одномерных массива x и y одинаковой размерности, а затем использовать функцию plot .

Пример 1 . Требуется построить график функции на интервале значений X [-1; 1].

Технология построения графика этой функции в MS Excel рассмотрена в статье . Результат решения представлен на рис. 1.

Окно команд с инструкциями для решения задачи в Matlab приведены на рис. 2.

Пояснения к инструкциям

В результате обращения к функции plot(x,y) будет создано окно с именем Figure 1 , в котором будет построен график. Результат решения приведен на рис. 3.

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

Построение графиков нескольких функций в одной системе координат можно выполнить двумя способами:
— использовать функцию plot в формате :
plot (x1, y1, x2, y2, … , xn, yn ) ,
где x1, y1 – массивы значений абсцисс и ординат графика первой функции, x2, y2 – массивы значений абсцисс и ординат графика второй функции , … , xn, yn – массивы значений абсцисс и ординат графика n-ой функции;
— использовать каждый раз функцию plot( x, y) для построения каждого графика, но перед построением каждого последующего графика включать команду hold on , блокирующую режим создания нового окна.

Пример 2 . Требуется построить в одной системе координат графики функций y1=1-2х и у2=Ln x на интервале значений аргумента х [0,2 ; 3 ] . Построение графиков этих функций в Excel при решении систем уравнений рассматривалось в статье .

Решение первым способом
В окне команд Matlab введем инструкции, как показано на рис. 4.

В результате выполнения инструкций Matlab выведет графики, как показано на рис. 5.

Решение вторым способом

В окне команд Matlab введем инструкции, как показано на рис. 6.

В результате выполнения инструкций Matlab сначала выведет график первой функции, а затем в этом же окне выведет график второй функции y2 (рис. 7).

Как видим, графики на рис. 5 и 7 идентичны.
Относительно сравнения сложности создания графиков в Matlab и Excel можно сделать вывод, что в Matlab не требуется предварительно создавать таблицу значений функций и аргументов, величину шага можно сделать значительно меньше, поэтому графики получаются более точными.

Построение графиков без использования узловых точек

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

Построить в Matlab график без узловых точек можно с помощью специальной графической функции fplot. Функция имеет синтаксис:
fplot(‘f(x)’, [ xmin xmax ]) ,
где f(x) – аналитическая запись выражения функции, xmin и xmax — числовые значения границ диапазона изменения аргумента.
Функция fplot позволяет строить функцию, заданную в символьном виде, в интервале изменения аргумента х от xm in до xmax без фиксированного шага изменения х .

В ряде случаев бывает необходимо, чтобы на графике была отображена сетка. Включение отображения сетки, которая строится пунктирными линиями, выполняется командой grid on. Например, график функции sin(x) (рис. 3) в диапазоне x =[-pi/2 : pi/2] можно построить с помощью инструкции >> fplot (‘sin(x)’, [-pi/2 pi/2]); grid on.

Оформление графиков

Оформление графиков в MATLAB можно выполнить двумя способами:
— с помощью команд Matlab, размещенных в пиктографическом меню Insert ;
— функциями Matlab, которые записываются в виде инструкций в командном окне.

В списке пиктографического меню есть следующие команды (рис. 8):

x Label, Y Label, Z Labe l — подписи осей осей;
Title — надпись названия диаграммы;
Legend — легенда, т.е. обозначение линий графиков;
Colorbar — вывод цветовой палитры;
Arrow — рисование стрелки;
Line — рисование линии;
Text — позволяет поместить текст в области построения диаграммы;
Axes — позволяет построить оси.

Команды Matlab для оформления графиков

— команда grid on наносит сетку на график;
— функция title(‘заголовок’) выводит заголовок графика;
— функции xlabel(‘подпись оси х’), ylabel(‘подпись оси у’) служат для подписи осей х и у соответственно;
— функция legend(‘легенда1’, ‘легенда2’, … , ‘легендаn’, k) выводит легенды для каждого из n графиков, параметр k определяет месторасположение легенды в графическом окне: -1 – в правом верхнем углу графического окна, за пределами графика; 0 – автоматически выбрать наилучшее месторасположение; 1 – в правом верхнем углу графика (значение по умолчанию); 2, 3, 4 – в левом верхнем, в левом нижнем, в правом нижнем углах графика соответственно.

Пример 3. Требуется построить график функции Sin(x) на интервале х=<-pi/2; pi/2] и оформить его.

Решение. Создадим М-файл с названием Chart.
Запишем инструкции, как на рис. 9.

Запустим М-файл на выполнение- будет выведен график с соответствующими подписями (рис. 10).

Работа с графиками в MatLab

Построение двухмерного графика осуществляется средствами функции plot(x,y,s), где x – аргумент, заданный в виде вектора; y – функция в аналитическом виде от аргумента x (рис. 1.3); s – стили, задаются в виде набора трёх символьных маркеров, заключенных в одиночные кавычки (таб. 1.1). Стили не являются обязательным элементом. В том случае, когда необходимо в одном окне построить несколько графиков, используется следующая запись функции plot (рис. 1.4): plot(x1, y1, s1, x2, y2, s2, …, xn, yn, sn).

Читать еще:  Произошла ошибка при чтении исходного файла

Табл. 1.1 — Стили графиков

По умолчанию каждая следующая команда plot затирает вывод предыдущей. При помощи команды hold on затирание отключается, команда hold off вновь включает режим затирания.

Рис. 1.3. График функции y=sin(x) при x=0:0.2:15

Рис. 1.4. График двух функций y1=sin(x1) и y2=cos(x2)

Помимо стандартного двухмерного представления графиков в форме линии, в MatLab имеются и другие функция представления графической информации:

1. В том случае, когда требуется отобразить содержимое вектора в форме столбцовой диаграммы используется функция bar(x) (рис. 1.5).

Рис. 1.5. Результат выполнения функции bar(x)

2. График в виде ступенчатой линии: stairs(x,y) (рис. 1.6).

Рис. 1.6. Результат выполнения функции stairs(x,y)

3. График в виде «стебельков»: stem(x,y) (рис. 1.7).

Рис. 1.7. Результат выполнения функции stem(x,y)

В MatLab имеются функции построения графиков в трехмерном пространстве:

1. plot3(x,y,z) – строит линию в трехмерном пространстве.

2. surf(x,y,z) – построение сетчатой поверхности (рис. 1.8). Координаты углов каждой ячейки задаются значениями четырех соседних элементов массивов x,y,z с индексами (i,j), (i, j+1), (i+1, j), (i+1, j+1). Значение массива z рассчитываются по формуле функциональной зависимости с использованием поэлементных операций над массивами x,y, при этом число элементов массивов х и у должно совпадать:

%Построение графика функции z=x^2*sin(y-1)

%в области xє[-7,3] и yє[-4.4,1.7].

Рис. 1.8 — Результат выполнения функции surf(x,y,z)

Другим способом формирования массивов x,y является применение специальной функции [x,y]=meshgrid(x,y) (рис. 1.9). Формируемые массивы имеют length(y) строк и length(x) столбцов.

Рис. 1.9. Результат выполнения функции surf(x,y,z)

3. mesh(x,y,z) – построение поверхности в виде сетки с закрашенными ребрами и не закрашенными четырехугольными ячейками (рис. 1.10).

Рис. 1.10. Результат выполнения функции mesh(x,y,z)

4. другие функции (meshc(x,y,z), meshz(x,y,z), surfc(x,y,z), waterfall(x,y,z), stem3(x,y,z), contourf(x,y,z), contour3(x,y,z), pcolor(x,y,z)) реализующие построение поверхности с присущей им спецификой.

В том случае, когда необходимо вывести несколько графиков различной природы без наложения их друг на друга в разных подокнах используется функция subplot(m,n,p), разбивающая графическое окно на m*n подокон, где m – число подокон по горизонтали, n – по вертикали, а p – номер подокна, в которое будет выводиться текущий график (рис. 1.11):

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

Построение трехмерных графиков в MATLAB.

График функции двух переменных в MATLAB – это поверхность, расположенная над областями определения функции. Поэтому для прорисовки такого графика требуется использование трехмерного изображения.

Простейшим инструментом, способным отобразить график функции дыух переменных, является

plot3( X, Y, Z )

где X, Y и Z – матрицы со значениями функции (точками z) в наборах (x, y).

В системе MATLAB имеется специальная функция для получения двумерных массивов X и Y по одномерным массивам x, y.

В MATLAB существует функция построения двумерных массивов X и Y по одномерным x, y.

Пусть по оси x задан вектор

u = -2 : 0.1 : 2 ,

а по оси y диапазон

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

[ X, Y ] = meshgrid( u, v )

Вычислим теперь на полученной прямоугольной сетке значение функции exp:

Z = exp( — X.^2 — Y.^2 )

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

Чтобы построить трехмерные линии, заданные параметрически, применяется другая форма вызова функции plot3:

plot3( x, y, z )

здесь x, y и z — одномерные массивы координат точек, которые надо последовательно соединить отрезками прямых.

Следующий пример позволяет построить винтовую линию:

t = 0 : pi/50 : 10*pi ;

x = sin( t );

y = cos( t );

plot3( x, y, t );

grid on

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

Кроме этой простейшей функции построения графиков в MATLAB есть набор инструментов, позволяющий сделать отображаемые объекты более наглядными. Это функции mesh, surf и surfl.

Функция mesh соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного «каркасно-ребристого» ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции

Mesh соединяет соседние вычислительные точки отрезками, причем невидимые линии при отображении скрываются. Если же такие линии для отображения необходимы, нужно воспользоваться командой.

Для примера рассмотрим использование функции mesh в случае построения того же графика функции

exp( — X.^2 — Y.^2 )

Вызов же функции

позволяет получить следующее изображение, представляющее собой поверхность, а не набор линий.

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

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

colormap( copper ) ,

то есть набор цветов (colormap), соответствующий меди (copper), то после вызова функции

surfl( X, Y, Z )

мы получим следующий график:

Убрать черные линии и добиться более лпавного света позволяет команда

Ссылка на основную публикацию
Adblock
detector