- •Раздел 1 Основные понятия среды matlab
- •1. Начало работы в среде matlab
- •1.1. Характеристика среды matlab
- •1.2. Общие положения и правила работы в среде matlab
- •1.3. Работа в командном окне
- •1.4. Правила и особенности ввода математических выражений
- •1.5. Сохранение содержимого рабочего окна
- •2.2. Типы данных. Описание основных типов
- •2 Системные переменные и типы данных
- •2.1 Системные переменные
- •2.3. Комплексные числа
- •2.4. Символьные переменные
- •2.5. Массивы
- •2.5.1 Задание массивов
- •2.5.2 Доступ к элементам массивов
- •2.5.3 Функции обработки массивов
- •2.6 Тип данных структура (struct)
- •2.6.1 Задание структур
- •2.6.2 Функции обработки структур
- •2.7 Тип данных ячейка (сell)
- •2.8 Функции определения типов
- •2.9 Функции для работы со значениями даты и времени
- •2.10 Функции преобразования типов
- •3. Основные операции и математические функции matlab
- •3.1 Основные арифметические операции
- •3.2 Основные элементарные функции
- •Help имя_функции,
- •3.3 Операции отношения и логические операции
- •4 Операторы среды matlab
- •4.1 Условный оператор if
- •4.2 Условный оператор switch
- •4.3 Реализация циклических процессов
- •4.3.1 Оператор цикла while
- •4.3.2 Оператор цикла for
- •Pause – останавливает выполнение программы до момента нажатия любой клавиши на клавиатуре; pause(n) – останавливает выполнение программы на n секунд;
- •Примеры.
- •Как и в случае сценариев, к подпрограмме функции можно обратиться по имени, более того функции могут быть компонентами математических выражений и операндов, а также параметрами других функций.
- •5.4 Создание подпрограмм с переменным списком входных и выходных параметров
- •5.5 Локальные и глобальные переменные
- •5.6 Созданий функций пользователя и указателей на функции. Функции как аргументы функций.
- •5.8 Сообщения об ошибках
- •6 Ввод данных и работа с файлами
- •6.1 Использование рабочей области Workspace
- •6.2 Чтение и запись неформатированных файлов
- •6. 3 Работа с текстовыми и бинарными файлами
- •6.3.1 Команды открытия и закрытия файлов
- •6.3.2 Команды чтения и записи fread и fwrite
- •6.4 Операции над форматированными файлами
2.5.2 Доступ к элементам массивов
Для доступа к элементам массива используются круглые скобки – (номер элемента).
Синтаксис.
name(n) – выделяет элемент вектора с;
name(n,m) – выделяет элемент матрицы,
где name – имя массива, n, m – номер элемента (в матрице: n – номер, строки m – номер столбца).
Также возможны операции выделения указанной части матрицы с использованием символа “:”. Чтобы вырезать часть матрицы М, можно использовать последовательное выполнение следующих команд:
>> A = M(n:k,:); % вырезание по строкам
>> A=A(:,m:l); % вырезание по столбцам
где n - нижняя граница строк; k - верхняя граница строк;
m – нижняя граница столбцов; l – верхняя граница столбцов.
Примеры.
a(1) – выделение первого элемента вектора a;
b(2,1) – выделение элемента матрицы b, стоящего во второй строке первого столбца.
3. >> A=[ 1 2 3;4 5 6;7 8 9]; % задание матрицы А
B1 = A(:,1); % B1 = [1; 4; 7]; – выделение первого столбца;
B2 = A(2,:); % B2 = [1 2 3] – выделение первой строки
B3 = A(1:2,2:3); % B3 = [2 3; 5 6] – выделение первых двух строк и 2-го и 3-го столбцов матрицы А.
Переписать матрицу в единый вектор-столбец можно следующим образом: V=A(:).
4. >> b=[1 2;3 4];
>>V=b(:)
V = 1
3
2
4
Для удаления отдельных столбцов и строк матрицы используются пустые квадратные скобки [ ].
5. Зададим матрицу А.
>> А=[1 2 3; 4 5 6; 7 8 9]
А= |
1 |
2 |
3 |
|
4 |
5 |
6 |
|
|
7 |
8 |
9 |
|
Удалим второй столбец используя оператор : (двоеточие):
>> А(:.2)=[ ]
А = 1 3
4 6
7 9
5.2 Используя оператор: (двоеточие), удалим вторую строку:
>> А(2,:)=[ ]
А = 1 3
7 9
2.5.3 Функции обработки массивов
Для работы с массивами предусмотрены специальные функции, которые позволяют быстро определять их размерность и выполнять преобразования (таблица 1.8).
Таблица 1.8. Функции преобразования массивов
|
|
|
возвращает одно значение – количество элементов массива |
size( |
возвращает два числа – размерность матрицы |
fliplr( |
переставляет столбцы матрицы в обратном порядке (первый становится последним и т. д.) |
flipud( |
переставляет строки матрицы в обратном порядке (первая становится последней и т. д.) |
rot90( |
вращает матрицу на 90° против часовой стрелки |
reshape(A,n,m) |
образует матрицу размерности nхm путем считывания матрицы А по столбцам с последующим их размещением по n строкам с m столбцами |
tril(A) |
образует матрицу, состоящую из нижней треугольной части матрицы А |
triu(A) |
образует матрицу, состоящую из верхней треугольной части матрицы А |
Продолжение таблицы 1.8
Функция |
Назначение |
diag(x[,n]) |
формирует диагональную матрицу или извлекает диагональ. Если x – вектор, то формируется квадратная матрица с главной диагональю x. Для перестановки диагонали на задается необязательный параметр n – номер диагонали, при этом отсчет ведется от главной диагонали (главная диагональ имеет номер 1). Если x – матрица, то создается вектор столбец из элементов главной диагонали. Если задать параметр n, то формируется вектор из заданной диагонали. |
A' |
символ " ' " (апостроф) определяет операцию транспонирования матрицы А или вектора |
inv(A) |
возвращает матрицу, обратную квадратной матрице А |
Примеры.
>> a = 5; A = [1 2 3];B = [1 2 3; 4 5 6];
>> size(a), size(A), size(B) % определение размера вектора a, матриц A, B
ans = 1 1
ans = 1 3
ans = 2 3
>> A=[1 2;3 4]; % задание матрицы 2х2
>> N = length(A); % определение числа элементов массива а.
N = 4
3. |
A |
1 |
2 |
% вывод исходной матрицы А |
|
|
3 |
4 |
|
>> fliplr(A) % перестановка столбцов
ans = 2 1
3
4. |
>>A' ans = |
1 |
3 |
% вывод транспонированной матрицы А |
|
|
2 |
4 |
|
>> triu(A) % выделение верхней треугольной матрицы
ans = 1 2
4
>> tril(A) % выделение нижней треугольной матрицы
ans = 1 0
3 4
>> inv(A) % вычисление обратной матрицы
ans = -2.0000 1.0000
1.5000 -0.5000
>> B = [1 2 3; 4 5 6]; % задание матрицы В
>> flipud(B) % перестановка строк
ans = 4 5 6
1 2 3
>> A=[1 2 3;4 5 6;7 8 9];
>> rot90(A) % поворот матрицы на 90º против часовой стрелки
ans = 3 6 9
2 5 8
1 4 7
>> A=[1 2 3;4 5 6;7 8 9];
>> reshape(A,1,9) % формирование из элементов матрицы А вектора
ans = 1 4 7 2 5 8 3 6 9
>> diag(A,-1) % формирование вектора-столбца из элементов,
лежащих под главной диагональю
ans = 4
8
Для определения характеристик массивов (например, нормы, определителя) используются специальные алгоритмы, которые реализованы в среде MATLAB и представлены специальными функциями, которые приведены в таблице 1.9.
Таблица 1.9. Функции определения характеристик массивов
Функция |
Назначение |
norm(A,n) |
возвращает норму матрицы А, n – тип нормы: n=1 – max значение суммы абсолютных значений элементов по столбцам; n=2 – максимальное сингулярное число А; n=inf – max значение суммы абсолютных значений элементов матрицы по строкам;n='fro' – норма Фробениуса: norm(A, 'fro') = sqrt(sum(diag(A'A))). По умолчанию вычисляется норма 2. |
cond(X[,p]) |
возвращает число обусловленности матрицы, необязательный параметр p определяет тип нормы: не задан или р=2 – вторая норма (отношении самого большого сингулярного числа X к самому малому). р=1 – первая норма; p= 'fro' – норме Фробениуса; р='inf' – норма неопределенности. Если cond(X), близко к 1, то матрица хорошо обусловлена. |
det(X) |
возвращает определитель квадратной матрицы X. Если X целые значения, то результат – тоже целое число. Использование det(X)=0 как теста на вырожденность действительно только для матрицы малого порядка с целыми элементами. |
rank(А,[ tol]) |
возвращает ранг матрицы или количество сингулярных чисел, которые превышают заданный порог tol |
orth(A) |
возвращает ортонормированный базис матрицы А |
Продолжение таблицы 1.9
Функция |
Назначение |
[D,B] = balance(A)
В=balance(A) |
возвращает диагональную матрицу D с элементами являющимеся степенями основания 2, и масштабированную матрицу В, что B=D\A*D, а норма каждого ряда масштабированной матрицы приближается к норме столбца с тем же номером; возвращает масштабированную матрицу В |
eig(A) |
возвращает вектор собственных значений квадратной полной или симметрической разреженной матрицы А обычно после автоматического масштабирования |
min(x) |
если х – вектор, то возвращает минимальный элемент вектора. Если х – матрица, то возвращает вектор, состоящий из минимальных элементов столбцов матрицы |
max(x) |
если х – вектор, то возвращает максимальный элемент вектора. Если х – матрица, то возвращает вектор, из максимальных элементов столбцов матрицы |
sum(А) |
возвращает вектор, состоящий из сумм элементов матрицы по столбцам |
Примеры.
>> A=[1 2 3;4 5 6;7 8 9]; % определение матрицы
>> sum (А) % сумма по столбцам
ans = 12 15 18
>> sum(A') %сума по строкам
ans = 6 15 24
>> sum(diag(A)) % сумма элементов диагонали матрицы А
ans = 15
>> max(A) % формирует вектор максимальных элементов матрицы по столбцам
ans = 7 8 9
max(max(A)) % нахождение максимального элемента матрицы А
ans = 9
Двойное использование функции max заключается в том, что первый раз формируется вектор максимальных элементов по столбцам матрицы A, а вторая команда находит максимальное значение вектора-столбца.
>> eig(A) % вычисление собственных чисел матрицы А
ans = 16.1168
-1.1168
-0.0000
>> [V,D]=eig(A)
V = -0.2320 -0.7858 0.4082 – возвращают компоненты собственного
-0.5253 -0.0868 -0.8165 разложения A=VD/V
-0.8187 0.6123 0.4082
D = 16.1168 0 0 % возвращает вещественную матрицу
0 -1.1168 0 Жордана
0 0 -0.0000
>> rank(A) % определение ранга матрицы А
ans = 2
>> det(A) % вычисление определителя матрицы А
ans = 0
>> B=[1 2 3;4 -1 6;7 3 9];
>> cond(B) % определение меры обусловленности матрицы А
ans = 13.3035
>> norm(B) % вычисление нормы 2 матрицы В
ans = 14.0296
>> norm(B,1) % вычисление нормы 1 матрицы В
ans = 18
