Учебное пособие 1804
.pdf
|
исходного массива |
|
|
|
|
|
max(x) |
Определение наибольшего элемента массива. В случае |
|||||
|
двумерного массива |
это |
вектор-строка, |
содержащая |
||
|
максимальные элементы каждого столбца. Для комплексных |
|||||
|
элементов определение максимума происходит |
по условию |
||||
|
max(abs(x)). Если массив содержит хотя бы один элемент |
|||||
|
типа NaN, то результатом операции тоже будет NaN |
|||||
min(x) |
Аналогична предыдущей функции, но вместо |
|||||
|
максимального возвращает минимальный элемент массива |
|||||
median(x) |
Определение срединного значения (медианы) элементов |
|||||
|
массива. |
|
|
|
|
|
mean(x) |
Определение |
среднего |
арифметического значения |
|||
|
элементов массива. Для двумерного массива mean(mean(x)) |
|||||
|
есть математическое ожидание элементов массива |
|
||||
std(x) |
Определение |
|
стандартных |
отклонений |
элементов |
|
|
массива |
|
|
|
|
|
cov(x) |
Определение |
ковариационной матрицы |
элементов |
|||
|
массива (т.е. определение дисперсии элементов массива) |
|||||
corrcoef(x) |
Определение |
коэффициентов |
корреляции |
элементов |
||
|
массива |
|
|
|
|
|
diff(x,n) |
Вычисление конечных разностей порядка n для |
|||||
|
элементов массива. В случае двумерного массива берутся |
|||||
|
разности столбцов |
|
|
|
|
|
spline(x,y,x1) |
Интерполяция функции одной переменной кубическим |
|||||
|
сплайном. x1 новый вектор аргументов функции |
|
Пример использования функции spline:
x = [ 0 1 2 3 4 5 6 7 8 9 10 ]; % задан вектор аргумента функции % задаем вектор значений функции
y = [ 0 0.1 0.22 0.35 0.58 0.76 0.95 1.24 1.01 0.87 0.98 ];
%определяем новый вектор функции, с меньшим значением шага x1 = 0 : 0.05 : 10;
%вычисляем вектор значения функции по новым точкам
[ y1] = spline(x, y, x1);
1.9.ГРАФИЧЕСКИЕ СРЕДСТВА СИСТЕМЫ MATLAB
1.9.1.Графики двумерных функций
plot |
Построение графиков отрезками прямых |
|
|
Функции одной переменной y(x) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в Декартовой системе координат. При этом строятся две оси – горизонтальная X и вертикальная Y – и задаются координаты x и y, определяющие узловые точки y(x). Эти точки соединяются друг с другом отрезками прямых линий. Поскольку MATLAB представляет собой матричную систему, совокупность точек y(x) задается векторами X и Y одинакового размера.
Синтаксис: plot(x,y) plot(y) plot(x,y,‘s‘)
plot(x1,y1,‘s1‘,x2,y2,‘s2‘,…)
plot(x,y) строит график функции y(x). Если X или Y матрица, то строятся графики по данным в матрице.
plot(y) строит график функции y(i), при этом значения берутся из вектора Y, а i представляет собой индекс соответствующего элемента. Если Y содержит комплексные элементы, то выполняется команда plot(real(Y), imag(Y)). Во всех других случаях мнимая часть игнорируется.
plot(x,y,‘s‘) строит график функции y(x) но с заданием типа линии графика в виде строковой константы, которая может принимать следующие значения:
|
Цвет линии |
|
Тип точки |
|
Тип линии |
|
|
|
|
|
|
y |
желтый |
. |
точка |
- |
сплошная |
m |
фиолетовый |
o |
окружность |
: |
двойной пунктир |
c |
голубой |
x |
крест |
-. |
штрих-пунктир |
r |
красный |
+ |
плюс |
-- |
штриховая |
g |
зеленый |
* |
звездочка |
|
|
b |
синий |
s |
квадрат |
|
|
w |
белый |
d |
ромб |
|
|
k |
черный |
v |
треугольник (вниз) |
|
|
|
|
^ |
треугольник (вверх) |
|
|
|
|
p |
пятиугольник |
|
|
|
|
h |
шестиугольник |
|
|
Таким образом, с помощью константы s, можно изменять цвет линии, представлять узловые точки различными знаками, менять тип линии графика.
Функция plot(x1,y1,‘s1‘,x2,y2,‘s2‘,…) строит на одном графике ряд линий, представленных данными вида (x,y,‘s‘).
При отсутствии указания на цвет линий и точек он выбирается автоматически одним из шести табличных цветов (исключая белый). Если линий больше шести, то выбор цветов повторяется. Для монохромных систем линии выделяются стилем.
Пример:
»%Графики трех функций со спецификацией линий каждого графика
»x = - 2*pi : 0.1*pi : 2*pi ;
»y1 = sin(x);
»y2 = sin(x).^2;
»y3 = sin(x).^3;
»plot(x,y1,‘-m‘,x,y2,‘+r‘,x,y3,‘- -ok‘)
1 |
|
|
|
|
|
|
|
|
0.8 |
|
|
|
|
|
|
|
|
0.6 |
|
|
|
|
|
|
|
|
0.4 |
|
|
|
|
|
|
|
|
0.2 |
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
-0.2 |
|
|
|
|
|
|
|
|
-0.4 |
|
|
|
|
|
|
|
|
-0.6 |
|
|
|
|
|
|
|
|
-0.8 |
|
|
|
|
|
|
|
|
-1 |
|
|
|
|
|
|
|
|
-8 |
-6 |
-4 |
-2 |
0 |
2 |
4 |
6 |
8 |
|
|
|
|
Рис. 1.2 |
|
|
|
|
loglog |
|
|
Графики в логарифмическом масштабе |
Для построения графиков функций со значениями x и y, изменяющимися в широких пределах, нередко используются логарифмические масштабы.
Для этого применяется команда loglog(…), синтаксис которой аналогичен рассмотренному для команды plot.
Пример:
»% График экспоненциальной функции в логарифмическом масштабе
»x=logspace(-1,3);
»loglog(x,exp(x)./x,'k');
»grid on
10300 |
|
|
|
|
10250 |
|
|
|
|
10200 |
|
|
|
|
10150 |
|
|
|
|
10100 |
|
|
|
|
1050 |
|
|
|
|
100 |
|
|
|
|
10-1 |
100 |
101 |
102 |
103 |
Рис. 1.3 |
|
|
|
|
semilogx, |
Графики функций в полулогарифмическом |
semilogy |
масштабе |
|
|
В некоторых случаях предпочтителен полулогарифмический масштаб графиков, когда по одной оси задается логарифмический масштаб, а по другой – линейный.
semilogx(…) – строит график функции в логарифмическом масштабе (основание 10) по оси X и линейным по оси Y.
semilogy(…) – строит график функции в логарифмическом масштабе по оси Y и линейным по оси X.
|
Синтаксис команды аналогичен синтаксису команды plot. |
hist |
Построение графика в виде гистограммы |
Классическая гистограмма характеризует число попаданий значений элементов вектора Y в М интервалов с представлением этих чисел в виде столбиковой диаграммы. Получение данных для гистограммы выполняется функцией hist, имеющей синтаксис:
N = hist(Y) – возвращает вектор числа попаданий для 10 интервалов. Если Y – матрица, то выдаются данные по числу попаданий в ее столбцы;
N = hist(Y,M) – возвращает число попаданий для элементов вектора Y с центральными отчетами, заданными элементами вектора X;
[N,X] = hist(…) – возвращает числа попаданий в интервалы и данные о центрах интервалов;
|
hist(…) – с синтаксисом аналогичным приведенному выше, строит |
|||||||||||
график гистограммы. |
|
|
|
|
|
|
|
|
||||
|
Пример: |
|
|
|
|
|
|
|
|
|
|
|
|
Построим гистограмму для 1000 случайных чисел и выведем вектор с |
|||||||||||
данными и числах их попаданий в интервалы, заданные вектором X. |
||||||||||||
» % Построение гистограммы для 1000 случайных чисел |
||||||||||||
» x=-3:0.2:3; |
|
|
|
|
|
|
|
|
|
|
||
» y=randn(1000,1); |
|
|
|
|
|
|
|
|
|
|||
» hist(y,x); |
|
|
|
|
|
|
|
|
|
|
|
|
» h=hist(y,x) |
|
|
|
|
|
|
|
|
|
|
||
h = |
|
|
|
|
|
|
|
|
|
|
|
|
Columns 1 through 12 |
|
|
|
|
|
|
|
|
||||
0 |
0 |
3 |
7 |
8 |
9 |
11 |
23 |
33 |
43 |
57 |
55 |
|
Columns 13 through 24 |
|
|
|
|
|
|
|
|
||||
70 |
62 |
83 |
87 |
93 |
68 |
70 |
65 |
41 |
35 |
27 |
21 |
|
Columns 25 through 31 |
|
|
|
|
|
|
|
|
||||
12 |
5 |
6 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
100 |
|
|
|
|
|
|
|
|
|
|
|
|
90 |
|
|
|
|
|
|
|
|
|
|
|
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
|
|
|
|
|
|
|
|
|
|
|
60 |
|
|
|
|
|
|
|
|
|
|
|
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
-4 |
-3 |
|
-2 |
|
-1 |
0 |
|
1 |
2 |
3 |
4 |
Рис. 1.4 |
|
|
|
|
|
|
|
|
|
|
|
|
stairs |
|
|
|
|
Построение лестничного графика функции |
|||||||
|
Лестничные графики представляют собой ступеньки, с огибающей, |
|||||||||||
представленной функцией y(x). Такие графики используются, например, для |
||||||||||||
отображения процессов квантования функции y(x), представленной рядом |
||||||||||||
своих отсчетов. При этом в промежутках между отсчетами значения функции |
||||||||||||
считаются постоянными и равными величине последнего отсчета. |
Синтаксис функции:
stairs(Y) – строит лестничный график по данным вектора Y;
stairs(X,Y) – строит лестничный график по данным вектора Y с координатами х переходов от ступеньки к ступеньке заданными значениями элементов вектора X (они должны идти в возрастающем порядке);
stairs(…,S) – аналогична по действию вышеописанным командам, но строит график линиями, стиль которых задается строками S (см. оператор plot).
Пример:
»% Лестничный график функции x^2
»x=0:0.25:10;
»stairs(x,x.^2);
100
90
80
70
60
50
40
30
20
10
0
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Рис. 1.5
polar |
Построение графика в полярной системе координат |
|
|
В полярной системе координат любая точка представляется как конец радиус-вектора, исходящего из начала системы координат, имеющего длину RHO и угол THETA (обычно меняется от 0 до 2 ).
Синтаксис команды:
polar(theta,rho) – строит график в полярной системе координат, представляющий собой положение конца радиус-вектора;
polar(theta,rho,S) – аналогична предыдущей команде, но позволяет задавать стиль построения аналогично оператору plot.
Пример:
» % График функции sin(5*t) в полярной системе координат
»t=0:pi/50:2*pi;
»polar(t,sin(5*t))
|
90 |
1 |
|
|
|
120 |
|
60 |
|
|
0.8 |
|
|
0.6 |
150 |
|
30 |
|
|
0.4 |
|
|
0.2 |
180 |
|
0 |
210 |
330 |
240 |
300 |
270
Рис. 1.6
compass |
Построение векторов |
|
|
Иногда желательно построение ряда радиус-векторов в их обычном виде, то есть в виде стрелок, исходящих из начала координат и имеющих угол и длину, которые определяются действительной и мнимой частями комплексных чисел, представляющих данные векторы.
Синтаксис:
compass(U,V) – сроит графики радиус-векторов с компонентами (U,V), представляющими действительную и мнимую части каждого из них;
compass(Z) – эквивалентна compass(real(Z),imag(Z));
compass(U,V,S) – аналогичны представленным выше командам, но позволяет задать спецификацию линий построения аналогично команде plot;
H=compass(…) – возвращает значения длин радиус-векторов.
Пример:
»% Построение радиус-векторов для вектора Z с комплексными
»% элементами
»Z=[-1+2i,-2-3i,2+3i,5+2i];
»compass(Z)
|
90 |
5.3852 |
|
|
|
120 |
|
60 |
|
|
4.3081 |
|
|
3.2311 |
150 |
|
30 |
|
|
2.1541 |
|
|
1.077 |
180 |
|
0 |
210 |
330 |
240 |
300 |
|
270 |
|
Рис. 1.7 |
contour |
Построение контурных графиков |
Контурные график являются попыткой отобразить на плоскости функции двух переменных вида z(x,y). Их можно представить в виде совокупности линий равного уровня, которые получаются, если трехмерная поверхность пересекается рядом плоскостей, расположенных параллельно друг другу. При этом контурный график представляет совокупность спроецированных на плоскость y(x) линий пересечения поверхности z(x,y) плоскостями.
Синтаксис:
contour(z) – строит контурный график по данным матрицы z с автоматическим диапазоном изменения x и y;
contour(x,y,z) – строит контурный график по данным матрицы z с указанием спецификаций для x и y;
contour(z,N) и contour(x,y,z,N) – дают построения аналогичные ранее описанным, с заданием N линий равного уровня (по умолчанию N = 10);
contour(z,V) и contour(x,y,z,V) – строят линии равного уровня для высот, указанных значениями элементов вектора V;
[C,H] = contour(…) – возвращает дескриптор – матрицу C и вектор столбцов H. Они используются как входные параметры для команды clabel (см. далее);
contour(…,S) – позволяет использовать перечисленные выше функции с указанием спецификации линий, аналогично команде plot.
Пример: |
|
|
|
|
» % Построение контурного графика объекта peaks |
|
|
||
» z=peaks(27); |
|
|
|
|
» contour(z,15) |
|
|
|
|
25 |
|
|
|
|
20 |
|
|
|
|
15 |
|
|
|
|
10 |
|
|
|
|
5 |
|
|
|
|
5 |
10 |
15 |
20 |
25 |
|
|
Рис. 1.8 |
|
|
comet |
|
Движение точки по плоскости |
Синтаксис: comet(Y) comet(X, Y) comet(X, Y, p)
Для отображения движения точки по траектории используется функция comet. При этом движущаяся точка напоминает ядро кометы с хвостом.
Функции comet(Y) и comet(X,Y) отображают движение ―кометы‖ по траектории, заданной вектором Y и векторами X и Y соответственно.
comet(X,Y,p) аналогична предшествующим, но позволяет задавать длину хвоста кометы как p length (Y ) . По умолчанию значение p = 0,1.
На черно-белом рисунке ―хвост кометы‖ заметить трудно, поскольку он представляет собой отрезок линии с цветом, отличающимся от цвета линии основной части графика.
1.9.2. Построение графиков 3D-поверхностей
meshgrid |
Функция создания массивов трехмерной графики |
|
|
Трехмерная поверхность обычно описывается функцией двух переменных z(x,y). Специфика построения трехмерных графиков требует не просто задания ряда значений x и y, то есть векторов x и y – она требует определения двумерных массивов для X и Y матриц.
Синтаксис:
[X,Y] = meshgrid(x,y) – преобразует область, заданную векторами x и y в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора x, а столбцы Y – копиями вектора y;
meshgrid(x) – аналогична [X,Y] = meshgrid(x,x);
[X,Y,Z] = meshgrid(x,y,z) – возвращает трехмерные массивы, используемые для вычисления функций трех переменных и построения трехмерных 3D-графиков.
plot3 |
Функция построения трехмерных графиков линиями |
|
|
Синтаксис:
plot3(x,y,z) – строит массив точек, представленных векторами x, y и z, соединяя их отрезками прямых. Команда имеет ограниченное применение, т.к. строит не поверхность , а пространственную кривую;
plot3(X,Y,Z) – строит точки с координатами X(i,:), Y(i,:) b Z(i,:) и соединяет их отрезками прямой, получая таким образом трехмерную поверхность;
plot3(X,Y,Z,S) – обеспечивает аналогичные построения, но со спецификацией линий и точек, соответствующих синтаксису команды plot.
Пример:
»x=-3:0.1:3;
»y=x;
»z=x.^2+y.^2;
»subplot(2,1,1),plot3(x,y,z),grid on
»[x,y]=meshgrid(x,y);
»z=x.^2+y.^2;
»subplot(2,1,2),plot3(x,y,z),grid on