Пр о ц е с с о р TMS 3 2 0C4 x
85
2.4. Матрично - векторное умножение
2.4.1. Умножение действительной матрицы на действительный вектор
В матрично-векторном умножении матрица
M
размерностью
K
×
N
,
имеющая
K
строк и
N
колонок, умножается на вектор
V
размерности
N
×
1 с по-
лучением результирующего вектора
P
размерностью
K
×
1. Обозначив элементы
матрицы
m
[
i
,
j
], компоненты вектора-множителя
v
[
j
], а компоненты вектора-
произведения
p
[
i
], можно записать выражение для вычисления элементов про-
изведения как
p
[
i
] =
m
[
i
,0]
v
[0]+
m
[
i
,1]
v
[1]+...+
m
[
i
,
N
-1]
v
[
N
-1],
где
i
= 0, 1, ...,
K
-1.
Организация данных в программе, выполняющей матрично-векторное
умножение, дана на рис.2.13. Матрица
m
[
i
,
j
] расположена в памяти по строкам.
Программа вычисляет произведение, используя вложенные циклы, внешний по
строкам (по
K
), внутренний по столбцам (по
N
). Внутренний цикл, вычисляю-
щий один элемент выходного вектора, организован как повтор блока команд
(команда RPTBD) со счетчиком цикла в регистре RC; внешний цикл в качестве
счетчика цикла использует регистр AR3. Исходный текст программы приводит-
ся ниже. Команда DB, организующая внешний цикл вычислений по
K
, выходит
из цикла, если в счетчике отрицательное значение, поэтому в AR3 загружается
K
-1. То же самое относится и к внутреннему циклу, но первое произведение
вычисляется вне цикла и по этой причине в регистр RC, определяющий количе-
ство повторов внутреннего цикла, загружается значение (
N
-1)-1, т.е.
N
-2.
Матрица
коэффициентов
m
[0,0]
m
[0,1]
m
[
K
-1,
N
-2]
Младшие
адреса
Старшие
адреса
v
[0]
v
[1]
v
[
N
-1]
p
[0]
p
[1]
p
[
K
-1]
Входной вектор
m
[0,
N
-1]
m
[1,0]
Выходной вектор
m
[
K
-1,
N
-1]
AR0
AR1
AR2
Рис.2.13. Организация данных при умножении