Как отметить точку на графике матлаб
Перейти к содержимому

Как отметить точку на графике матлаб

  • автор:

Документация

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

  • Включайте символ маркера в строчку с дополнительными параметрами, такую как plot(x,y,’-s’) .
  • Задайте Marker свойство как пара «имя-значение», такая как plot(x,y,’Marker’,’s’) .

Для списка опций маркера смотрите Поддерживаемые Символы маркера.

Добавление маркеров к линейному графику

Постройте график. Отобразите маркер в каждой точке данных включением строчки с дополнительными параметрами при вызове plot функция. Например, используйте ‘-o’ для сплошной линии с круговыми маркерами.

x = linspace(0,10,100); y = exp(x/10).*sin(4*x); plot(x,y,'-o')

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

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

plot(x,y,'o')

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

В качестве альтернативы можно добавить маркеры в линию путем установки Marker свойство как пара «имя-значение». Например, plot(x,y,’Marker’,’o’) строит график с круговыми маркерами.

Определение размера маркера и цвета

Постройте график с маркерами. Настройте маркеры путем установки этих аргументов пары «имя-значение» использования свойств с plot функция:

  • MarkerSize — Размер маркера, который задан как положительное значение.
  • MarkerEdgeColor — Цвет контура маркера, который задан как название цвета или триплет RGB.
  • MarkerFaceColor — Внутренний цвет маркера, который задан как название цвета или триплет RGB.

Задайте цвета с помощью любого вектор символов названия цвета, такие как ‘red’ , или триплет RGB, такой как [0.4 0.6 0.7] Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1].

x = linspace(0,10,50); y = sin(x); plot(x,y,'-s','MarkerSize',10,. 'MarkerEdgeColor','red',. 'MarkerFaceColor',[1 .6 .6])

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

Управление размещением маркеров вдоль строки

Постройте график с 1 000 точек данных, добавьте маркеры звездочек и управляйте положениями маркера с помощью MarkerIndices свойство. Установите свойство на индексы точек данных, где вы хотите отобразить маркеры. Отобразите маркер каждая десятая точка данных, начиная с точки First Data.

x = linspace(0,10,1000); y = exp(x/10).*sin(4*x); plot(x,y,'-*','MarkerIndices',1:10:length(y))

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

Отображение маркеров в максимальных и минимальных точках данных

Создайте вектор из случайных данных и найдите индекс минимальных и максимальных значений. Затем постройте график данных. Отобразите красные маркеры в минимальных и максимальных значениях данных путем установки MarkerIndices свойство к вектору из значений индекса.

x = 1:100; y = rand(100,1); idxmin = find(y == max(y)); idxmax = find(y == min(y)); plot(x,y,'-p','MarkerIndices',[idxmin idxmax],. 'MarkerFaceColor','red',. 'MarkerSize',15)

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

Вернитесь к местоположениям маркера по умолчанию

Измените местоположения маркера, затем вернитесь назад к местоположениям по умолчанию.

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

x = linspace(0,10,25); y = x.^2; p = plot(x,y,'-s'); p.MarkerSize = 10; p.MarkerIndices = 1:5:length(y);

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

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

p.MarkerIndices = 1:length(y);

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

Поддерживаемые символы маркера

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

Смотрите также

Функции

Свойства

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB

Поддержка

  • MATLAB Answers
  • Помощь в установке
  • Отчеты об ошибках
  • Требования к продукту
  • Загрузка программного обеспечения

© 1994-2021 The MathWorks, Inc.

  • Условия использования
  • Патенты
  • Торговые марки
  • Список благодарностей

Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

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

Вывод значения ОДНОЙ точки на график

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

Здравствуйте, задача простая, но решить ее не удалось. Есть — Две функции, графики которых отображаются в одном окне, но необходимо помимо графиков отметить красным одну точку с координатами (x,y) — не пойму как это реализовать!

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

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

Вывод значения на график
Есть работающая программа в Matlab. Строится график, также подсчитывается значение n. С этим всё.

Запрос в БД, вывод одного значения из одной таблицы по сравнению из двух
Здравствуйте снова, еще один вопрос: При выполнении вышеописанного запроса в ADOQuery падает с.

Поиск строки в файле и вывод значения в textBox одной из ее подстрок
Здравствуйте. Могли бы вы мне помочь с такой задачей: Есть файл .ini, в котором записаны.

373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890
drzorin

plot(x,y)

Регистрация: 29.05.2015
Сообщений: 103

bobah16, неа))
вот было бы смешно если бы не было так грустно.

Только так — жирная красная точка

plot(tau,Elas,'r.','MarkerSize', 20)

373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890

drzorin, что неа?
То, что я написал рисует точку, если, как вы указали, х и у это ее координаты. Ну а уж с размером и цветом сами разбирайтесь.

Регистрация: 29.05.2015
Сообщений: 103
bobah16, не рисует, поэтому у меня и возникла проблема)
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
Надо указать или * или о
Регистрация: 03.12.2019
Сообщений: 10
Добавлено через 47 секунд
drzorin, как решили проблему?
785 / 470 / 122
Регистрация: 31.10.2016
Сообщений: 3,941
drzorin, после построения графиков нужно ввести команду

hold on;

тогда можно будет рисовать поверх уже построенного, в частности отобразить красную точку, например так

plot(x,y,'.','color','red');

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

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

Определить точки, расстояние между которыми минимально, а сами точки находятся в одной четверти
Случайным образом формируются координаты X и Y 60 точек. Диапазон значений координат от -150 до.

Даны три точки А,В,С, лежащие на одной прямой. Определить расположение точки С относительно луча АВ
Проверьте пожалуйста формулу для вычисления данной задачи, что не так? Даны три точки А,В,С.

А, В и С лежат на одной прямой. Напишите условие того, что точки А и В находятся по одну сторону от точки С
А, В и С лежат на одной прямой. Напишите условие того, что точки А и В находятся по одну сторону от.

Или воспользуйтесь поиском по форуму:

Подпись точек на графике матлаб. Построение графиков matlab

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

Функция plot

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

Предположим, что требуется вывести график функции синуса в диапазоне от 0 до . Для этого зададим вектор (множество) точек по оси Ox, в которых будут отображаться значения функции синуса:

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

и выведем результат на экран

В результате получим график, представленный на рис. 3.1.

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

Рис. 3.1. Отображение функции синуса с помощью функции plot().

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

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

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

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

x = 0:0.01:pi;
y1 = sin(x);
y2 = cos(x);
plot(x,y1,x,y2);

Результат работы данного фрагмента программы представлен на рис. 3.3.

Рис. 3.2. Результаты работы функции plot() с одним аргументом:

а – plot(x); б – plot(y).

Рис. 3.3. Отображение двух графиков в одних координатных осях.

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

y1 = sin(x);
y2 = cos(x);

которые требуется отобразить на экране. Для этого объединим их в двумерную матрицу

в которой столбцы составлены из векторов y1 и y2 соответственно. Такая матрица будет отображена функцией

plot(); % апострофы переводят вектор-строку
% в вектор-столбец

в виде двух графиков (рис. 3.4).

Рис. 3.4. Отображение двумерной матрицы в виде двух графиков.

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

x1 = 0:0.01:2*pi;
y1 = sin(x1);

x2 = 0:0.01:pi;
y2 = cos(x2);

figure; % создание 2-го графического окна

Функция figure, используемая в данной программе, создает новое графическое окно и делает его активным. Функция plot(), вызываемая сразу после функции figure, отобразит график в текущем активном графическом окне. В результате на экране будут показаны два окна с двумя графиками.

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

x1 = 0:0.01:2*pi;
y1 = sin(x1);

X2 = 0:0.01:pi;
y2 = cos(x2);

Figure(1); %создание окна с номером 1
plot(x1, y1); % рисование первого графика
figure(2); % создание графического окна с номером 2
plot(x2, y2); % рисование 2-го графика во 2-м окне

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

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

Рассмотрим пример отображения двух графиков друг под другом вышеприведенных функций синуса и косинуса.

x1 = 0:0.01:2*pi;
y1 = sin(x1);

X2 = 0:0.01:pi;
y2 = cos(x2);

Figure(1);
subplot(2,1,1); % делим окно на 2 строки и один столбец
plot(x1,y1); % отображение первого графика
subplot(2,1,2); % строим 2-ю координатную ось
plot(x2,y2); % отображаем 2-й график в новых осях

Результат работы программы показан на рис. 3.5.

Аналогичным образом можно выводить два и более графиков в столбец, в виде таблицы и т.п. Кроме того, можно указывать точные координаты расположения графика в графическом окне. Для этого используется параметр position в функции subplot():

где left – смещение от левой стороны окна; bottom – смещение от нижней стороны окна; width, height – ширина и высота графика в окне. Все эти переменные изменяются в пределах от 0 до 1.

Рис. 3.5. Пример работы функции subplot.

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

x1 = 0:0.01:2*pi;
y1 = sin(x1);

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

Таким образом, используя параметр position можно произвольно размещать графические элементы в плоскости окна.

Рис. 3.6. Пример работы функции subplot с параметром position.

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

Пакет 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);

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

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

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

Таблица 3.4. Функции оформления графиков

Рассмотрим работу данных функций в следующем примере:

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

Plot(x,y);
axis();
grid on;
title(«The graphic of sin(x) function»);
xlabel(«The coordinate of Ox»);
ylabel(«The coordinate of Oy»);
text(3.05,0.16,»\leftarrow sin(x)»);

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

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

Рис. 3.9. Пример работы функций оформления графика

Основы графической визуализации вычислений

Особенности графики системы MATLAB

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

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

Вращение графиков мышью

Контекстное меню графиков

Управление форматом графиков

Особенности графики системы MATLAB

Начиная с версии MATLAB 4.0, впервые ориентированной на Windows, графические средства системы MATLAB были существенно улучшены. Основные отличительные черты графики в новой версии MATLAB 6:

