Как в матлаб построить график по точкам в файле

Обновлено: 03.07.2024

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

Где прописывать код

Но для начала научимся создавать скрипты в Matlab. Так вам будет удобнее работать с Matlab, писать коды и вообще приятнее, когда видишь всю программу сразу, а не построчно. Делается это просто: нажать New --> Script --> ScriptCtrl+N.

Откроется вот такое окно:

После того, как вы напишите сюда свой код, нужно его запустить. Это делается с помощью вот этой кнопки.

Графики MATLAB

Построение графиков функций в MATLAB можно реализовать разными способами, например, через plot или polar, с полным списком можете ознакомиться здесь.
Но сейчас речь пойдёт о функции ezplot.
Разберём такой пример:

Построить графики функций y=e^((-x^2)/2) и у =x^4-x^2 для -1.5 ≤ x ≤1.5 на одной и той же координатной сетке.

Открываем скрипт и пишем нехитрый код:

Построить график функции y=x^3-x для интервала -4≤x≤4.
Как вы догадались, скрипт будет такой:

Снимок4


Его скорее всего проще записать в компилятор напрямую.
Давайте ещё один:

Построить график функции у=sin(1/x^2) для интервала -2 ≤ x ≤2.

Снимок5


И последний:

Снимок6


В данном случае мы указали границы оси с помощью axis от -π до π.

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

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

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


Рис. 4.5. График, построенный с помощью функции plot

В Matlab для построения графиков функций по узловым точкам в декартовой системе координат служит функция plot. Функция plot имеет несколько синтаксических конструкций:

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

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

Значениями константы S могут быть символы, приведенные в табл. 4.5.

Построение графиков в matlab командой plot. Она работает с векторами числовых данных. Синтаксис команды представляет собой: plot (X, Y), где X и Y являются векторами одинаковой длины.

Например вот такой график по точкам matlab:

X = [1 2 3]; Y = [4 6 5]; plot (X, Y)


Рис. 2.5. Построение линейных сегментов

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

Команда plot рассматривает вектора X и Y, как перечни координат
последовательных точек на графике, и соединяет точки в виде линейных
сегментов. Таким образом, на Рис. 2.5 показано, как программа MATLAB
соединяет точки с координатами (1, 4), (2, 6) и (3, 5).

Чтобы начертить графики функций matlab например х 2 в интервале от -1 до 2, сначала требуется создать перечень X из значений х, а затем ввести plot (X, Х.^2). (Точка в
данном выражении обязательна, так как Х.^2 представляет собой
поэлементное возведение в квадрат вектора X, но не матричный квадрат.) Нам
необходимо использовать достаточное количество значений х для уверенности в
том, что результирующий график, нарисованный путем соединения точек,
будет выглядеть нормально (плавная, а не ломаная линия). Мы используем
приращение в размере 0.01. Таким образом, чтобы отобразить график
параболы, введите:

X = -1:0.01:2; plot(X, X.^2)

Результат отображен на Рис. 2.6. Обратите внимание, что мы использовали точку
с запятой, чтобы запретить вывод вектора X из 301 элемента.


Рис. 2.6. Построенная парабола

Более подробно графические команды программы MA TLAB рассматриваются в уроке 5.
А пока удовлетворимся демонстрацией построения пары выражений на одном и
том же графике. Надеюсь теперь вы получили подробный ответ на свой вопрос: как строить графики в matlab.

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

MATLABимеет исключительно мощную систему для построения различных двухмерных и трехмерных графиков, а также их настройки, редактирования и форматирования. Типы и подтипы графиковMATLABочень разнообразны. Список функций двумерной графики можно получить командойhelp graph2d, трехмерной –help graph3d.

Графики выводятся в отдельных графических окнах с помощью команды вида figure(n), гдеn – номер графического окна. На одном графике можно построить несколько кривых, отличающихся цветом и типами линий и точек. Графики могут быть скопированы и вставлены в другие приложения:Word,Excel,PowerPointи др. Для этого используется командаEdit/ Copy Figureокна графики.

