Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
146.doc
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.02 Mб
Скачать

3.4. Конкатенация матриц, удаление и вставка частей матриц

В процессе решения тех или иных задач часто возникает необходимость внесения некоторых изменений в исходные матрицы. Эти изменения могут касаться как простых операций, связанных, например, с заменой части элементов матрицы на их новые значения, так и более сложных преобразований. Часто требуется из нескольких малых матриц сформировать большую матрицу. Такое объединение малых матриц в большую называется конкатенацией (сцеплением). Иногда, напротив, требуется удалить из исходной матрицы часть строк или столбцов, в результате чего создается меньшая матрица из большей. Рассмотрим возможности системы MATLAB в отношении указанных операций.

Объединение малых матриц в большую (конкатенация)

Общий принцип горизонтальной конкатенации: блоки-матрицы Ai имеют одинаковое число строк и объединяются в обобщенную «строку»

A = [A1, A2, … , An],

отделяясь между собой пробелами или запятыми. При вертикальной конкатенации блоки-матрицы Ai должны иметь одинаковое число столбцов, что позволяет сцепить их в обобщенный «столбец»

A = [A1; A2; … ; An].

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

>>A = ones(3)                     >> B = eye(3)*(‐3)  A =                                B =

1     1 1       ‐3     0     0

1     1     1                      0    ‐3     0 1     1     1                      0     0    ‐3    

>> X = [6:8]

X =

6     7     8

>> D=[A X'] % Горизонтальная конкатенация      

D =

1 1 1 6

1 1 1 7

1 1 1 8

>> V=[B;A] % Вертикальная конкатенация

V =

-3 0 0

0 -3 0

0 0 -3

1 1 1

1 1 1

1 1 1

Извлечение и вставка частей матриц

Для извлечения части матрицы из матрицы А необходимо обратиться к имени этой матрицы с указанием в круглых скобках номеров строк и столбцов следующим образом: A(i:j, k:l). Пусть из полученной большой матрицы V необходимо выделить блок размером 3×2, ограниченный 2-й и 4-й строками и 2-м и 3-м столбцами:

>> M=V(2:4,2:3) % Извлечение подматрицы M из матрицы V 

M =

-3 0

0 -3

1 1

Пусть требуется создать векторы X1 и Y1. Причем вектор X1 состоит из элементов 2-го столбца матрицы M, а вектор Y1 состоит из элементов 1-й строки матрицы M. Тогда необходимо записать:

>> X1=M(:,2) >> Y1=M(1,:)

X1 = Y1 =

0 -3 0

-3

1

Для вставки подматрицы M в большую матрицу А необходимо обратиться к имени этой матрицы с помощью следующего оператора присваивания: A(i:j, k:l) = М. При этом порядок подматрицы M должен соответствовать указанным в круглых скобках номерам строк и столбцов матрицы А. Пример:

% Вставка блока (4×2) из нулей в матрицу V

>> V(3:6,1:2)=zeros(4,2)

V =

-3 0 0

0 -3 0

0 0 -3

0 0 1

0 0 1

0 0 1

Любую матрицу M можно «растянуть» в единый вектор K с помощью простой записи: K = M(:).

>> K=M(:)

K =

-3

0

1

0

-3

1

Удаление столбцов и строк матриц

Для удаления отдельных строк и столбцов матрицы используются пустые квадратные скобки [ ]. Проделаем это над матрицей V, заданной выше:

>>V(1:4, :)=[]

 % Удалеиие с 1‐й по 4‐ю строку матрицы V 

V =

0 0 1

0 0 1

Теперь из вновь образованной матрицы V удалим 1-й, 3-й столбeц:

>> V(:,[1,3])=[]

V =

0

0

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