Материал: MATLAB3

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

37

  1. Элементарная графика

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

    1. Двумерная графика

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

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

  • plot(y) – построение графика одномерного массива в зависимости от номера элемента (для двумерного массива строятся графики для столбцов);

  • plot(x, y) – построение графика функции yº=ºy(x); при двумерном х строятся графики хº=ºх(y); если оба массива двумерные, строятся зависимости для соответствующих столбцов;

  • plot(x, y, LineSpec) определяет (табл. 4.1, 4.2) стиль линий, форму маркера точек и цвет линий и маркера заданием строки LineSpec (до трех символов).

Таблица 4.1 Таблица 4.2

Стиль линии

Символ

Цвет

Символ

Цвет

Символ

Непрерывная

Желтый

y

Зеленый

g

Штриховая

– –

Фиолетовый

m

Синий

b

Двойной пунктир

:

Голубой

c

Белый

w

Штрихпунктирная

–.

Красный

r

Черный

k

Н

Рис. 4.1

апример, последовательность команд:

»X = [–pi : 0.1 : pi];

»X1 = sin(X);

»plot(X1, '^ r')

обеспечит построение графика, представленного на рис. 4.1.

По умолчанию выбирается непрерывная линия с точечным маркером и чередованием цветов с желтого по синий. Маркер может определяться символами: . + * °, а также s (квадрат), d (ромб), р (пятиугольник), h (шестиугольник), v ^ < > (стрелки).

Команда plot(x1, y1, LineSpec1, x2, y2, LineSpec2, ...) строит на одном графике несколько линий (диапазон по аргументу – объединение х1 и х2).

Рис. 4.2

Рис. 4.3

В результате выполнения команд:

»x = [–3 : 0.1 : 3];

»y = x.^2;

»x1 = x+3;

»y1= x1;

»plot(x, y, x1, y1)

будут получены графики, как на рис. 4.2.

Выполнение последовательности команд с расширенным набором аргументов:

»x = 0 : 0.3 : 6;

»y = besselj(0, x); % команда J0(x)

»x1 = 0 : 0.4 : 8;

»y1 = besselj(1, x1); % команда J1(x)

»plot(x, y, '–sk', x1, y1, '–pk', 'LineWidth', 1)

приведет к построению (рис. 4.3) двух графиков с разным оформлением, где plot(..., 'PropertyName', PropertyValue, ...) задает значения свойств графического объекта Line (толщину линий LineWidth, размер маркера MarcerSize, цвет маркера MarcerFaceColor и др.).

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

Есть возможность построить график функции по ее имени и аргументу:

  • fplot(<имя функции>, limits) строит график функции (функций) в интервале limitsº=º[xmin, xmax]. В качестве имени функции может использоваться m-файл или строка типа 'sin(x)', '[sin(x) cos(x)]', '[sin(x), myfun1(x), myfun2(x)]'. Можно установить размеры графика по оси значений функции limitsº=º[xmin, xmax, ymin, ymax];

  • fplot(<имя функции>, limits, eps) строит график c относительной погрешностью ерs (по умолчанию 0.002) и максимальным числом шагов (1/eps) + 1. Эту конструкцию можно дополнить четвертым параметром n (n + 1 – минимальное число точек) и параметром LineSpec.

Рис. 4.4

С помощью команды:

»fplot('[besselj(0, x) besselj(1, x) 0]', [0 10], [ ], 20)

обеспечивается построение графиков двух функций Бесселя (рис. 4.4) для указанного диапазона аргумента [0 10].

Команда ezplot('f(x)') строит график f (x), заданной символьным выражением (например, ezplot('x^2–2*x+1')), на интервале [–2 2] с выводом выражения в качестве заголовка графика. Команды ezplot('f(x)', limits, fig) и ezplot('f(x)', limits) строят график f (x) на указанном интервале в заданном окне.

График в полярных координатах определяется командами polar(f, r) и polar(f, r, LineSpec), где f – массив значений угла, r – соответствующие значения радиуса. Примеры использования полярной системы координат представлены на рис. 4.5.

»f = 0 : 0.02 : 2*pi

»r = sin(2.*f).*cos(2.*f);

»hp = polar(f, r), hold on

»set(hp, 'LineWidth', 4)

»f = 0 : 0.01 : 15*pi

»r = exp(–0.1*f);

»hp = polar(f, r), hold on

»set(hp, 'LineWidth', 4)

Рис. 4.5

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

График в полулогарифмическом масштабе задается командами semilogx и semilogy с тем же набором параметров, что и plot (проводится масштабирование логарифмированием по одной из координат).

Г

Рис. 4.6

рафик с двумя осями ординат (одна отображается слева, другая справа) реализуется функцией plotyy(x1, y1, x2, y2) и той же функцией с добавлением параметров масштабирования 'f1' или 'f1', 'f2', в роли которых могут выступать semilogx, semilogx, loglog, plot.

Результат, представленный на рис. 4.6, получен с помощью команд:

»x = 0 : 0.01 : 12*pi;

»plotyy(x, sin(x), x, 10*exp(–0.1.*x))

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

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

Рис. 4.7

Команда plot3(x, y, z) в тех же вариациях, что и plot, предполагает задание одномерных и двумерных массивов – строятся точки с координатами x(i,:), y(i,:), z(i,:) для каждого столбца и соединяются прямыми линиями. Применив команды:

»t = 0.01 : 0.01 : 20*pi;

»plot3(cos(t), sin(t), t.^3)

получим «пружину» (рис. 4.7).

Рис. 4.8

Рис. 4.9

При использовании [x, y] = meshgrid(...) можно построить сечения (рис. 4.8 и 4.9) при выполнении последовательности команд:

»xord = –1 : .05 : 1;

»yord = –1 : .05 : 1;

»[x, y] = meshgrid(xord, yord);

»z1 = x .* sin(x.^2 – y.^2);

»z2 = y .* cos(x.^2 + y.^2);

»plot3(x, y, z1), grid on; % рис. 4.8

»mesh(xord, yord, z2) % рис. 4.9

Команды mesh(x, y, z, c), mesh(z, c), mesh(z) определяют задание сетчатой поверхности (массив c определяет цвета узлов поверхности; если x, у не указаны, то x = 1: n, y = 1: m, где [m, n] = size(z).

Аналогичная команда meshс в дополнение к поверхности строит проекции линий уровня, а meshz делает срез поверхности до нулевого уровня (своеобразный пьедестал). Результаты их применения показаны на рис. 4.10.

»meshc(xord, yord, z1)

»meshz(x, y, z2)

Рис. 4.10

Команды surf(x, y, z, c), surf(z, c), surf(z) определяют задание сплошной поверхности, отличаясь от mesh системой окраски; команда surfс(...) задает проекции линий уровня. Примеры их использования приведены на рис. 4.11.

»surf(z)

»shading interp

Рис. 4.11

Реализация трехмерной графики может сопровождаться множеством вспомогательных команд, например:

  • hidden on / off включает или выключает режим удаления невидимых линий (по умолчанию on);

  • shading faceted / flat / interp устанавливает затенение поверхностей (по умолчанию faceted дает равномерную окраску ячеек с черными гранями, flat – цветами узлов сетки, interp – интерполяцией цветов.