Часто используемые команды при построении графиков

plot(t,y) % График непрерывной функции y(t)

plot(x1, y1, x2, y2) % Графики зависимостей y1 от x1 и y2 от x1

stem(x,y) %График дискретной функции (сигнала)y(x)

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

loglog(f,Y) %График с логарифмическими масштабами по x и y

semilogx(f,Y) %Логарифмический масштаб поxи линейный поy

polar(phi,r) % График в полярных координатах

title(‘ название’) % Вывод заголовка графика

xlabel(‘время’) % Метка по осиx

ylabel(‘Напряжение’) % Метка по осиy

legend(‘АЧХ системы‘) % Вывод поясняющей надписи

axis([xmin, xmax, ymin, ymax]) % Установка масштабов по осямxи y

xlim([xmin,xmax]) % Установка масштаба по осиx

ylim([ymin,ymax]) % Установка масштаба по осиy

figure(n) % Устанавливает фигуру (окно)nактивной

subplot(r,c,n) % Разбивает графическое окно наr * cподокон иsubplot(rcn) % устанавливает подокноn в качестве активного.

gridon% к графику добавляется сетка

holdon% позволяет построить несколько графиков в окне

holdoff% отменяетholdonдля текущего графика

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

zoomon/off% включение / выключение возможности увеличения % фрагментов графика с использованием

% левой и правой кнопок мыши

Построение графика зависимости функции yот индекса массива (номера элемента)x


Построение графика зависимости y(x)


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


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

t=linspace(0, 8, 401); % вычисление 402 точек в интервале [0,8]

axis([0 1 min(x) max(x)] )


Fs=1024; % Частота отсчетов

f1=50; % частота гармоники

N=512; % число отсчетов сигнала

t=0:1/Fs:(N-1)/Fs; % вектор времени

plot(t,x), grid % график сигнала


Для добавления графиков к уже существующим применяют команду hold on


Для отмены действия hold on (освобождения окна графики) используют hold off.

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


В окне графики MATLABпозволяют выполнять разнообразную настройку графического окна и его объектов с помощью меню или панели инструментов (рис.9).

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








Трехмерная графика MATLAB– очень развитая и многообразная, сама по себе очень важная часть программы, но в курсе «Сигналы и системы» она используется редко.

Некоторые из команд построения 3D– графиков

>> plot3(…) % строит аксонометрическое изображение 3D-поверхности

>> mesh(…) % строит трехмерные поверхности со специфицированной



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


Нули и полюса системы :

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 ) в полярных координатах, то следующие несколько команд

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

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

Из-за ограниченного объема данного справочного пособия в него включены только графические команды и функции с минимальными элементами дескрипторной графики. Заинтересованному читателю следует обратиться к документации по системе MATLAB, и в первую очередь к только что вышедшей из печати книге “Using MATLAB Graphics” (Natick, 1996).

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

Для каждого графика можно задать заголовок, нанести обозначение осей и масштабную сетку.

В системе MATLAB предусмотрено несколько команд и функций для построения трехмерных графиков. Значения элементов числового массива рассматриваются как z-координаты точек над плоскостью, определяемой координатами x и y. Возможно несколько способов соединения этих точек. Первый из них - это соединение точек в сечении (функция plot3), второй - построение сетчатых поверхностей (функции mesh и surf). Поверхность, построенная с помощью функции mesh, - это сетчатая поверхность, ячейки которой имеют цвет фона, а их границы могут иметь цвет, который определяется свойством EdgeColor графического объекта surface. Поверхность, построенная с помощью функции surf, - это сетчатая поверхность, у которой может быть задан цвет не только границы, но и ячейки; последнее управляется свойством FaceColor графического объекта surface. Уровень изложения данной книги не требует от читателя знания объектно-ориентированного программирования. Ее объем не позволяет в полной мере описать графическую подсистему, которая построена на таком подходе. Заинтересованному читателю рекомендуем обратиться к документации по системе MATLAB, и в первую очередь к только что вышедшей из печати книге Using MATLAB Graphics (Natick, 1996).

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

PLOT - график в линейном масштабе

plot(y)
plot(x, y)
plot(x, y, s)
plot(x1, y1, s1, x2, y2, s2, . )

Команда plot(y) строит график элементов одномерного массива y в зависимости от номера элемента; если элементы массива y комплексные, то строится график plot(real(y), imag(y)). Если Y - двумерный действительный массив, то строятся графики для столбцов; в случае комплексных элементов их мнимые части игнорируются.

Команда plot(x, y) соответствует построению обычной функции, когда одномерный массив x соответствует значениям аргумента, а одномерный массив y - значениям функции. Когда один из массивов X или Y либо оба двумерные, реализуются следующие построения:

  • если массив Y двумерный, а массив x одномерный, то строятся графики для столбцов массива Y в зависимости от элементов вектора x;
  • если двумерным является массив X, а массив y одномерный, то строятся графики столбцов массива X в зависимости от элементов вектора y;
  • если оба массива X и Y двумерные, то строятся зависимости столбцов массива Y от столбцов массива X.

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

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

Команда plot(x1, y1, s1, x2, y2, s2, . ) позволяет объединить на одном графике несколько функций y1(x1), y2(x2), . определив для каждой из них свой способ отображения.

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

Примеры:

Построим график функции y = sin(x) на отрезке [- p p ] с шагом p /500:

x = -pi:pi/500:pi;
y = sin(x);
plot(y) % рис. а
plot(x, y) % рис. б

График на рис. а отображает значения одномерного массива y, состоящего из 1001 элемента, как функцию от номера элемента; график на рис. б отображает значения того же массива как функцию элементов массива x.

Рассмотрим различные способы применения функции plot(x, y) на примере графиков двух функций y1 = sin(x) и y2 = xsin(x):

x1 = -pi:pi/500:pi;
y1 = sin(x1);
y2 = x1.*sin(x1);
plot(x1',[y1' y2']) % рис. в
plot( [y1' y2'], x1') % рис. г

x2 = x1/2;
y2 = x2.*sin(x2);
plot([x1' x2'], [y1' y2']) % рис. д

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

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

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


Затем необходимо настроить размер графика и его положение на экране, например, с отображением на весь экран:


При необходимости вставляем название графика:


Далее можно включить построение нескольких графиков в одном окне, c использованием тех же осей и свойств графика:


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


Вставляем легенду в график с определенным положением на рисунке, например справа внизу:



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

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

Код «прореживает» подписи осей x и y, а также исправляет точки на запятые в подписях на оси y. Для других осей необходимо повторить аналогичные процедуры.

И в заключении отобразим линии координатной сетки:


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

Выполним с заранее подготовленными данными.

В результате получаем вот такой график:


По умолчанию MatLab отображает греческую букву «фи» как в кириллице «ф». Одним из способов отобразить привычную греческую букву «фи» с петлеобразным начертанием, является выбор специального шрифта c греческими буквами. Скачиваем, например, шрифт Greek Normal отсюда и устанавливаем. Просмотрев шрифт Greek в таблице символов, замечаем, что в этом шрифте буква «фи» существует в двух вариантах, причем для кода латинской «f» получим тот же результат что и в MatLab в виде «ф», а для кода латинской «j» должен быть получен требуемый результат.



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

  • Решить проблему с некорректным отображением кириллических шрифтов;
  • Автоматически заменить разделитель целой и дробной части числа с точки на запятую в графике;
  • Отобразить греческую букву фи в петлеобразном начертании.

UPD Еще один способ, подсказанный в комментариях, для отображения «фи» с петлеобразным начертанием:

Читайте также: