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

Обновлено: 07.07.2024

У меня есть набор данных, которые должны быть вычерчены в масштабе loglog. x-значения всегда положительны, но y-значения бывают положительными и отрицательными. Таким образом, команда loglog просто опустит отрицательные значения y. Но я хочу plot их: я хочу иметь ось y в логарифмической шкале, но с отрицательными значениями, А также с положительными значениями.

В принципе, если у нас есть набор данных (x,y) , я хочу plot: (log(x),log(y)) , если y>0 , и (log(x),-log(-y)) , если y . Я попытался использовать эти формулы, а затем простую функцию plot , но при таком подходе оси находятся не в логарифмическом масштабе. Опять же, я хочу, чтобы обе оси были в логарифмическом масштабе.

Edit: чтобы уточнить, я хочу, чтобы результат был точно таким же, как plot(x,y) , но и ось y, и ось x должны быть в логарифмическом масштабе

2 ответа

У меня есть набор из 2 векторов данных, представляющих X и Y. Я смог построить их с помощью JFreeChart как в линейном, так и в логарифмическом масштабе. В линейном масштабе кривая является экспоненциальной, а в логарифмическом-линейной. Что я хочу сделать, так это вычислить параметры a и b.

У меня серьезные проблемы с попытками разобраться с stat_function в R ggplot2 . Я начал с этого тривиального примера: ggplot(data.frame(x = c(1, 1e4)), aes(x)) + stat_function(fun = function(x) x) что работает, как и ожидалось. К сожалению, когда я добавляю логарифмические шкалы как для осей x.

Есть несколько функций для построения логарифмических графиков: вдоль y, вдоль x или и то, и другое: semilogy , semilogx , loglog . Вам понадобится loglog :

Это в основном создает два графика на одном и том же рисунке, один с положительными и один с отрицательными значениями y . Короче говоря:

Поскольку логарифм по определению строго положительный, вы не можете создать отрицательную шкалу. Что вы можете сделать, так это создать иллюзию, которую у вас есть, установив

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

Как отметил Адриан , вы можете использовать данные от loglog() до plot в масштабе журнала-журнала. Однако, возвращаясь к вопросу

Я хочу plot: (log(x),log(y)), если y>0, и (log(x),-log(-y)), если y set(gca, 'XScale', 'log') и set(gca, 'YScale', 'log') для осей x и y соответственно.

Похожие вопросы:

Проблема: В руководстве ggplot четко указано, что scale_y_log10() и coord_trans(y="log10") ведут себя по-разному. Первый преобразует данные, второй-координаты. Таким образом, первое не.

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

У меня есть набор из 2 векторов данных, представляющих X и Y. Я смог построить их с помощью JFreeChart как в линейном, так и в логарифмическом масштабе. В линейном масштабе кривая является.

У меня серьезные проблемы с попытками разобраться с stat_function в R ggplot2 . Я начал с этого тривиального примера: ggplot(data.frame(x = c(1, 1e4)), aes(x)) + stat_function(fun = function(x) x).

У меня есть два набора данных: пиковая скорость и амплитуда. Связь между этими двумя параметрами не является линейной, и я использовал логарифмический график (base10) перед выполнением линейных.

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

Мой файл trace можно скачать отсюда . Когда I plot только ось y в логарифмическом масштабе. все хорошо import pandas as pd import numpy import matplotlib.pyplot as plt iplevel =.

Я хотел бы иметь две линии (или лучше точечные графики) в одном графике. Вторичная линия Y должна быть в логарифмическом масштабе. Как это сделать с python matplotlib?

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

MATLAB предоставляет следующие функции для работы с графикой:

plot( ) - построение графика значений из массива Х от номера отсчета.

plot( , ) - построение графика значений из массива У от значений из массива Х.

При вызове команды создается окно с указанным графиком.

Функция plot имеет различные формы, связанные с входными параметрами, например plot(y) создает кусочно-линейный график зависимости элементов y от их индексов. Если в качестве аргументов заданы два вектора, то plot(x,y) создаст график зависимости y от x . Например, для построения графика функции sin в интервале от 0 до 2, сделаем следующее


Программа построила график зависимости, который отображается в окне


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

Функцию plot() можно записать и с одним аргументом x или y:

в результате получим два разных графика. Их анализ показывает, что в случае одного аргумента функция plot() отображает множество точек по оси Oy, а по оси Оx происходит автоматическая генерация множества точек с единичным шагом. Следовательно, для простой визуализации вектора в виде двумерного графика достаточно воспользоваться функцией plot() с одним аргументом.




4.2. Трехмерные графики

Для построения трехмерных графиков во первых понадобится создать сетку координат на плоскости. Выполняет это функция [X,Y]=meshgrid(x,y), где x и y - одномерные массивы, а X и Y - полученные в результате двухмерные массивы. Если массивы x и y одинаковые, то достаточно указать [X,Y]=meshgrid(x). Например: [X,Y]=meshgrid([-2:0.1:2]).

После этого подается команда на вывод трехмерного графика: plot3(X,Y,Z).

4.3. Вывод нескольких графиков

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



Команда hold on позволяет добавлять кривые на существующий график. Функция subplot позволяет выводить множество графиков в одном окне




4.4 Печать графиков

Пункт Print в меню File и команда print печатают графику MatLab. Меню Print вызывает диалоговое окно, которое позволяет выбирать общие стандартные варианты печати. Команда print обеспечивает большую гибкость при выводе выходных данных и позволяет контролировать печать из М-файлов. Результат может быть послан прямо на принтер, выбранный по умолчанию, или сохранен в заданном файле.
4.5. Элементарные графические функции системы MATLAB


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

  • LOGLOG - график в логарифмическом масштабе

  • SEMILOGX, SEMILOGY - график в полулогарифмическом масштабе

  • POLAR - график в полярных координатах

  • PLOT3 - построение линий и точек в трехмерном пространстве

  • MESHGRID - формирование двумерных массивов X и Y

  • MESH, MESHC, MESHZ - трехмерная сетчатая поверхность

  • SURF, SURFC - затененная сетчатая поверхность

  • SURFL - затененная поверхность с подсветкой

  • AXIS - масштабирование осей и вывод на экран

  • GRID - нанесение сетки

  • HOLD - управление режимом сохранения текущего графического окна

  • SUBPLOT - разбиение графического окна

  • ZOOM - управление масштабом графика

  • COLORMAP - палитра цветов

  • CAXIS - установление соответствия между палитрой цветов и масштабированием осей

  • SHADING - затенение поверхностей

  • CONTOURC - формирование массива описания линий уровня

  • CONTOUR - изображение линий уровня для трехмерной поверхности

  • CONTOUR3 - изображение трехмерных линий уровня

  • TITLE - заголовки для двух- и трехмерных графиков

  • XLABEL, YLABEL, ZLABEL - обозначение осей

  • CLABEL - маркировка линий уровня

  • TEXT - добавление к текущему графику текста

  • GTEXT - размещает заданный текст на графике с использованием мыши

  • LEGEND - пояснение к графику

  • COLORBAR - шкала палитры

  • BAR - столбцовые диаграммы

  • ERRORBAR - график с указанием интервала погрешности

  • HIST - построение гистограммы

  • STEM - дискретные графики

  • STAIRS - ступенчатый график

  • ROSE - гистограмма в полярных координатах

  • COMPASS, FEATHER - графики векторов

  • QUIVER - поле градиентов функции

  • COMET - движение точки по траектории

  • FILL - закраска многоугольника

  • COMET3 - движение точки по пространственной траектории

  • SLICE - сечения функции от трех переменных

  • WATERFALL - трехмерная поверхность

  • FILL3 - закраска многоугольника в трехмерном пространстве

  • VIEWMTX - вычисление матрицы управления углом просмотра

  • VIEW - управление положением точки просмотра

5. Условные операторы и циклы в MatLab

5.1. Условный оператор if

В самом простом случае синтаксис данного оператора if имеет вид:

Обращаю Ваше внимание что в отличие от современных языков программирования не используются такое понятие как составной оператор. Блок условного оператора обязательно заканчивается служебным словом end.

Ниже представлен пример реализации функции sign(), которая возвращает +1, если число больше нуля, -1 – если число меньше нуля и 0, если число равно нулю:

x = 5;
if x > 0
disp(1);
end
if x
% выполняются, если истинно условие
else
% выполняются, если условие ложно
end

Тогда приведенный выше пример можно записать следующим образом:

x = 5;
if x > 0
disp(1);
else
if x
% выполняются, если истинно выражение1
elseif
% выполняются, если истинно выражение2
.
elseif
% выполняются, если истинно выражениеN
end

и записывается следующим образом:

x = 5;
if x > 0
disp(1); % выполняется, если x > 0
elseif x = 0 и x = 0 & x 2:

x = 1;
if x 2
disp('x не принадлежит диапазону от 0 до 2');
else
disp('x принадлежит диапазону от 0 до 2');
end

Используя логические операторы И, ИЛИ, НЕ, можно создавать разнообразные составные условия. Например, можно сделать проверку, что переменная x попадает в диапазон от -5 до 5, но не принадлежит диапазону от 0 до 1. Очевидно, это можно реализовать следующим образом:

Обратите внимание, что при сложном составном условии были использованы круглые скобки. Дело в том, что приоритет операции И выше приоритета операции ИЛИ, и если бы не было круглых скобок, то условие выглядело бы так: (x >= -5 и x 1. Очевидно, что такая проверка давала бы другой результат от ожидаемого.

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

Графики в 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 инструментальной панели окна.








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

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

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



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


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

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