Как найти функцию по точкам матлаб

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 .

Для разбиения графического окна на подокна служит команда plot(m,n,p)илиplot(mnp),в которойm– число строк,n— число столбцов,p— номер подокна. Пример построения графика функциив двух подокнах с помощью функцииplot()в одном случае и функцииstem()в другом с разными пределами по оси аргумента (рис. 7):

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).

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

Возможности для подобной интерактивной настройки графики — очень широкие. В первую очередь они обеспечиваются кнопкой Edit Plot инструментальной панели окна.

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

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

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

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

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

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

Как найти уравнение графика, соединяющего точки данных в Matlab?

У меня есть различные сюжеты (с hold on ), как показано на следующем рисунке:

Я хотел бы знать, как найти уравнения этих шести кривых в Matlab. Спасибо.

5 ответов

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

график выше кажется линейной интерполяцией. Учитывая векторы X и Y данных, где X содержит аргументы, а Y-точки функции, вы можете сделать

чтобы получить линейно интерполированное значение f (x). Например, если данные

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

тут rxns подставка для реакции? В этом случае, ваши кривые, скорее всего, экспоненциальный. Экспоненциальная функция имеет вид: y = a*exp(b * x) . В твоем случае, y – ширина зоны смешивания и x – это время в годах. Теперь, все, что вам нужно сделать, это запустить экспоненциальная регрессия в Matlab найти оптимальные значения параметров a и b , и у вас будут свои уравнения.

совет, хотя может быть лучший ответ, от меня: попробуйте увидеть скорость увеличения кривой. Например, кубический является более репрезентативным, чем квадратичный, если скорость увеличения кажется быстрой и найти полином и вычислить ошибку отклонения. Для нерегулярных кривых, вы можете попробовать сплайн сторона. Я думаю, что в matlab также есть набор инструментов для сплайн-фитинга.

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

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

должна быть другая информация, которую вы можете получить от ” findall(gcf. )” методы.

Аппроксимация в Matlab

Приветствую! Сегодня продолжаем говорить об обработке экспериментальных данных. Сегодняшняя статья — продолжение предыдущей темы: Интерполяция в Matlab. Настоятельно советую с ней ознакомиться перед чтением данной статьи. По сути аппроксимация в Matlab очень похожа на интерполяцию, однако, для её реализации используются другие правила и функции.

Аппроксимация

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

МНК (Метод Наименьших Квадратов)

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

Суть МНК заключается в следующем: для табличных данных, полученных в результате эксперимента, отыскать аналитическую зависимость, сумма квадратов уклонений которой от табличных данных во всех узловых точках была бы минимальной.

Аппроксимация в Matlab по МНК осуществляется с помощью функции polyfit. Функция p = polyfit(x, y, n) находит коэффициенты полинома p(x) степени n, который аппроксимирует функцию y(x) в смысле метода наименьших квадратов. Выходом является строка p длины n+1, содержащая коэффициенты аппроксимирующего полинома.

Примеры задач

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

Осуществить аппроксимацию в Matlab табличных данных x = [0, 0.1 , 0.2, 0.3, 0.5] и y = [3, 4.5, 1.7, 0.7, -1] . Применяя метод наименьших квадратов, приблизить ее многочленами 1-ой и 2-ой степени. Для каждого определить величину среднеквадратической ошибки. Построить (на одном листе) графики и заданной таблично функции (ломанная линия) и приближающих ее многочленов 1-ой и 2-ой степени.

Вывод:
ans = 0.9253
ans = 0.8973

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

Найти у(0.25) путём построения аппроксимирующего полинома методом наименьших квадратов согласно данным:
x: 0, 0.1, 0.2, 0.3, 0.5
y: 3, 4.5, 1.7, 0.7, -1
p: 0.5, 0.8, 1.6, 0.8, 0.1
Построить этот полином без учёта весовых коэффициентов с использованием определителя Вандермонда и стандартных операторов.