Существенно улучшенный интерфейс графических окон;

Введение новой панели инструментов Camera для интерактивного изменения условий видимости объекта;

Расширенные возможности форматирования графики;

Возможность создания графики в отдельных окнах;

Возможность вывода нескольких графических окон;

Возможность перемещения окон по экрану и изменения их размеров;

Возможность перемещения области графики внутри графического окна;

Задание различных координатных систем и осей;

Высокое качество графики;

Широкие возможности использования цвета;

Легкость установки графических признаков — атрибутов;

Снятие ограничений на число цветов;

Обилие параметров команд графики;

Возможность получения естественно выглядящих трехмерных фигур и их сочетаний;

Простота построения трехмерных графиков с их проекцией на плоскость;

Возможность построения сечений трехмерных фигур и поверхностей плоскостями;

Функциональная многоцветная и полутоновая окраска;

Возможность имитации световых эффектов при освещении фигур точечным источником света;

Возможность создания анимационной графики;

Возможность создания объектов для типового интерфейса пользователя.

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

На более низком уровне решения задач используется ориентированная на программиста дескрипторная графика (Handle Graphics), при которой каждому графическому объекту в соответствие ставится особое описание — дескриптор, на который возможны ссылки при использовании графического объекта. Дескрипторная графика позволяет осуществлять визуальное программирование объектов пользовательского интерфейса — управляющих кнопок, текстовых панелей и т. д. Команды дескрипторной графики могут использоваться в высокоуровневой графике, например, для удаления осей, изменения цвета и т. д. в уже построенных графических объектах. Эти обширные возможности делают графику MATLAB одной из лучших среди графических подсистем систем компьютерной математики (СКМ).

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

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

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

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

Возьмем вначале простейший пример — построение графика синусоиды. Следует помнить, что MATLAB (как и другие СКМ) строит графики функций по ряду точек, соединяя их отрезками прямых, т. е. осуществляя линейную интерполяцию функции в интервале между смежными точками. Зададим интервал изменения аргумента х от 0 до 10с шагом 0.1. Для построения графика достаточно вначале задать вектор х=0:0.1:10, а затем использовать команду построения графиков plot(sin(x)). Это показано на рис. 3.1.

Вектор х задает интервал изменения независимой переменной от 0 до 10 с шагом 0.1. Почему взят такой шаг, а не, скажем, 1? Дело в том, что plot строит не истинный график функции sin(x), а лишь заданное числом элементов вектора х число точек. Эти точки затем просто соединяются отрезками прямых, т. е. осуществляется кусочно-линейная интерполяция данных графика. При 100 точках полученная кривая глазом воспринимается как вполне плавная, но при 10-20 точках она будет выглядеть состоящей из отрезков прямых.

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

Рис. 3.1. Пример построения графика синусоиды

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

Более подробное описание графического окна будет дано в уроке 5. А пока пойдем дальше и попытаемся построить графики сразу трех функций: sin(x), cos(#) и sin(x)/х. Прежде всего отметим, что эти функции могут быть обозначены переменными, не имеющими явного указания аргумента в виде у(х):

»yl=sin(x): y2=cos(x): y3=sin(x)/x;

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

где al, а2, аЗ,.„ — векторы аргументов функций (в нашем случае все они — х), a f1, f2, f3. -векторы значений функций, графики которых строятся в одном окне. В нашем случае для построения графиков указанных функций мы должны записать следующее:

Можно ожидать, что MATLAB в этом случае построит, как обычно, точки графиков этих функций и соединит их отрезками линий. Но, увы, если мы выполним эти команды, то никакого графика не получим вообще. Не исключен даже сбой Б работе программы. Причина этого казуса уже обсуждалась в предыдущем уроке — при вычислении функции y3=sin(x)/x, если х представляет собой массив (вектор), то нельзя использовать оператор матричного деления /.

Этот пример еще раз наглядно указывает на то, что чисто поверхностное применение даже такой мощной системы, как MATLAB, иногда приводит к досадным срывам. Чтобы все же получить график, надо вычислять отношение sin(x) к хс помощью оператора поэлементного деления массивов./. Этот случай поясняет рис. 3.2.

Рис. 3.2. Построение графиков трех функций

Обратите внимание на то, что хотя на этот раз MATLAB построил графики всех трех функций, в окне командного режима появилось предупреждение о делении на 0 — в момент, когда х=0. Это говорит о том, что pi ot «не знает» о том, что неопределенность sin(x)/x=0/0 устранимая и дает 1. Это недостаток практически всех систем для численных вычислений.

Графическая функция fplot

Разумеется, MATLAB имеет средства для построения графиков и таких функций, как sin(x)/x, которые имеют устранимые неопределенности. Не обсуждая эти средства подробно, просто покажем, как это делается, с помощью другой графической команды —

Она позволяет строить функцию, заданную в символьном виде, в интервале изменения аргумента х от xmin до xmax без фиксированного шага изменения х. Один из вариантов ее применения демонстрирует рис. 3.3. Хотя в процессе вычислений предупреждение об ошибке (деление на 0) выводится, но график строится правильно, при х=0 sinx/x=l. Обратите также внимание на две используемые команды: clear (очистить)- очистка графического окна и grid on (сетка)- включение отображения сетки, которая строится пунктирными линиями.

Рис. 3.3. Построение графика sin(x)/x функцией fplot

На рис. 3.3 представлено также меню File (Файл) окна графики. Нетрудно заметить, что оно содержит типовые файловые операции. Однако они относятся не к файлам документов, а к файлам графиков. В частности, можно присваивать имя записываемым на диск рисункам с графиками.

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

Столбцовые диаграммы

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

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

Рис. 3.4 дает также представление о меню Tools (Инструменты) окна графики, появившемся начиная с версии MATLAB 5.3.1 (выпуск 11.1). Нетрудно заметить, что кроме возможности вывода инструментальной панели здесь имеется целый ряд других команд, которые будут рассмотрены в дальнейшем. Это команды вывода свойств графических объектов, изменения масштаба графика, добавления осей и т. д.

Рис. 3.4. Построение столбцовой диаграммы значений элементов вектора

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

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

Окно с построенным графиком показано на рис. 3.5.

Рис. 3.5. Окно с графиками поверхности и ее проекции на плоскость под фигурой

Раньше пришлось бы убить много дней на составление и отладку нужной для построения такого графика программы. В MATLAB же можно в считанные секунды изменить задающую поверхность функцию Z(X, Y) и тут же получить новый график поверхности с окраской, в данном случае заданной вектором Z, и с ее проекцией на плоскость XY. На рис. 3.5 показано также открытое меню Help (Помощь) окна трехмерной графики.

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

Вращение графиков мышью

Можно поворачивать построенную фигуру мышью и наблюдать ее под разными углами. Рассмотрим эту возможность на примере построения логотипа системы MATLAB — мембраны. Для этого, введя команду membrane, получим исходный график, представленный на рис. 3.6.

Рис. 3.6. Построение мембраны — логотипа системы MATLAB

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

Любопытно, что в версии MATLAB 6 вращать можно и двумерные графики, наблюдая поворот плоскости, в которой они построены. Никакого программирования такое вращение не требует.

Рис. 3.7. Вращение трехмерной фигуры мышью

Контекстное меню графиков

Для переключения в режим редактирования графика нужно щелкнуть на кнопке Edit Plot (Редактировать график) с изображением курсора-стрелки. В этом режиме графиком можно управлять с помощью контекстного меню, вызываемого щелчком правой кнопки мыши. Вид этого меню при курсоре, расположенном в области трехмерного графика вне построенных трехмерных графических объектов, показан на рис. 3.8. С помощью мыши можно также выделить график. Щелчок левой клавишей выводит рамку вокруг рисунка (см. рис. 3.8). Теперь на график можно наносить стрелки, поясняющие надписи (кнопка с буквой А) и т. д.

Рис. 3.8. График в состоянии редактирования и контекстное меню

Основы форматирования двумерных графиков

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

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

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

Форматирование линий графиков

MATLAB имеет возможность легко настраивать и корректировать свойства графиков с помощью специальных средств. В новой версии MATLAB 6.0 они существенно изменены. Так, в предшествующей версии для настройки (форматирования) графиков использовался специальный редактор свойств — Graphics Properties Editor (Редактор свойств графики). Его можно было вызвать из меню File окна командного режима MATLAB с помощью команды Show Graphics Properties Editor (Показать редактор свойств графики).

В новой версии MATLAB форматирование графиков стало более строгим и удобным. При этом ранее упомянутый редактор свойств графиков перестал так именоваться, и команда Show Graphics Properties в новой версии отсутствует. Ее заменяют команды Figure Properties (свойства фигуры) и Axis Properties (свойства осей) со всеми необходимыми настройками.

При построении графиков появляется графическое окно. Иногда оно бывает скрыто ранее имеющимися окнами как системы MATLAB, так и других работающих в среде Windows 95/98/Me/2000/NT4 приложений. Если вы не увидели графика, заданного для построения, то поищите его в списке открытых окон (приложений), нажимая клавиши Alt + Tab, и выберите из списка нужное окно. Окна графики имеют изображение логотипа системы MATLAB. По умолчанию они выводятся с панелью инструментов с рядом кнопок вполне очевидного назначения.

Щелкнув на кнопке Edit Plot (Редактировать график) в панели инструментов окна графики и щелкнув по графику, можно заметить, что график выделился: вокруг него появилась рамка. Теперь, указав курсором мыши на тот или иной объект графика и щелкнув снова левой клавишей, можно наблюдать выделение объекта и появление окна его форматирования.

Например, указав в режиме редактирования мышью на линию графика (и дважды быстро щелкнув левой клавишей), можно увидеть окно форматирования линий графика, показанное на рис. 3.9 слева. Часть окна графики с выделенным графиком видна справа. Обратите внимание на появление на линии графика ряда черных квадратиков, — они используются для указания курсором мыши именно на линию графика, а не на другие объекты.

Рис. 3.9. Окно графика (справа) и окно форматирования линий (слева)

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

Полезно знать, что кнопка Apply (Применить) позволяет применить сделанные установки к графику до закрытия окна диалога. Кнопка О К вводит сделанные установки и закрывает окно диалога. Назначение других кнопок очевидно.

Форматирование маркеров опорных точек

В нашем случае опорные точки задаются ранжированной переменной х, имеющей ряд значений от -15 до +15 с шагом 0.1. Эти точки появляются на графике, если в поле свойств маркера Marker Properties (Свойства маркера) из меню Style (Стиль) выбрать стиль маркера. На рис. 3.10, к примеру, показано построение графика с маркерами опорных точек в виде окружностей.

Рис. 3.10. Пример задания параметров маркеров и построения графика с ними

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

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

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

Рис. 3.11 показывает пример такого форматирования для графика, полученного исполнением этих команд.

Кстати, обратите внимание на то, как заданы степени синуса. Записать эти выражения в виде sin(x)^2 и cos(x)^2 будет грубейшей ошибкой, поскольку х здесь вектор. Операторы ^ в данном случае дают поэлементное возведение в степень, что и нужно для построения графиков этих функций.

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

Форматирование осей графиков

Аналогично описанным выше правилам выполняется форматирование и других объектов графиков. Например, указав курсором мыши на оси графиков (на них тоже есть метки в виде черных квадратиков) и дважды щелкнув левой клавишей мыши, можно увидеть появление окна форматирования объектов дескрипторной графики Property Editor (Редактор свойств, Графический редактор свойств) (рис. 3.12), настроенного на форматирование осей.

Рис. 3.12. Пример форматирования осей графика

Окно графического редактора свойств дескрипторной графики имеет множество вкладок, настройки которых довольно очевидны, и ничто не мешает читателю поэкспериментировать с ними несколько минут. Это позволит понять простоту и одновременно высокую эффективность средств форматирования объектов графики. Например, вы можете задать линейный или логарифмический масштаб осей (вкладка Scale (Масштаб), открытая на рис. 3.12), нормальное или инверсное направление осей (X, У, а в случае трехмерных графиков и Z), показ сетки (параметр Grid Show), изменить стиль осей и цвета фона (вкладка Style (Стиль)), нанести у осей надписи (вкладка Label (Ярлык)) и пр.

Рис. 3.13 показывает график синусоиды после некоторых операций по форматированию осей. Здесь (кстати, как и на рис. 3.12) задано построение сетки Grid по осям X и Y, построение надписей (просто буквы X и Y) по координатным осям и построение титульной надписи. Заодно на рис. 3.13 показано в открытом виде меню расширенных инструментальных средств графического окна. Его команды подробно обсуждаются в уроке 5. Словом, с объектами графики можно сделать все, что угодно! Некоторые из возможностей форматирования объектов графики мы рассмотрим позже, по мере описания типов графиков.

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

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

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

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

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

Рис. 3.14. Нанесение надписи на отформатированный график

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

Рис. 3.15. Окончательно отформатированный график трех функций

На рис. 3.15, в частности, показано задание надписей разным стилем, а также задание стрелки с помощью соответствующей кнопки панели инструментов. Это стрелку в режиме редактирования графика можно перемещать и вращать мышью, а также менять ее длину. Можно также наносить на график и обычные линии (без стрелки).

Построение легенды и шкалы цветов на графике

Дополнительно можно изменить размеры графика (см. меню Tools (Инструменты) и его команды Zoom In (Увеличить)и Zoom Out (Уменьшить)), начать поворот графика мышью (команда Rotate 3D), добавить отрезок прямой или иной графический примитив (подменю Add) и подключить к графику легенду — пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него. Поскольку наш график содержит три кривые, то легенда представляет собой обозначение этих трех линий в правом верхнем углу рисунка (рис. 3.16). Каждая линия имеет тот же цвет, что и на графике (и тот же стиль).

Рис. 3.16. Окончательно сформированный график

Следует еще раз отметить, что все описанные возможности форматирования графиков доступны и программным способом, путем задания соответствующих графических команд, параметров и примитивов. Например команда text(х,у, «legend») позволяет задать надпись «legend» с началом, имеющим координаты (х, у). Если после первого апострофа перед текстом поместить параметр \leftarrow, то надпись (легенда) появится после стрелки с острием, обращенным влево. Аналогично параметр \rightarrow после надписи задает вывод стрелки после надписи с острием, обращенным вправо. Эта возможность позволяет помечать не только кривые, но и отдельные точки на них. Возможно также применение команды legend(«s1», «s2». ), выводящей легенду обычного вида — отрезки линий графиков с поясняющими надписями «si», «s2» и т.д.

Перемещение графика в графическом окне

Обычно график занимает фиксированное положение в центре графического окна. Однако в режиме редактирования графиков, когда курсор мыши находится в области графика, в контекстном меню правой клавиши мыши есть команда Unlock Axes Position (Отключить позиционирование осей). Она снимает фиксацию положения координатных осей графика и позволяет двигать его мышью вместе с осями. Это иллюстрирует рис. 3.17.

Рис. 3.17. Пример перемещения графика

Интересно, что при перемещении графика его легенда и цветовая диаграмма остаются на прежнем месте.

Применение графической «лупы»

На панели инструментов есть кнопки с изображение лупы и знаками + и -. С их помощью выполняются команды Zoom In (+)(Увеличить) и Zoom Out (-) (Уменьшить). Это позволяет увеличивать или уменьшать масштаб просмотра изображения. При этом команда Zoom In интересна еще одной возможностью — с ее помощью можно выделять часть графика перемещением мыши с нажатой левой клавишей — рис. 3.18.

Рис. 3.18. Пример выделения части графика


Рис. 3.19. Пример просмотра части графика

Область выделения отмечается прямоугольником из тонких точечных линий. Отпустив левую клавишу мыши, можно наблюдать построение выделенной части графика на всем окне — рис. 3.19. С помощью команды Zoom Out можно восстановить график в прежнем масштабе. Таким образом реализуется графическая «лупа».

Работа с камерой 3D-графики

В отличие от двумерных (2D) графиков форматирование трехмерных графиков содержит ряд дополнительных возможностей. Покажем их на простом примере построения 3D-графики с помощью следующих простых команд:

Рис. 3.20. Пример построения каркасного 3D-графика

Здесь первая команда создает массив точек поверхности с помощью одного из ряда встроенных в ядро системы MATLAB готовых описаний таких поверхностей.

Рис. 3.21. Пример форматирования трехмерного графика

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

Несмотря на множество кнопок, пользование панелью инструментов 3D-графики достаточно просто, если представить себе, что вы смотрите на предмет через объектив фотокамеры. Наглядные рисунки на кнопках поясняют смысл их действия — это перемещение и вращение 3D-рисунков относительно тех или иных координатных осей, включение отображения перспективы, изменение цветовой схемы и др.

Рис.. 3.22 . Cтоп кадр вращения трехмерного графика

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

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

Заключительные замечания по графике

Итак, мы рассмотрели основные приемы форматирования графиков, в основном используя средства панели инструментов и отдельные, достаточно очевидные, команды из меню графического окна. Более подробно интерфейс пользователя графического окна будет описан в уроке 5.

Хотя многие приемы форматирования графики заимствованы из технологии визуально-ориентированного программирования, в базовой системе MATLAB (без дополнительных пакетов расширения (toolbox)) все еще отсутствует полноценная возможность такого программирования, даже с учетом расширенных возможностей дескрипторной графики. Это видно уже из того, что вносимые форматированием изменения в графиках не сопровождаются генерацией программных кодов, которые в последующем при их вызове с новыми параметрами порождали бы построение графиков с новыми параметрами. Пользователь может лишь записать на диск копии созданных графиков в формате растрового изображения (.bmp) и использовать их в целях иллюстрации своих материалов.

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

Что нового мы узнали?

В этом уроке мы научились:

Строить графики функций одной переменной.

Строить столбцовые диаграммы.

Строить трехмерные графики.

Вращать графики мышью.

Использовать контекстное меню графиков.

Управлять форматом графиков.

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

Функция plot

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

Предположим, что требуется вывести график функции синуса в диапазоне от 0 до. Для этого зададим вектор (множество) точек по оси Ox, в которых будут отображаться значения функции синуса:

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

и выведем результат на экран

В результате получим график, представленный на рис. 3.1.

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

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

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

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

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

Результат работы данного фрагмента программы представлен на рис. 3.3.

Рис. 3.2. Результаты работы функции plot() с одним аргументом:

а — plot(x); б — plot(y).

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

которые требуется отобразить на экране. Для этого объединим их в двумерную матрицу


в которой столбцы составлены из векторов y1 и y2 соответственно. Такая матрица будет отображена функцией plot(); % апострофы переводят вектор-строку % в вектор-столбец в виде двух графиков (рис. 3.4).

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

plot(x1, y1); % рисование первого графика

figure; % создание 2-го графического окна

plot(x2, y2); % рисование 2-го графика во 2-м окне

Функция figure, используемая в данной программе, создает новое графическое окно и делает его активным. Функция plot(), вызываемая сразу после функции figure, отобразит график в текущем активном графическом окне. В результате на экране будут показаны два окна с двумя графиками.

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

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

Таблица 3.4. Функции оформления графиков

Рассмотрим работу данных функций в следующем примере:

title(«The graphic of sin(x) function»);

xlabel(«The coordinate of Ox»);

ylabel(«The coordinate of Oy»);

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

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

Рис. 3.9. Пример работы функций оформления графика

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

в точках 0.2, 0.3, 0.5, 0.8, 1.3, 1.7, 2.5.
Задача решается в два этапа.
1. Создается вектор-строка х, содержащая координаты заданных точек.
2. Вычисляются значения функции y (х )от каждого элемента вектора х и записываются полученные значения в вектор-строку у.
Значения функции необходимо найти для каждого из элементов вектор-строки х, поэтому операции в выражении для функции должны выполняться поэлементно .

» х =
х =
0.2000 0.3000 0.5000 0.8000 1.3000 1.7000 2.5000 » у = sin(x).^2./(l+cos(x))+exp(-x).*log(x)
У =

Обратите внимание, что при попытке использования операций возведения в степень ^, деления / и умножения * (которые не относятся к поэлементным) выводится сообщение об ошибке уже при возведении sin(x) в квадрат:

» у = sin(х)^2/(1+соз(х))+exp(-x)*log(x)
. Error using ==> ^
Matrix must be square.

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

» х
х =
0.2000 0.3000 0.5000 0.8000 1.3000 1.7000 2.5000 » у
у =
-1.2978 -0.8473 -0.2980 0.2030 0.8040 1.2258 1.8764

Часто требуется вывести значение функции в точках отрезка, отстоящих друг от друга на равное расстояние (шаг). Предположим, что необходимо вывести таблицу значений функции y (х )наотрезке с шагом 0.2. Можно, конечно, ввести вектор-строку значений аргумента х= из командной строки и вычислить все значения функции так, как описано выше. Однако, если шаг будет не 0.2, а, например 0.01, то предстоит большая работа по вводу вектора х.
В MatLab предусмотрено простое создание векторов, каждый элемент которых отличается от предшествующего на постоянную величину, т.е. на шаг. Для ввода таких векторов служит двоеточие (не путайте с индексацией при помощи двоеточия). Следующие два оператора приводят к формированию одинаковых вектор-строк. Условно можно записать

» х =
х =
» х =
х =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

Условно можно записать

х = [начальное значение: шаг: конечное значение]

Необязательно заботиться о том, чтобы сумма предпоследнего значения шага равнялась бы конечному значению, например, при выполнении следующего оператора присваивания

» х =
х =
1.0000 1.2000 1.4000 1.6000 1.8000

Вектор-строка заполнится до элемента, не превосходящего определенное нами конечное значение. Шаг может быть и отрицательным:

» х =
х =
1.9000 1.7000 1.5000 1.3000 1.1000

В случае отрицательного шага для получения непустой вектор-строки начальное значение должно быть больше конечного.
Для заполнения вектор-столбца элементами, начинающимися с нуля и заканчивающимися 0.5 с шагом 0.1, следует заполнить вектор-строку, а затем использовать операцию транспонирования:

» х 28″ width=»147″ loading=lazy>

на отрезке с шагом 0.05,
Для выполнения этого задания необходимо произвести следующие действия:
1. Сформировать вектор-строку х при помощи двоеточия.
2. Вычислить значения у (х )отэлементов х .
3. Записать результат в вектор-строку y.
4. Вывести х и у.

» х = ;
» у = ехр(-х).*sin(10*x);
» х
х =
Columns 1 through 7
О 0.0500 0.1000 0.1500 0.2000 0.2500 0.3000
Columns 8 through 14
0.3500 0.4000 0.4500 0.5000 0.5500 0.6000 0.6500
Columns 15 through 21
0.7000 0.7500 0.8000 0.8500 0.9000 0.9500 1.0000
» у
У =
Columns 1 through 7
0 0.4560 0.7614 0.8586 0.7445 0.4661 0.1045
Columns 8 through 14
-0.2472 -0.5073 -0.6233 -0.5816 -0.4071 -0.1533 0.1123
Columns 15 through 21
0.3262 0.4431 0.4445 0.3413 0.1676 -0.0291 -0.2001

Вектор-строки x и y состоят из двадцати одного элемента, и не помещается на экране в одну строку, поэтому выводятся по частям. Так как х иy хранятся в двумерных массивах размерностью один на двадцать один, то выводятся по столбцам, каждый из которых состоит из одного элемента. Сначала выводятся столбцы с первого по седьмой (columns 1 through 7), затем — с восьмого по четырнадцатый (columns 8 through 14), и, наконец, — с пятнадцатого по двадцать первый (columns 15 through 21). Более наглядным и удобным является графическое представление функции.

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

2.1. Графики функций в линейном масштабе

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

определенной на отрезке . Вывод функции в виде графика состоит из следующих этапов:
1. Задание вектора значений аргумента х.
2. Вычисление вектора у значений функции y (х ).
3. Вызов команды plot для построения графика.
Команды для задания вектора х и вычисления функции лучше завершать точкой с запятой для подавления вывода в командное окно их значений (после команды plot точку с запятой ставить необязательно, т. к. она ничего не выводит в командное окно).

» х = ;
» у = ехр(-х).*sin(10*x);
» plot(x, у)

После выполнения команд на экране появляется окно Figure No. 1 с графиком функции. Окно содержит меню, панель инструментов и область графика. В дальнейшем будут описаны команды, специально предназначенные для оформления графика. Сейчас нас интересует сам принцип построения графиков и некоторые простейшие возможности визуализации функций.
Для построения графика функции в рабочей среде MatLab должны быть определены два вектора одинаковой размерности, например х и у. Соответствующий массив х содержит значения аргументов, а у — значения функции от этих аргументов. Команда plot соединяет точки с координатами (x(i), y(i)) прямыми линиями, автоматически масштабируя оси для оптимального расположения графика в окне. При построении графиков удобно расположить на экране основное окно MatLab и окно с графиком рядом так, чтобы они не перекрывались.
Построенный график функции имеет изломы. Для более точного построения графика функцию необходимо вычислить y (х ) в большем числе точек на отрезке , т.е. задать меньший шаг при вводе вектора х :

» х = ;
» у = ехр(-х).*sin(10*x);
» plot(x, у)

В результате получается график функции в виде более плавной кривой.
Сравнение нескольких функций удобно производить, отобразив их графики на одних осях. Например, построим на отрезке [-1, -0.3] графики функций
,

при помощи следующей последовательности команд:

» х = [-1:0.005:-0.3];
» f = sin(x.^-2);
» g = sin(1.2*x.^-2);
» plot(x, f, x, g)

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

» х1 = [-1:0.005:-0.3];
» f = sin(x1.^-2);
» х2 = [-1:0.005:0.3];
» g = sin(1.2*x2.^-2);
» plot(x1, f, x2, g)

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

Замечание 1

Использование plot с одним аргументом — вектором — приводит к построению «графика вектора», т.е. зависимости значений элементов вектора от их номеров. Аргументом plot может быть и матрица, в этом случае на одни координатные оси выводятся графики столбцов.
Иногда требуется сравнить поведение двух функций, значения которых сильно отличаются друг от друга. График функции с небольшими значениями практически сливается с осью абсцисс, и установить его вид не удается. В этой ситуации помогает функция plotyy, которая выводит графики в окно с двумя вертикальными осями, имеющими подходящий масштаб.
Сравните, например, две функции: и

» х = ;
» f = х.^-3;
» F = 1000*(х+0.5).^-4;
» plotyy(x, f, x, F)

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

2.2. Графики функций в логарифмических масштабах

Для построения графиков в логарифмическом и полулогарифмическом масштабах служат следующие функции:
— loglog (логарифмический масштаб по обеим осям);
— semilogx (логарифмический масштаб только по оси абсцисс);
-semilogy (логарифмический масштаб только по оси ординат).

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

» х = ;
» f = log(0.5*x);
» g = sin(log(x));
» semilogx(x, f, x ,g)

2.3. Задание свойств линий на графиках функций

Построенные графики функций должны быть максимально удобными для восприятия. Часто требуется нанести маркеры, изменить цвет линий, а при подготовке к монохромной печати — задать тип линии (сплошная, пунктирная, штрих-пунктирная и т.д.). MatLab предоставляет возможность управлять видом графиков, построенных при помощи plot, loglog, semilogx и semilogy, для чего служит дополнительный аргумент, помещаемый за каждой парой векторов. Этот аргумент заключается в апострофы и состоит из трех символов, которые определяют: цвет, тип маркера и тип линии. Используется одна, две или три позиции, в зависимости от требуемых изменений. В таблице приведены возможные значения данного аргумента с указанием результата.

Как расположить в MatLab на графике точки в местах целых значений

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

y = abs((cos(n).^sin(m-3)) + log(sqrt(2)+ 0.2*n + m^2.4) - 3 - (n+2)/(m-3.2)) 

где n = (-20:0.1:20) , а m = 16 Строится график y(n) Так как шаг 0.1, то в построенном графике мы имеем множество дробных значений. Если выполнить, к примеру, команду plot(n,y,’:B’,n,y,’SM’) , то точками обозначатся просто все значения n. Вот в том и вопрос: как сделать, чтобы отметились только целые значения?

Отслеживать
9,426 4 4 золотых знака 41 41 серебряный знак 57 57 бронзовых знаков
задан 23 мар 2014 в 9:41
11 1 1 серебряный знак 3 3 бронзовых знака

clear;clc n=(-20:0.1:20); m=16; y=@(n) abs(((cos(n)).^(sin(m-3)))+(log((sqrt(2))+(0.2*n)+(m^2.4)))-3-((n+2)/(m-3.2))); n1=round(n); plot(n,y(n),’b’,n1,y(n1),’+r’,’LineWidth’,2) grid вот верное и простое решение моей проблемы 🙂

23 мар 2014 в 12:54
простое и неверное, почему ответил в комменте к своему ответу
24 мар 2014 в 12:19

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Самое просто решение в лоб — просто посчитать функцию еще раз для n1 = -20:20 (только целых значений) и ее построить. Или выбрать только целые значения и их построить, если не ошибаюсь можно примерно так:

intN = isinteger(n); % массив булевных значений является ли n(i) целым n1 = n(intN); y1 = y(intN); 

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *