fliplr
и
rot90
позволяют отражать и поворачивать векторы и
матрицы. Покажем их работу на примере.
Пример 37. Функции fliplr и rot90
clc, clear
d1=[1 2 3],d2=[11 12 13]
rot90(d1)
fliplr(d2)
a1=[10 2 3; 40 5 6; 70 8 9]
fliplr(a1)
a2=[10 20 30; 4 5 6; 7 8 9]
rot90(a2)
С помощью функции
reshape
можно изменить форму – размерность
массива, количество элементов массива при этом остается неизменным.
Пример 38. Функция reshape
clc, clear
d=1:12
size(d)
d=reshape(d,3,4)
size(d)
d=reshape(d,4,[])
size(d)
25
d=reshape(d,12,1)
size(d)
Функция
repmat
позволяет задавать новую матрицу с помощью реплициро-
вания (повторения) исходной матрицы в соответствии с заданной размерно-
стью.
Пример 39. Функция repmat
d=1:3
d1=repmat(d,2), d2=repmat(d,2,3)
С помощью функции
blkdiag
выполняют построение блочно-диагональных
матриц, а с помощью функции spy можно отобразить структуру матрицы, её
ненулевые элементы.
Пример 40. Функция blkdiag
clc, clear
m1=[1 2; 3 4], m2=[10 20 30; 40 50 60],
m3=[2 4 6; 1 3 7; 5 4 3]
% Формирование блочно-диагональной матрицы
m=blkdiag(m1,m2,m3)
% Визуализация структуры матрицы
spy(m)
В некоторых примерах, приведенных выше, использовалась функция
size
,
возвращающая количество строк и количество столбцов объекта. Функция
numel
возвращает общее количество элементов массива, а функция
length
– количество элементов вектора или строки матрицы.
Пример 41. Функции size, numel, length
clc, clear
v1=[1; 2; 3; 4], v2=[1 2 3 4]
size(v1), size(v2)
length(v1),length(v2)
numel(v1),numel(v2)
M=[1 2 3; 4 5 6]
size(M), length(M), numel(M)
26
Логические операции с матрицами
Для матриц определены логические операции:
Операция
Знак
операции
Равно
==
Не равно
~=
Больше
>
Больше или равно
>=
Меньше
<
Меньше или равно
<=
Логическое И
&
Логическое ИЛИ
|
Пример 42. Подсчет количества элементов матрицы, равных двум
clc, clear
A=[1 2; 3 2]
sum(sum(A==2))
Пример 43. Подсчет количества одинаковых элементов в матрицах A и B и
стоящих на одинаковых местах
clc, clear
A=[1 2; 3 2]
B=[1 0; 3 5]
sum(sum(A==B))
27
Задачи для самостоятельного решения
Вариант 1
1. Задана матрица A=randi(*-5 5],3,3)
a)
Определить количество ненулевых элементов.
b)
Найти A+A', показать, что полученная матрица симметричная.
c)
Определить количество элементов, равных двум.
d)
Переставить верхнюю и нижнюю строки матрицы.
e)
Найти сумму элементов главной диагонали матрицы.
2. Заданы 5 матриц различного порядка. Создать блочно-диагональную
матрицу, состоящую из заданных матриц-блоков. Отобразить структуру
полученной матрицы с помощью spy.
3. Заданы матрицы одинаковой размерности:
A= randi([-5 5],3,3), B= randi([-5 5],3,3)
a)
Определить количество позиций, на которых стоят ненулевые
элементы в обеих матрицах.
b)
Определить количество позиций, на которых, хотя бы в одной из
матриц стоят ненулевые элементы.
4. Задан вектор x=1:9. Получить из него матрицу 3-го порядка, в каждой
строке которой записаны последовательно элементы вектора.
5. Задан вектор x=1:4. Создать матрицу 4-го порядка, элементы каждой
строки (столбца) матрицы являются элементами вектора.
6. Задано целое число n и целочисленный вектор. Повторить каждый
элемент вектора n раз.
7. Задан вектор, в котором есть нулевые элементы. Каждый нулевой элемент
заменить средним арифметическим элементов вектора.
28
Вариант 2
1. Задана матрица A=randi(*-5 5],3,3)
a)
Определить количество нулевых элементов.
b)
Проверить – является ли матрица симметричной.
c)
Определить количество элементов, неравных двум.
d)
Переставить правый и левый столбцы матрицы.
e)
Найти сумму элементов побочной диагонали матрицы.
2. Заданы 5 матриц различного порядка. Создать блочно-диагональную
матрицу из заданных матриц-блоков, блоки расположить вдоль побочной
диагонали. Отобразить структуру полученной матрицы с помощью spy.
3. Заданы матрицы одинаковой размерности:
A= randi([-5 5],3,3), B= randi([-5 5],3,3)
a)
Определить количество позиций, на которых стоят элементы, равные
двум в обеих матрицах.
b)
Определить количество позиций, на которых, хотя бы в одной из
матриц стоят элементы, равные двум.
4. Задан вектор x=1:9. Получить из него матрицу 3-го порядка, в каждом
столбце которого записаны последовательно элементы вектора.
5. Задан вектор x=1:4. Создать матрицу 4-го порядка, на диагоналях которой
стояли бы элементы вектора. Если диагональ короче size(x), то заполнение
начинать 1-го элемента вектора x.
6. Задано целое число n и целочисленный вектор. Повторить каждый
элемент вектора n раз.
7. Задан вектор, в котором есть нулевые элементы. Каждый нулевой элемент
заменить максимальным среди элементов вектора.
29
Вариант 3
1. Задана матрица A=randi(*-5 5],3,3)
a)
Определить количество отрицательных элементов.
b)
Проверить – является ли матрица кососимметричной.
c)
Определить количество элементов, равных минус единице.
d)
Переставить местами главную и побочную диагонали матрицы.
e)
Найти сумму элементов, стоящих выше главной диагонали.
2. Заданы 5 матриц различного порядка. Создать матрицу из заданных
матриц-блоков, блоки расположить в углах матрицы. Отобразить структуру
полученной матрицы с помощью spy.
3. Заданы матрицы одинаковой размерности:
A= randi([-5 5],3,3), B= randi([-5 5],3,3)
a)
Определить количество позиций, на которых стоят элементы, равные
максимальному значению матрицы, в обеих матрицах.
b)
Определить количество позиций, на которых, хотя бы в одной из
матриц стоят максимальные элементы.
4. Задан вектор x=1:16. Получить из него матрицу 4-го порядка, в каждом
столбце которого записаны последовательно элементы вектора.
5. Задан вектор x=1:3. Создать матрицу 3-го порядка, на диагоналях которой
стояли бы элементы вектора. Если диагональ короче size(x), то заполнение
начинать 1-го элемента вектора x.
6. Задано целое число n и целочисленный вектор. Повторить каждый
элемент вектора n раз.
7. Задан вектор, в котором есть ненулевые элементы. Каждый ненулевой
элемент заменить минимальным среди элементов вектора.
30
Вариант 4
1. Задана матрица A=randi(*-5 5],3,3)
a)
Определить количество элементов, равных 3.
b)
Проверить – является ли матрица положительноопрделенной.
c)
Определить количество неотрицательных элементов.
d)
Переставить угловые элементы матрицы.
e)
Найти сумму элементов, стоящих ниже главной диагонали.
2. Заданы 5 матриц различного порядка. Создать матрицу из заданных
матриц-блоков, блоки расположить вдоль 1-й строки матрицы. Отобразить
структуру полученной матрицы с помощью spy.
3. Заданы матрицы одинаковой размерности:
A= randi([-5 5],3,3), B= randi([-5 5],3,3)
a)
Определить количество позиций, на которых стоят элементы, равные
максимальному отрицательному элементу матрицы, в обеих матрицах.
b)
Определить количество позиций, на которых, хотя бы в одной из
матриц стоят максимальные отрицательные элементы.
4. Задан вектор x=1:16. Получить из него матрицу 4-го порядка, в каждой
строке которой записаны последовательно элементы вектора.
5. Задан вектор x=1:3. Создать матрицу 3-го порядка, на диагоналях которой
стояли бы элементы вектора. Если диагональ короче size(x), то заполнение
начинать 1-го элемента вектора x.
6. Задано целое число n и целочисленный вектор. Повторить каждый
элемент вектора n раз.
7. Задан вектор, в котором есть ненулевые элементы. Каждый ненулевой
элемент заменить средним значение среди элементов вектора.
31
Графика в MatLab
Система MATLAB предоставляет огромное количество графических
средств. К ним относятся команды построения простых графиков функций,
комбинированные и презентационные графики, элементы анимации и сред-
ства проектирования графического пользовательского интерфейса (GUI).
Построение графиков функций
Рассмотрим на примерах способы построения графиков в ML. Если
заданы два вектора одинакового размера, хранящие координаты функции,
то построить график функции можно с помощью команды
plot
.
Пример 1. Построение графика функции
% задание вектора x
x = [0:0.005:5];
% расчет значений функции
y = exp(-x).*sin(10*x);
% построение графика функции
plot(x, y)
Графическое окно пакета MatLab
32
После выполнения скрипта из примера #1 на экране возникнет графическое
окно, выполняя команды меню этого графического окна File→Save as,
File
Export Setup, можно сохранить построенный график в файл MatLab с
расширением fig, либо экспортировать в графические форматы - png, eps, gif.
Файл с расширением fig можно открыть в MatLab. Результатом открытия
файла будет графическое окно.
Несколько графиков в одном графическом окне
Для того, чтобы построить еще один график в этом же графическом
окне, то можно действовать двумя путями – воспользоваться командой hold
on, либо добавить еще два аргумента в команду plot. С помощью функции
delete производят удаление графика.
Пример 2. Два графика функции в одних осях с помощью hold on
x = [0:0.005:5];
y1 = exp(-x).*sin(10*x);
y2 = exp(-x).*cos(10*x);
% построение первого графика функции
plot(x, y1)
% продолжать построение в этом же окне
hold on
% построение второго графика функции
plot(x, y2)
Пример 3. Два графика функции в одних осях с помощью plot
x = [0:0.005:5];
y1 = exp(-x).*sin(10*x);
y2 = exp(-x).*cos(10*x);
% построение сразу двух графиков функций
plot(x, y1, x, y2)
33
Установка параметров графиков
Задать цвет и тип линии для графиков можно несколькими способа-
ми. Рассмотрим один из этих способов на примере.
Пример 4. Задание цвета и типа линии для графика
x = [0:0.005:5];
y = exp(-x).*sin(10*x);
plot(x, y,
'r:'
)
Обозначения для типа линий, цветов и маркеров приведены в таблице ниже.
Цвет
Y
Желтый
M
Розовый
C
Голубой
R
Красный
G
Зеленый
B
Синий
W
Белый
K
Черный
Линия
Достарыңызбен бөлісу: |