2. Загрузка матриц из файла
Команда load считывает двоичные файлы, содержащие матрицы созданные в MATLAB ранее, либо текстовые файлы, содержащие текстовые данные. Текстовые файлы должны быть сформированы в виде прямоугольной таблицы чисел, отделенных пробелами или символами табуляции, с равным числом элементов в каждой строке.
Команда save служит для сохранения значений имеющихся переменных в двоичный файл. Например, вызов
>> save(‘file1.mat’, A, B)
сохранит значения переменных A и B в файл с названием ‘file1.mat’. Вызов команды save без названия переменных, например save(‘file2.mat’), сохраняет в файл все имеющиеся переменные.
Возможен вызов команд save и load без указания расширения файла. В этом случае MATLAB автоматически добавляет расширение mat.
Упражнение 2.
Создайте в любом редакторе текстовый файл содержащий строки:
2 4 6 8
-1 3 0 4
2 -3 -5 6
Сохраните созданный файл с именем matrix1.dat.
Создайте матрицу S c помощью команды
>> S = load(‘matrix1.dat’)
Сохраните матрицу S в файл S.mat.
Сохраните все имеющиеся переменные в файл all.mat.
3. Индексация элементов матрицы
Для доступа к отдельным элементам матриц указываются их индексы. Например, A(1,3) – элемент матрицы А, стоящий в 1-й строке и 3-м столбце; В(2) (В(1,2)) – второй элемент вектора-строки В.
Также для доступа к элементам матрицы можно использовать линейную индексацию с одним индексом. В этом случае сначала нумеруются элементы 1-го столбца, затем по порядку 2-го и так далее. Например, пусть матрица A имеет размер 3 x 4. Тогда, элемент A(2) – это элемент матрицы, стоящий во 2-й строке и 1-м столбце; A(7) – элемент матрицы, стоящий в 1-й строке и 3-м столбце.
Для доступа к нескольким элементам матрицы в качестве индекса указывается массив значений. Например:
А(1:2, 2) – вектор-столбец, содержащий 1-й и 2-й элемент из 2-го столбца матрицы А;
А(2, [1 3]) – вектор-строка, содержащая 1-й и 3-й элемент из 2-й строки матрицы А;
А(2:3, 3:4) - матрица размера 2 x 2, составленная из элементов стоящих на пересечении 2-й и 3-й строк с 3-м и 4-м столбцами матрицы А.
Для получения доступа к целому столбцу матрицы в качестве первого индекса используется двоеточие без значений, например A(:, 2) – второй столбец матрицы. Для получения доступа к целой строке – двоеточие без значений в качестве второго индекса, например A(3, :) – третья строка матрицы.
Упражнение 3.
Создайте случайную матрицу А размера 4 x 6, со значениями в диапазоне [-3; 3].
Создайте вектор B, содержащий с 1-го по 3-й элемент 5-го столбца матрицы A.
Создайте матрицу С, содержащую два последних столбца матрицы А.
Создайте матрицу D, составленную из элементов, стоящих на пересечении нечетных строк и четных столбцов матрицы А.
Объединение матриц, изменение размера матриц.
Объединение матриц – это процесс соединения маленьких матриц для создания больших. Объединение матриц записывается в том-же формате как при задании списка элементов матрицы с помощью перечисления. Только в качестве элементов списка вместо чисел используются матрицы более низкой размерности.
Обратите внимание, объединение матриц возможно только в том случае, если соответствующие размерности матриц совпадают. То есть, форма матрицы должна после объединения оставаться прямоугольной.
Пример 3.
>> A=eye(3)
A =
1 0 0
0 1 0
0 0 1
>> B=[A zeros(3, 2)]
B =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
>> C=[B; ones(2,5)]
C =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
1 1 1 1 1
1 1 1 1 1
>> D=[C rand(2)]
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.
Для операции объединения матриц также можно воспользоваться альтернативной записью с помощью встроенных команд horzcat и vertcat.
Удаление строк и столбцов. Вы можете удалять строки и столбцы матрицы используя пустую пару квадратных скобок в операции присваивания.
Пример 4.
>> A=diag(1:4)
A =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
>> A(2,:)=[]
A =
1 0 0 0
0 0 3 0
0 0 0 4
>> A(:,3)=[]
A =
1 0 0
0 0 0
0 0 4
Создание матрицы составленной из повторяющихся блоков. Команда repmat позволяет создать матрицу составленную из нескольких повторяющихся блоков, например содержащую несколько одинаковых столбцов.
Пример 5.
>> A=[1:2:5]
A =
1 3 5
>> B=repmat(A,1,2)
B =
1 3 5 1 3 5
>> B=repmat(A,2,1)
B =
1 3 5
1 3 5
>> B=repmat(A,2,2)
B =
1 3 5 1 3 5
1 3 5 1 3 5
Упражнение 4.
Задайте матрицу А с помощью встроенных функций и команд объединения матриц (т.е. без использования явного перечисления ее элементов). Матрица должна иметь вид:
Постарайтесь использовать минимально возможное число команд.
Создайте матрицу B, полученную из матрицы А вычеркиванием строки и столбца, содержащих элемент А(2, 3).