Вывод:
a =
228.1447
-176.0984
22.7745
3.1590
qq = 228.1447 -176.0984 22.7745 3.1590
y2 = 1.4113

Как видите встроенные функции для аппроксимации в Matlab укорачивают алгоритм почти вдвое.

Существует также возможность реализации всего алгоритма через одну функцию, но для преподавателей студентов она скорее всего будет не приемлема. С помощью функции lsqcurvefit(fun,x0,xdata,ydata), где:
xdata,ydata– табличные значения аппроксимируемой функции;
x0 –стартовое значение параметров функции;
fun – функция аппроксимации, задаваемая пользователем

С аналитически-теоретической стороны, существуют такие виды аппроксимации:

  • Аппроксимация ортогональными классическими полиномами.
  • Аппроксимация каноническим полиномом

Но на практике их реализацию требуют редко.

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

[spoiler title=”источники:”]

http://askdev.ru/q/kak-nayti-uravnenie-grafika-soedinyayuschego-tochki-dannyh-v-matlab-420467/

http://codetown.ru/matlab/approksimaciya/

[/spoiler]

ZondArt

7 / 4 / 0

Регистрация: 22.01.2012

Сообщений: 63

1

График функции задан по точкам. Найти производную этой функции

13.01.2014, 17:19. Показов 8284. Ответов 1

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Дана функция, заданная точками (X, Y). Необходимо найти её производную. Собственно что я и сделал в матлабе. Вот код программы:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
function [pp] = interpol(X, Y);
    for j = 1:length(X)-1
        xi(j) = ( X(j)+X(j+1) )/2;
    end
 
    yi=interp1(X, Y, X, 'spline');
    plot(X, Y, 'color', [1, 0, 0], 'LineWidth', 2 );
    pp= diff(yi); %Дифференцирование массива yi
    hold;
    plot(xi, pp, 'color', [0, 0, 1], 'LineWidth', 2 );
    grid;
end

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

График функции задан по точкам. Найти производную этой функции

Красным обозначена моя функция, а синим это её найденная производная. Не понятно откуда в производной взялся участок, выделенный зелёным. Так вот хотелось бы узнать, правильно ли я нашёл производную и откуда такой “отросток” там появился?



0



Зосима

5221 / 3552 / 372

Регистрация: 02.04.2012

Сообщений: 6,458

Записей в блоге: 17

14.01.2014, 12:59

2

Лучший ответ Сообщение было отмечено ZondArt как решение

Решение

ZondArt, если команде diff скормить массив, то она вернет

поэлементные разности

, а это не производные!
посему:

Matlab M
1
2
3
4
5
6
7
8
9
10
function [pp] = interpol(X, Y);
    xi = ( X(1:end-1)+X(2:end) )/2; % лень - двигатель прогресса
    pp = interp1(X, Y, 'spline');
    plot(X, Y, 'color', [1, 0, 0], 'LineWidth', 2 );
    h = 1e-8; % чем меньше тем лучше
    dy =  (ppval(pp,xi+h)-ppval(pp,xi-h)) / (2*h); % производная
    hold;
    plot(xi, dy, 'color', [0, 0, 1], 'LineWidth', 2 );
    grid;
end

*если график убывает, то производная должна быть меньше нуля!



1



Доброго времени суток! Сегодня поговорим о работе с данными полученными «экспериментально». Подразумевается, что даны значения по двум или более координатам (точки), с которыми в задаче нас просят выполнить то или иное действие. В этой статье мы с вами узнаем, что такое интерполяция в Matlab, и какие действия она позволяет выполнять.

Интерполяция

Задав такой вопрос поисковику, вы получите весьма развёрнутый ответ от Wikipedia. Но в двух словах, интерполяция (интерполирование) — процесс нахождения промежуточных значений по ряду данных, для восполнения пробелов между точными значениями приближенными. Точные значения так же называют узловыми точками.

Линейная интерполяция Matlab

Не будем вдаваться в математические определения и термины, перейдём сразу к сути:

Алгоритм интерполяции определяется способом вычисления приближенных значений между точными. Наиболее простым и очевидным вариантом является построение прямой между двумя узловыми точками. Этот метод называется методом линейной интерполяции.
line interpolation
В Matlab такой способ реализован с помощью команды
interp1(x,y, xi, 'linear') или просто interp1(x,y, xi), где x и y массивы из табличных данных (координаты точек), xi — массив промежуточных точек, координаты которых требуется найти.

Интерполяционные полиномы

Есть разные интерполяционные полиномы — функции, определяющие как будут изменяться приближенные значения между узловыми точками:

  • Канонический полином
  • Полином Лагранжа
  • Полином Ньютона

Разберём для самого часто встречающегося полинома реализацию в Matlab. Вот пример использования:

Проинтерполировать функцию sin x на отрезке [1, 9] с шагом 2 и построим графики sin x и полученного интерполяционного полинома.

Для начала необходимо создать функцию, по которой Matlab будет считать. Создайте файл с именем «lagrange» и скопируйте в него:

function yy=lagrange(x,y,xx)
% вычисление интерполяционного полинома в форме Лагранжа
% x - массив координат узлов
% y - массив значений интерполируемой функции
% xx - массив значений аргумента, для которых надо вычислить значения полинома
% yy - массив значений полинома в точках xx 

% узнаем число узлов интерполяции (N=n+1)
N=length(x);
% создаем нулевой массив значений интерполяционного полинома
yy=zeros(size(xx));
% в цикле считаем сумму по узлам
for k=1:N
    % вычисляем произведения, т.е. функции Psi_k
    t=ones(size(xx));
    for j=[1:k-1, k+1:N]
        t=t.*(xx-x(j))/(x(k)-x(j));
    end
    % накапливаем сумму
    yy = yy + y(k)*t;
end

Теперь создайте ещё один файл и запишем в него само решение поставленной задачи:

% задание узлов интерполяции
x=1:2:9;
y=sin(x);
% задание точек, в которых требуется найти значения интерполяционного полинома
xx=linspace(1,9,1000);
% нахождение значений интерполяционного полинома
yy=lagrange(x,y,xx);
% построение графиков
figure('Color','w')
% вывод графика sin(x)
fplot(@sin,[1 9])
hold on
% вывод графика полинома
plot(xx,yy,'r')
% вывод узлов интерполяции
plot(x,y,'bo')
% размещение легенды
legend('sinitx','{itL_n (интерполяция)}','узлы',-1)

Ссылки на файлы — исходники сможете найти в конце статьи. Более подробную информацию о полиноме Лагранжа вы сможете найти на официальном сайте Matlab.

Интерполяция сплайнами

Ещё один часто встречающийся метод интерполяции. Происхождение термина “сплайны” связано с гибкой чертежной линейкой, которой пользовались для рисования гладких кривых, проходящих через заданные точки. Сплайн — это группа кубических многочленов, которые также называют кубическими сплайнами.

Вычисление сплайн интерполяции в Matlab осуществляется с помощью команды spline(x, y, xx), где х и у — массивы табличных данных, а хх — промежуточные значения по оси абцисс (Х). Вот небольшой пример:

Построить интерполяцию сплайнами функции Рунге.

% Введём функцию Рунге
f = inline('1./(1+25*x.^2)');
% Вычислим таблицу значений
x = linspace(-1, 1, 10);
y = f(x);
% Вычислим сплайн-интерполяцию
xx = linspace(-1, 1, 100);
yy = spline(x, y, xx);
% Начертим графики
axes('NextPlot','Add');
plot(x, y,'LineWidth', 2);
% Красным на графике - аппроксимация, жирным - исходная функция
plot(xx, yy,'Color','r');

Вывод:
Интерполяция сплайном

interp1

