print -depsc2 magicsquare.eps




На жесткий диск картинка по умолчанию сохраняется в файле с расширением .fig в специальном формате MATLAB (команда меню File-Save окнас графикой ). Однако с помощью команды File-SaveAs можно экспортировать её в какой-нибудь другой популярный графический формат (.bmp,.jpg,.tif и т.д.). Кроме того, картинку можно переносить в другое приложение через буфер обмена (команда меню Edit-Copy Figure).

 

Практикум 1

1. Одним оператором, наиболее компактно, задать следующую матрицу

a)

A =

1 1 1 1 1 0 0 0 0

1 1 1 1 1 0 0 0 0

1 1 1 1 1 0 0 0 0

1 1 1 1 1 0 0 0 0

1 1 1 1 1 0 0 0 0

0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 1 0 0

0 0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0 1

б)

B =

-2 0 0 0 0 6 6 6 6

0 -1 0 0 0 6 6 6 6

0 0 0 0 0 6 6 6 6

0 0 0 1 0 6 6 6 6

0 0 0 0 2 6 6 6 6

5 5 5 5 5 2 0 0 0

5 5 5 5 5 0 2 0 0

5 5 5 5 5 0 0 2 0

5 5 5 5 5 0 0 0 2

 

2. Отработать пример

Автоматическое чередование цветов.

x=linspace(0,1,20); k=.1:.1:.8; y=k'*x; plot(x,y)

Здесь определяется вектор-строка x=0:20, затем вектор-строка k из 8 угловых коэффициентов будущих прямых, далее получается матрица y=k'*x как произведение вектора-столбца k' на вектор-строку x. Строки этой матрицы состоят из точек соответствующих прямолинейных отрезков. Наконец, строятся графики этих отрезков как функций от x – первая нижняя линия (она желтая) соответствует k=.1, последняя, тоже желтая, – для k=.8. Мы видим, что цвета, которых всего 7, чередуются циклически.

Вызовем строку 1 и отредактируем в ней команду plot:

x=linspace(0,1,20); k=.1:.1:.8; y=k'*x; plot(x,y,'g.')

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

Верните прежнюю картинку. Теперь войдите в меню Insert - Legend и создайте подписи к прямым, соответствующие их угловому коэффициенту. Из меню Tools - EditPlot добавьте к разным прямым разные маркеры. Оттуда же поменяйте вручную цвет и толщину некоторых прямых.

 

3. Работа с гистограммами.

Гистограмма является специальным видом столбиковой диаграммы. При построении гистограмы (т.е. графического изображения распределения некоторой величины) необходимо задавать определенное число «бинов» (англ. beans) (иногда говорят: каналов гистограммы, интервалов), определяя тем самым, сколько данных попадет в каждый бин, и графически изображать это в виде столбиковой или ступенчатой диаграммы. В MATLAB существует функция hist, которая при обращении к ней в виде hist(y) вычисляет и рисует гистограмму (столбиковой диаграммой) с 10 бинами(интервалами), равномерно распределенными между ymax и ymin. Кроме того, функция hist(y) может иметь второй аргумент. Если этот аргумент - целое число, то это число определяет число бинов. Если второй аргумент - вектор, то этот вектор определяет центры используемых бинов. В этом случае центры бинов должны быть равноотстоящими, а координаты этих центров должны быть расположены в возрастающем порядке. При нарушении любого из этих условий результат становится непредсказуемым.

Можно блокировать вывод на экран гистограммы, присвоив результат выполнения функции hist(y) двум выходным аргументам. При обращении вида [n,x]=hist(y) или [n,x]=hist(y,num_of_bins) или [n,x] = hist(y,bin_centers) вычисляются два вектора. Вектор n содержит число попаданий величины y в каждый из бинов, центры которых находятся в векторе x. Такое использование функции hist позволяет использовать для отрисовки гистограммы не столбиковую диаграмму (функцию bar), а, например, ступенчатую кривую (функцию stairs).

 

Отработать пример

% Примерпостороениягистограммыспомощью STAIRS %

y=randn(100,1); % Генерацияслучайныхчисел

dx=0.5; % Ширинабинов

x=-2.5:dx:2.5; % Центрыбинов

[ny,xh]=hist(y,x); % Вычислениепараметровгистограммы

xh=xh-dx/2; % Сдвигкоординатпооси x наполовинушириныбина

[xl,yl]=stairs(xh,ny); % Вычислениекоординатломаной

hl=line(xl,yl); % Созданиедескриптораломанойлиниииее отрисовка

 

4. Изображение функций.

Функция fplot предоставляет альтернативную возможность изображения функций по сравнению с вычислением вектора y по x и последующим изображением этой кривой с помощью функции plot. Эта функция бывает особенно полезной, когда кривая имеет несколько разных скоростей изменения и заранее не ясно, в скольких и каких точках необходимо вычислять и выводить кривую. Этой функции необходимо передавать строку, описывающую требуемую функцию в виде f(x). Строка, описывающая f(x), может содержать любые допустимые в MATLAB операции и/или функции. Функция f(x) должна возвращать вектор той же размерности, что и x, или матрицу, каждый столбец которой имеет столько же элементов, сколько и x.

Например, для того чтобы нарисовать кривую y = sin(x)cos(2x) в диапазоне x от 0 до 5π, необходимо вызвать функцию fplot ('sin(x).*cos(2*x)', [0 5*pi]) (Использование’.*’означаетпоэлементноеумножение). Функция fplot имеет еще два дополнительных (необязательных) аргумента. Один из них - это строка, описывающая тип и цвет линии (аналогично функции plot), а вторая - точность. По умолчанию точность равна 2·10−3, и она определяет, на сколько точек делить интервал, чтобы погрешность от линейной интерполяции не превосходила этой заданной точности. Чем меньше точность, тем дольше вам придется ждать вывода графика на экран. При необходимости использовать эту функцию только для вычисления координат рисуемой линии (например, при использовании ее в анимации) используется обращение в виде [Xp,Yp]= fplot(...)]. В этом случае кривая не рисуется, а соответствующие координаты заносятся в массивы Xp и Yp соответственно.

Отработать пример с функцией sin(x)cos(2x). Придумать аналогичный свой.

 

5. C помощью функции plot3, задавая параметрически координаты x, y и z, вывести пространственную спираль, подобную приведенной ниже.

 

6. Построение изолиний.

Построим изолинии функцииsin(x)*cos(y+pi/2).

 

% Вычислениеравномернойпо x и y сетки

[x,y]=meshgrid(linspace(0,2*pi,30),linspace(0,pi,30));

% Расчетзначенийфункциивузлахсетки

z=sin(x).*cos(y+pi/2);

% Вследующейстрокестроятсяизолиниисозначениямивинтервалеот -1 до 1

% сшагом 0.1, исключаязначение 0

contour(x,y,z,[-1:0.1:-0.1, 0.1:0.1:1]);

xlabel('x');

Если нужно отобразить значения функции у изолиний, то нужно воспользоваться функцией clabel. Необходимо вместо обращения к функции contour вставить следующиестроки

c=contour(x,y,z,[-1:0.1:-0.1 0.1:0.1:1]);

clabel(c);

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

c=contour(x,y,z,[-1:0.1:-0.1 0.1:0.1:1]);

clabel(c,[-1:.2:1]);

В этом случае будут помечены только те линии, значения которых определены вторым аргументом функции clabel. Если же вы хотите расставить значения на изолиниях вручную, то второе обращение к функции clabel необходимо видоизменить на clabel(c, 'manual'). После вывода рисунка значения не будут проставлены, но появится крест вместо обычного указателя мыши. Щелкните левой кнопкой мыши около той изолинии, значение которой вы хотите вывести, и в том месте, где вам это представляется удобным. Когда вы пометите нужное вам количество изолиний, нажмите клавишу Enter.

 

При этом число линий уровня в команде contour(x,y,z,V) равно length(V). Если вам необходимо нарисовать одну изолинию с определенным значением функции, то вектор, содержащий уровни, должен иметь два одинаковых элемента, равных этому уровню: contour(X,Y,Z,[v v]).

 

7. Неявные функции. (Золотыхстр.46)(подробнее этот пример рассмотрен через одно занятие)

Этот способ применения команды contour позволяет, например, нарисовать одну линию уровня при заданном ска­лярном значении v. Следовательно, мы имеем возможность строить графики неявных функций. Рассмотримкривую

 

f(x, y) = x3y- 2xy2 + y – 0.2 = 0, x, y Є [0; 1].

 

 

h =.02; x = 0:h:1; [X,Y]=meshgrid(x);

f = X.^3.*Y - 2*X.*Y.^2 +Y-.2;

v = [0,0]; contour(x, x, f, v), grid

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: