Elettracompany.com

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

Matlab построение графиков по точкам

Технология построения графиков в 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

Построение трехмерных графиков в 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 )

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

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

Matlab построение графиков по точкам

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Работа в matlab

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

Функции одной переменной у(х) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси — горизонтальная 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 построение графиков по точкам

3. Трёхмерная графика .

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

Высокоуровневая графическая подсистема MATLABа автоматически реализует трёхмерную графику без специальных усилий со стороны пользователя. Пусть в точке с координатами x1,y1 вычислено значение функции z=f(x,y) и оно равно z1. В некоторой другой точке (то есть при другом значении аргументов) x2,y2 вычисляют значение функции z2. Продолжая этот процесс, получают массив (набор) точек (x1,y1,z1), (x2,y2,z2), (xN,yN,zN) в количестве N штук, расположенных в трёхмерном пространстве. Специальные функции системы MATLAB проводят через эти точки гладкие поверхности и отображают их проекции на плоский дисплей компбютера.

Чаще всего точки аргументов расположены в области определения функции регулярно в виде прямоугольной сетки (то есть матрицы). Такая сетка точек порождает две матрицы одной и той же структуры: первая матрица содержит значения первых координат этих точек (x — координат), а вторая матрица содержит значения вторых координат (y — координат). Обозначим первую матрицу как X, а вторую — как Y. Есть ещё и третья матрица — матрица значений функции z=f(x,y)при этих аргументах. Эту матрицу обозначим буквой Z.

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

plot3( X , Y , Z )

где X, Y и Z — матрицы одинаковых размеров, смысл которых мы только что объяснили.

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

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

u = -2 : 0.1 : 2

а по оси y этот диапазон есть

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

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

Как мы видим, эта функция получает на входе два одномерных массива (вектора), представляющие массивы точек на осях координат, и возвращает сразу два искомых двумерных массива. На прямоугольной сетке точек вычисляем значения функции, например функции exp:

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

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

Из этого рисунка видно, что функция plot3 строит график в виде набора линий в пространстве, каждая из которых является сечением трёхмерной поверхности плоскостями, параллельными плоскости yOz. По-другому можно сказать, что каждая линия получается из отрезков прямых, соединяющих набор точек, координаты которых берутся из одинаковых столбцов матриц X, Y и Z. То есть, первая линия соответствует первым столбцам матриц X, Y Z; вторая линия — вторым столбцам этих матриц и так далее.

Для построения трёхмерных линий, задаваемых параметрически применяется другая форма вызова функции 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

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

grid on

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

Читать еще:  Цикл while matlab

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

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

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

можно получить вот такое изображение

Для лучшего восприятия «объёмности» изображения разные рёбра автоматически окрашиваются в разные цвета. Кроме того (в отличие от функции plot3) осуществляется удаление невидимых линий. Если вы считаете, что изображённое ребристое тело является прозрачным и не должно скрывать задних линий, то можно ввести команду hidden off , после чего такие линии появятся на изображении. Более плотного изображения поверхности можно добиться, если вместо

функции mesh применить функцию surf( X, Y, Z ).

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

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

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

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

colormap( copper )

с помощью которой для изображения графика выбирается набор цветов (по-английски — colormap), который характерен для света, отражающегося от медной поверхности (медь по-английски — copper). После этого применение функции

surfl( X, Y, Z )

вместо surf(X,Y,Z) приводит к получению очень реалистически выглядящего и очень наглядного графика:

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

shading interp

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

Matlab построение графиков по точкам

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

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

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

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

‘ko’ – на графике отображает черными кружками точки графика,
‘ko-‘ – рисует график черной линией и проставляет точки в виде кружков.

Табл. 3.1. Обозначение цвета линии графика

Табл. 3.2. Обозначение типа линии графика

Табл. 3.3. Обозначение типа точек графика

Ниже показаны примеры записи функции plot() с разным набором маркеров.

x = 0:0.1:2*pi;
y = sin(x);

subplot(2,2,1); plot(x,y,’r-‘);
subplot(2,2,2); plot(x,y,’r-‘,x,y,’ko’);
subplot(2,2,3); plot(y,’b—‘);
subplot(2,2,4); plot(y,’b—+’);

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

Рис. 3.7. Примеры отображения графиков с разными типами маркеров

Из примеров рис. 3.7 видно, что масштаб графиков по оси Ox несколько больше реальных значений. Дело в том, что система MatLab автоматически масштабирует систему координат для полного представления данных. Однако такая автоматическая настройка не всегда может удовлетворять интересам пользователя. Иногда требуется выделить отдельный фрагмент графика и только его показать целиком. Для этого используется функция axis() языка MatLab, которая имеет следующий синтаксис:

axis( [ xmin, xmax, ymin, ymax ] ),

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

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

x = 0:0.1:2*pi;
y = sin(x);

subplot(1,2,1);
plot(x,y);
axis([0 2*pi -1 1]);

subplot(1,2,2);
plot(x,y);
axis([0 pi 0 1]);

Из результата работы программы (рис. 3.8) видно, что несмотря на то, что функция синуса задана в диапазоне от 0 до , с помощью функции axis() можно отобразить как весь график, так и его фрагмент в пределах от 0 до .

Рис. 3.8. Пример работы функции axis()

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

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector
×
×