Большинство задач в Matlab реализуются с помощью этой команды. yi = interp1 (x,y,xi, metod), где х – массив абсцисс экспериментальных точек, у – массив ординат экспериментальных точек, xi — точки, в которых необходимо вычислить значения с помощью сплайна, metod – определяет метод построения сплайна. Этот параметр может принимать следующие значения:

  • ‘nearest’ – интерполяция по соседним точкам – этот метод построения кусочной функции, при котором значение в любой точке равно значению в ближайшей узловой точке – интерполяция полиномами 0-ой степени;
  • ‘linear’ – линейная сплайн-интерполяция — интерполяция полиномами 1-ой степени (применяется по умолчанию, если способ интерполирования не задан);
  • ‘cubic’ – интерполяция кубическим полиномом;
  • ‘spline’ – интерполяция кубическим сплайном;
  • ‘pchip’ — интерполяция кубическим эрмитовым сплайном.

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

Скачать исходник — lagrange
Скачать исходник — Полином Лагранжа
Скачать исходник — Сплайном функцию Рунге

У меня есть различные сюжеты (с hold on), как показано на следующем рисунке:
enter image description here

Я хотел бы знать, как найти уравнения этих шести кривых в Matlab. Спасибо.

5 ответов



график выше кажется линейной интерполяцией. Учитывая векторы X и Y данных, где X содержит аргументы, а Y-точки функции, вы можете сделать

f = interp1(X, Y, x)

чтобы получить линейно интерполированное значение f (x). Например, если данные

X = [0 1 2 3  4  5];
Y = [0 1 4 9 16 25];

затем

y = interp1(X, Y, 1.5)

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


тут rxns подставка для реакции? В этом случае, ваши кривые, скорее всего, экспоненциальный. Экспоненциальная функция имеет вид: y = a*exp(b * x) . В твоем случае, y – ширина зоны смешивания и x – это время в годах. Теперь, все, что вам нужно сделать, это запустить экспоненциальная регрессия в Matlab найти оптимальные значения параметров a и b, и у вас будут свои уравнения.


совет, хотя может быть лучший ответ, от меня: попробуйте увидеть скорость увеличения кривой. Например, кубический является более репрезентативным, чем квадратичный, если скорость увеличения кажется быстрой и найти полином и вычислить ошибку отклонения. Для нерегулярных кривых, вы можете попробовать сплайн сторона. Я думаю, что в matlab также есть набор инструментов для сплайн-фитинга.

0

автор: Jack_of_All_Trades


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

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

% Some figure is created and data are plotted on it
figure;
hold on;
A = [ 1 2 3 4 5 7] % Dummy data
B = A.*A % Some other dummy data
plot(A,B);
plot(A.*3,B-1);

% Those three lines of code will get you series that were plotted on your graph
lh=findall(gcf,'type','line'); % Extract the plotted line from the figure handle
xp=get(lh,'xdata'); % Extract the Xs
yp=get(lh,'ydata'); % Extract the Ys

должна быть другая информация, которую вы можете получить от ” findall(gcf,…)” методы.


Plot expression or function

  • Plot expression or function

Syntax

Description

example

fplot(f) plots the
curve defined by the function y = f(x) over the
default interval [-5 5] for x.

example

fplot(f,xinterval) plots
over the specified interval. Specify the interval as a two-element
vector of the form [xmin xmax].

example

fplot(funx,funy) plots
the curve defined by x = funx(t) and y
= funy(t)
over the default interval [-5 5] for t.

fplot(funx,funy,tinterval) plots
over the specified interval. Specify the interval as a two-element
vector of the form [tmin tmax].

fplot(___,LineSpec) specifies
the line style, marker symbol, and line color. For example, '-r' plots
a red line. Use this option after any of the input argument combinations
in the previous syntaxes.

example

fplot(___,Name,Value) specifies
line properties using one or more name-value pair arguments. For example, 'LineWidth',2 specifies
a line width of 2 points.

fplot(ax,___) plots
into the axes specified byax instead of the current
axes (gca). Specify the axes as the first input
argument.

[x,y] =
fplot(___)
returns the abscissas and ordinates for
the function without creating a plot. This syntax will be removed in a future
release. Use the XData and YData
properties of the line object, fp, instead.

Note

fplot no longer supports input arguments for
specifying the error tolerance or the number of evaluation points. To
specify the number of evaluation points, use the MeshDensity property.

Examples

collapse all

Plot Expression

Plot sin(x) over the default x interval [-5 5].

Figure contains an axes object. The axes object contains an object of type functionline.

Plot Parametric Curve

Plot the parametric curve x=cos(3t) and y=sin(2t).

xt = @(t) cos(3*t);
yt = @(t) sin(2*t);
fplot(xt,yt)

Figure contains an axes object. The axes object contains an object of type parameterizedfunctionline.

Specify Plotting Interval and Plot Piecewise Functions

Plot the piecewise function

ex-3<x<0cos(x)0<x<3.

Plot multiple lines using hold on. Specify the plotting intervals using the second input argument of fplot. Specify the color of the plotted lines as blue using 'b'. When you plot multiple lines in the same axes, the axis limits adjust to incorporate all the data.

fplot(@(x) exp(x),[-3 0],'b')
hold on
fplot(@(x) cos(x),[0 3],'b')
hold off
grid on

Figure contains an axes object. The axes object contains 2 objects of type functionline.

Specify Line Properties and Display Markers

Plot three sine waves with different phases. For the first, use a line width of 2 points. For the second, specify a dashed red line style with circle markers. For the third, specify a cyan, dash-dotted line style with asterisk markers.

fplot(@(x) sin(x+pi/5),'Linewidth',2);
hold on
fplot(@(x) sin(x-pi/5),'--or');
fplot(@(x) sin(x),'-.*c')
hold off

Figure contains an axes object. The axes object contains 3 objects of type functionline.

Modify Line Properties After Creation

Plot sin(x) and assign the function line object to a variable.

Figure contains an axes object. The axes object contains an object of type functionline.

fp = 
  FunctionLine with properties:

     Function: @(x)sin(x)
        Color: [0 0.4470 0.7410]
    LineStyle: '-'
    LineWidth: 0.5000

  Show all properties

Change the line to a dotted red line by using dot notation to set properties. Add cross markers and set the marker color to blue.

fp.LineStyle = ':';
fp.Color = 'r';
fp.Marker = 'x';
fp.MarkerEdgeColor = 'b';

Figure contains an axes object. The axes object contains an object of type functionline.

Plot Multiple Lines in Same Axes

Plot two lines using hold on.

fplot(@(x) sin(x))
hold on 
fplot(@(x) cos(x))
hold off

Figure contains an axes object. The axes object contains 2 objects of type functionline.

Add Title and Axis Labels and Format Ticks

Plot sin(x) from -2π to using a function handle. Display the grid lines. Then, add a title and label the x-axis and y-axis.

fplot(@sin,[-2*pi 2*pi])
grid on
title('sin(x) from -2pi to 2pi')
xlabel('x');
ylabel('y');

Figure contains an axes object. The axes object with title s i n ( x ) blank f r o m blank - 2 pi blank t o blank 2 pi, xlabel x, ylabel y contains an object of type functionline.

Use gca to access the current axes object. Display tick marks along the x-axis at intervals of π/2. Format the x-axis tick values by setting the XTick and XTickLabel properties of the axes object. Similar properties exist for the y-axis.

ax = gca;
ax.XTick = -2*pi:pi/2:2*pi;
ax.XTickLabel = {'-2pi','-3pi/2','-pi','-pi/2','0',...
    'pi/2','pi','3pi/2','2pi'};

Figure contains an axes object. The axes object with title s i n ( x ) blank f r o m blank - 2 pi blank t o blank 2 pi, xlabel x, ylabel y contains an object of type functionline.

Input Arguments

collapse all

fFunction to plot
function handle

Function to plot, specified as a function handle to a named
or anonymous function.

Specify a function of the form y = f(x).
The function must accept a vector input argument and return a vector
output argument of the same size. Use array operators instead of matrix
operators for the best performance. For example, use .* (times)
instead of * (mtimes).

Note

Support for character vector inputs will be removed in a future
release. Use function handles instead.

Example: fplot(@(x) sin(x)) plots sin(x) over the default
interval, [-5, 5].

xintervalInterval for x
[–5 5] (default) | two-element vector of form [xmin xmax]

Interval for x, specified as a two-element
vector of the form [xmin xmax].

funxParametric function for x coordinates
function handle

Parametric function for x coordinates, specified
as a function handle to a named or anonymous function.

Specify a function of the form x = funx(t).
The function must accept a vector input argument and return a vector
output argument of the same size. Use array operators instead of matrix
operators for the best performance. For example, use .* (times)
instead of * (mtimes).

Example: funx = @(t) sin(2*t);

funyParametric function for y coordinates
anonymous function | function handle

Parametric function for y coordinates, specified
as a function handle to a named or anonymous function.

Specify a function of the form y = funy(t).
The function must accept a vector input argument and return a vector
output argument of the same size. Use array operators instead of matrix
operators for the best performance. For example, use .* (times)
instead of * (mtimes).

Example: funy = @(t) cos(3*t);

tintervalInterval for t
[-5 5] (default) | two-element vector of form [tmin tmax]

Interval for t, specified as a two-element
vector of the form [tmin tmax].

axAxes object
axes object

Axes object. If you do not specify an axes object, then fplot uses
the current axes (gca).

LineSpecLine style, marker, and color
string scalar | character vector

Line style, marker, and color, specified as a string scalar or character vector containing
symbols. The symbols can appear in any order. You do not need to specify all
three characteristics (line style, marker, and color). For example, if you
omit the line style and specify the marker, then the plot shows only the
marker and no line.

Example: "--or" is a red dashed line with circle markers.

Line Style Description Resulting Line
"-" Solid line

Sample of solid line

"--" Dashed line

Sample of dashed line

":" Dotted line

Sample of dotted line

"-." Dash-dotted line

Sample of dash-dotted line, with alternating dashes and dots

Marker Description Resulting Marker
"o" Circle

Sample of circle marker

"+" Plus sign

Sample of plus sign marker

"*" Asterisk

Sample of asterisk marker

"." Point

Sample of point marker

"x" Cross

Sample of cross marker

"_" Horizontal line

Sample of horizontal line marker

"|" Vertical line

Sample of vertical line marker

"square" Square

Sample of square marker

"diamond" Diamond

Sample of diamond line marker

"^" Upward-pointing triangle

Sample of upward-pointing triangle marker

"v" Downward-pointing triangle

Sample of downward-pointing triangle marker

">" Right-pointing triangle

Sample of right-pointing triangle marker

"<" Left-pointing triangle

Sample of left-pointing triangle marker

"pentagram" Pentagram

Sample of pentagram marker

"hexagram" Hexagram

Sample of hexagram marker

Color Name Short Name RGB Triplet Appearance
"red" "r" [1 0 0]

Sample of the color red

"green" "g" [0 1 0]

Sample of the color green

"blue" "b" [0 0 1]

Sample of the color blue

"cyan" "c" [0 1 1]

Sample of the color cyan

"magenta" "m" [1 0 1]

Sample of the color magenta

"yellow" "y" [1 1 0]

Sample of the color yellow

"black" "k" [0 0 0]

Sample of the color black

"white" "w" [1 1 1]

Sample of the color white

Name-Value Arguments

Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.


Before R2021a, use commas to separate each name and value, and enclose

Name in quotes.

Example: 'Marker','o','MarkerFaceColor','red'

The properties listed here are only a subset. For a complete
list, see FunctionLine Properties or ParameterizedFunctionLine Properties.

Number of evaluation points, specified as a number. The default
is 23. Because fplot uses
adaptive evaluation, the actual number of evaluation points is greater.

Line color, specified as an RGB triplet, a hexadecimal color code, a color name, or a short
name.

For a custom color, specify an RGB triplet or a hexadecimal color code.

  • An RGB triplet is a three-element row vector whose elements
    specify the intensities of the red, green, and blue
    components of the color. The intensities must be in the
    range [0,1], for example, [0.4
    0.6 0.7]
    .

  • A hexadecimal color code is a string scalar or character
    vector that starts with a hash symbol (#)
    followed by three or six hexadecimal digits, which can range
    from 0 to F. The
    values are not case sensitive. Therefore, the color codes
    "#FF8800",
    "#ff8800",
    "#F80", and
    "#f80" are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color
options, the equivalent RGB triplets, and hexadecimal color codes.

Color Name Short Name RGB Triplet Hexadecimal Color Code Appearance
"red" "r" [1 0 0] "#FF0000"

Sample of the color red

"green" "g" [0 1 0] "#00FF00"

Sample of the color green

"blue" "b" [0 0 1] "#0000FF"

Sample of the color blue

"cyan" "c" [0 1 1] "#00FFFF"

Sample of the color cyan

"magenta" "m" [1 0 1] "#FF00FF"

Sample of the color magenta

"yellow" "y" [1 1 0] "#FFFF00"

Sample of the color yellow

"black" "k" [0 0 0] "#000000"

Sample of the color black

"white" "w" [1 1 1] "#FFFFFF"

Sample of the color white

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB® uses in many types of plots.

RGB Triplet Hexadecimal Color Code Appearance
[0 0.4470 0.7410] "#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980] "#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250] "#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560] "#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880] "#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330] "#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840] "#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Example: 'blue'

Example: [0
0 1]

Example: '#0000FF'

Line style, specified as one of the options listed in this table.

Line Style Description Resulting Line
"-" Solid line

Sample of solid line

"--" Dashed line

Sample of dashed line

":" Dotted line

Sample of dotted line

"-." Dash-dotted line

Sample of dash-dotted line, with alternating dashes and dots

"none" No line No line

Line width, specified as a positive value in points, where 1 point = 1/72 of an inch. If the
line has markers, then the line width also affects the marker
edges.

The line width cannot be thinner than the width of a pixel. If you set the line width
to a value that is less than the width of a pixel on your system, the line displays as
one pixel wide.

Marker symbol, specified as one of the values listed in this table. By default, the object
does not display markers. Specifying a marker symbol adds markers at each data point or
vertex.

Marker Description Resulting Marker
"o" Circle

Sample of circle marker

"+" Plus sign

Sample of plus sign marker

"*" Asterisk

Sample of asterisk marker

"." Point

Sample of point marker

"x" Cross

Sample of cross marker

"_" Horizontal line

Sample of horizontal line marker

"|" Vertical line

Sample of vertical line marker

"square" Square

Sample of square marker

"diamond" Diamond

Sample of diamond line marker

"^" Upward-pointing triangle

Sample of upward-pointing triangle marker

"v" Downward-pointing triangle

Sample of downward-pointing triangle marker

">" Right-pointing triangle

Sample of right-pointing triangle marker

"<" Left-pointing triangle

Sample of left-pointing triangle marker

"pentagram" Pentagram

Sample of pentagram marker

"hexagram" Hexagram

Sample of hexagram marker

"none" No markers Not applicable

Marker outline color, specified as "auto", an RGB triplet, a
hexadecimal color code, a color name, or a short name. The default value of
"auto" uses the same color as the Color
property.

For a custom color, specify an RGB triplet or a hexadecimal color code.

  • An RGB triplet is a three-element row vector whose elements
    specify the intensities of the red, green, and blue
    components of the color. The intensities must be in the
    range [0,1], for example, [0.4
    0.6 0.7]
    .

  • A hexadecimal color code is a string scalar or character
    vector that starts with a hash symbol (#)
    followed by three or six hexadecimal digits, which can range
    from 0 to F. The
    values are not case sensitive. Therefore, the color codes
    "#FF8800",
    "#ff8800",
    "#F80", and
    "#f80" are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color
options, the equivalent RGB triplets, and hexadecimal color codes.

Color Name Short Name RGB Triplet Hexadecimal Color Code Appearance
"red" "r" [1 0 0] "#FF0000"

Sample of the color red

"green" "g" [0 1 0] "#00FF00"

Sample of the color green

"blue" "b" [0 0 1] "#0000FF"

Sample of the color blue

"cyan" "c" [0 1 1] "#00FFFF"

Sample of the color cyan

"magenta" "m" [1 0 1] "#FF00FF"

Sample of the color magenta

"yellow" "y" [1 1 0] "#FFFF00"

Sample of the color yellow

"black" "k" [0 0 0] "#000000"

Sample of the color black

"white" "w" [1 1 1] "#FFFFFF"

Sample of the color white

"none" Not applicable Not applicable Not applicable No color

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.

RGB Triplet Hexadecimal Color Code Appearance
[0 0.4470 0.7410] "#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980] "#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250] "#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560] "#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880] "#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330] "#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840] "#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Marker fill color, specified as 'auto', an RGB triplet, a hexadecimal color
code, a color name, or a short name. The 'auto' value uses the same
color as the MarkerEdgeColor property.

For a custom color, specify an RGB triplet or a hexadecimal color code.

  • An RGB triplet is a three-element row vector whose elements
    specify the intensities of the red, green, and blue
    components of the color. The intensities must be in the
    range [0,1], for example, [0.4
    0.6 0.7]
    .

  • A hexadecimal color code is a string scalar or character
    vector that starts with a hash symbol (#)
    followed by three or six hexadecimal digits, which can range
    from 0 to F. The
    values are not case sensitive. Therefore, the color codes
    "#FF8800",
    "#ff8800",
    "#F80", and
    "#f80" are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color
options, the equivalent RGB triplets, and hexadecimal color codes.

Color Name Short Name RGB Triplet Hexadecimal Color Code Appearance
"red" "r" [1 0 0] "#FF0000"

Sample of the color red

"green" "g" [0 1 0] "#00FF00"

Sample of the color green

"blue" "b" [0 0 1] "#0000FF"

Sample of the color blue

"cyan" "c" [0 1 1] "#00FFFF"

Sample of the color cyan

"magenta" "m" [1 0 1] "#FF00FF"

Sample of the color magenta

"yellow" "y" [1 1 0] "#FFFF00"

Sample of the color yellow

"black" "k" [0 0 0] "#000000"

Sample of the color black

"white" "w" [1 1 1] "#FFFFFF"

Sample of the color white

"none" Not applicable Not applicable Not applicable No color

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.

RGB Triplet Hexadecimal Color Code Appearance
[0 0.4470 0.7410] "#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980] "#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250] "#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560] "#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880] "#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330] "#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840] "#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Example: [0.3 0.2 0.1]

Example: 'green'

Example: '#D2F9A7'

Marker size, specified as a positive value in points, where 1 point = 1/72 of an inch.

Output Arguments

collapse all

fp — One or more FunctionLine or ParameterizedFunctionLine objects
scalar | vector

One or more FunctionLine or ParameterizedFunctionLine objects,
returned as a scalar or a vector.

  • If you use the fplot(f) syntax
    or a variation of this syntax, then fplot returns FunctionLine objects.

  • If you use the fplot(funx,funy) syntax
    or a variation of this syntax, then fplot returns ParameterizedFunctionLine objects.

You can use these objects to query and modify properties of
a specific line. For a list of properties, see FunctionLine Properties and ParameterizedFunctionLine Properties.

Tips

  • Use element-wise operators for the best performance
    and to avoid a warning message. For example, use x.*y instead
    of x*y. For more information, see Array vs. Matrix Operations.

  • When you zoom in on the chart, fplot replots
    the data, which can reveal hidden details.

Extended Capabilities

GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.

Usage notes and limitations:

  • This function accepts GPU arrays, but does not run on a GPU.

For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).

Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.

Usage notes and limitations:

  • This function operates on distributed arrays, but executes in the client MATLAB.

For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).

Version History

Introduced before R2006a

Добавить комментарий