Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2a70_2014.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

2.15.1. Создание матриц и векторов.

Как известно, двумерные массивы в линейной алгебре принято называть матрицами. Любая строка матрицы является одномерным массивом (вектор-строка – одномерный массив, элементы которого упорядочены вдоль строк матрицы (горизонтально)), и любой столбец матрицы также является одномерным массивом (вектор-столбец – одномерный массив, элементы которого упорядочены вдоль столбцов матрицы (вертикально)). Итак, можно считать, что вектор-строки являются частным случаем матрицы с количеством строк, равным единице, а вектор-столбцы являются частным случаем матрицы с количеством столбцов, равным единице.

В системе MATLAB все одномерные массивы трактуются либо как вектор-строки, либо как вектор-столбцы. Заметим, что в предыдущем параграфе создавались только вектор-строки, так как в операциях конкатенации в качестве разделителей использовались либо пробелы, либо запятые. Следующее выражение, также использующее операцию конкатенации, задает уже вектор-столбец:

>> z=[1;5;12]

z =

1

5

12

состоящий из трех строк, так как точка с запятой в операции конкатенации означает переход на следующую строку.

Для массива z функция length(z) возвращает число 3 в силу того, что данный массив состоит из трех элементов, при этом функция length не различает вектор-строки и вектор-столбцы. Вместе с тем, как видно из представленного примера система MATLAB правильно распознает «геометрию» одномерного массива z и наглядно отображает его, располагая элементы массива для показа в командном окне вертикально.

Матрицу A, состоящую из трех строк и двух столбцов (размером 3х2), получающуюся в результате конкатенации

>> A=[4 1; 0 2; 5 5]

A =

4 1

0 2

5 5

можно сформировать также вертикальной конкатенацией вектор-строк

>> A=[[4 1]; [0 2]; [5 5]]

A =

4 1

0 2

5 5

или горизонтальной конкатенацией вектор-столбцов

>> A=[[4;0;5],[1;2;5]]

A =

4 1

0 2

5 5

Заметим, что вертикальную и горизонтальную конкатенацию можно также осуществить с помощью функции cat. Для вертикальной конкатенации ее первый параметр равен единице

>> A=cat(1,[4 1], [0 2], [5 5])

A =

4 1

0 2

5 5

а для горизонтальной конкатенации указанный параметр равен двум

>> A=cat(2,[4;0;5],[1;2;5])

A =

4 1

0 2

5 5

При определенных размерах исходных матриц возможно также выполнение смешанной конкатенации:

>> A1=[1 4; 2 7];

>> A2=[6 1; 15 9];

>> A3=[8 5 4 3];

>> A=[A1 A2; A3]

A =

1 4 6 1

2 7 15 9

8 5 4 3

2.15.2. Доступ к отдельным фрагментам матриц.

Операцией обратной к объединению матриц, является выделение отдельных фрагментов матрицы (так, например, может понадобиться извлечь из матрицы несколько строк или столбцов или заменить один фрагмент матрицы другим). Для этого применяется индексация с помощью двоеточия (:). Пусть, например, требуется создать матрицу B размером 2х2, состоящую из элементов левого нижнего угла приведенной выше матрицы A:

>> B=A(2:3,1:2)

B =

2 7

8 5

Таким образом, зава с помощью двоеточия номера строк и через запятую – номера столбцов, на пересечении которых располагаются требуемые элементы, получили новую матрицу (в языке программирования FORTRAN такая конструкция называется сечением массива).

Если из матрицы необходимо выделить строку или столбец, номер этой строки или столбца указывается следующим образом: чтобы выделить, например, из матрицы A вторую строку следует записать команду:

>> B=A(2,:)

B =

2 7 15 9

т.е. в качестве первого индекса задается номер строки, а в качестве второго – двоеточие. Для того, чтобы выделить из матрицы A третий столбец, в качестве первого индекса следует задать двоеточие, а в качестве второго – номер этого столбца:

>> B=A(:,3)

B =

6

15

4

Пусть, например, необходимо заменить один фрагмент матрицы другим. Положим, что имеется некоторая матрица S размером 2х2

>> S=[10 20; 40 15]

S =

10 20

40 15

Для того, чтобы «вставить» эту матрицу в правый верхний угол матрицы A, следует задать следующую команду:

>> A(1:2,3:4)=S

A =

1 4 10 20

2 7 40 15

8 5 4 3

Если верхняя граница изменения номеров строк и столбцов матрицы, на пересечении которых находится задаваемый фрагмент, равна размеру матрицы в этом направлении, то вместо нее можно задать слово end. Это наиболее удобно при работе с большими матрицами. В частности, приведенную выше команду можно переписать в следующем виде:

>> A(1:2,3:end)=S

A =

1 4 10 20

2 7 40 15

8 5 4 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]