【矩阵计算】矩阵乘法其一:基础符号和算法
2021-06-19 14:07
标签:rt4 实现 wem wpa 乘法 har pre tor ioc 如果用 其中,大写字母(如 矩阵转置(transposition): 矩阵加法(addition): 标量-矩阵乘法(scalar-matrix multiplication): 矩阵-矩阵乘法(matrix-matrix multiplication): 矩阵点乘(pointwise multiplication): 矩阵点除(pointwise division): 我们用 其中,粗体小写字母(如 我们用 向量加法(vector addition): 标量-向量乘法(scalar-vector multiplication): 内积/点积(inner/dot product): 向量点乘(pointwise multiplication): 向量点除(pointwise division): “Saxpy”是“scalar a x plus y”的助记符,表示用 如果把Saxpy算法中的标量换成矩阵,那么我们就能得到广义(generalized)Saxpy算法,即Gaxpy算法: 我们可以用两层for循环实现Gaxpy算法: 在这段代码中,外层的for循环遍历矩阵的每一行,内层的for循环遍历矩阵的每一列,像这样一行一行地遍历矩阵的Gaxpy算法也称为面向行的(row-oriented)Gaxpy算法。 当然,我们也可以一列一列地遍历矩阵,这样就有了面向列的(column-oriented)Gaxpy算法: 不同于向量 和Gaxpy算法类似,外积也有面向行的外积: 和面向列的外积: 一个 我们可以用 在此基础上,我们可以重写面向行的Gaxpy算法: 可以看出,面向行的Gaxpy算法实际上是 我们接着重写面向列的Gaxpy算法: 可以看出,面向列的Gaxpy算法实际上是 对于外积,我们先重写面向行的外积: 可以看出,面向行的外积实际上是 我们接着重写面向列的外积: 可以看出,面向列的外积实际上是 我们把矩阵-矩阵乘法写成用 我们把矩阵-矩阵乘法用三层for循环展开得到: 可以看出,矩阵-矩阵乘法实际上是 如果我们只展开外面两层for循环,则有: 可以看出,矩阵-矩阵乘法实际上是 如果我们只展开最外层的for循环,则有: 可以看出,矩阵-矩阵乘法实际上是 虽然改变三层for循环的前后顺序并不影响矩阵-矩阵乘法的结果,但是可以方便我们从不同角度理解矩阵-矩阵乘法。这里只列出了结果,具体过程可以参考上述方法。 和实数相对的是复数,因此我们接下来介绍复数矩阵和复数向量。 我们用 如果矩阵 虽然实数矩阵的大部分操作都适用于复数矩阵,但是也有一些操作不适用于复数矩阵。比如: 矩阵 复数矩阵 两个复数向量的内积(inner product):
【矩阵计算】矩阵乘法其一:基础符号和算法 标签:rt4 实现 wem wpa 乘法 har pre tor ioc 原文地址:https://www.cnblogs.com/jzyhywxz/p/9690562.html矩阵符号
矩阵操作
向量符号
向量操作
Saxpy算法
Gaxpy算法
外积
矩阵分割和冒号符号
矩阵-矩阵乘法
复数矩阵
矩阵符号
表示所有实数的集合,那么我们用
表示所有
的实数矩阵组成的向量空间,即:
)表示矩阵,带下标的小写字母(如
)表示矩阵中的元素。除了用
表示矩阵
中第
行第
列的元素之外,也可以用
和
表示。
矩阵操作
注意,要使矩阵点除有意义,则分母矩阵中不能有值为0的元素。向量符号
表示所有长度为
的实数向量组成的向量空间,即:
)表示向量,带下标的小写字母(如
)表示向量中的元素。除了用
表示向量
中第
个元素之外,也可以用
和
表示。
表示列向量,用
表示行向量,即:
向量操作
注意,要使向量点除有意义,则分母向量中不能有值为0的元素。Saxpy算法
的值更新
的值。Saxpy算法用公式表示为:
注意这里的“”不是相等符号,而是赋值符号。
Gaxpy算法
其中,,
并且
。
for i=1:m
for j=1:n
y(i)=y(i)+A(i,j)x(j)
end
end for j=1:n
for i=1:m
y(i)=y(i)+A(i,j)x(j)
end
end外积
和
的内积
,向量
和
的外积
表示如下:
其中,,
并且
。
for i=1:m
for j=1:n
A(i,j)=A(i,j)+x(i)y(j)
end
end for j=1:n
for i=1:m
A(i,j)=A(i,j)+x(i)y(j)
end
end矩阵分割和冒号符号
的矩阵可以看作是
个长度为
的行向量组成的:
同理,一个的矩阵也可以看作是
个长度为
的列向量组成的:
表示矩阵
的第
个行向量(第
行):
也可以用表示矩阵
的第
个列向量(第
列):
for i=1:m
y(i)=y(i)+A(i,:)x
end个内积操作加
个标量加法操作。
for j=1:n
y=y+x(j)A(:,j)
end个标量-向量乘法操作加
个向量加法操作。
for i=1:m
A(i,:)=A(i,:)+x(i)y
end个标量-向量乘法操作加
个行向量加法操作。
for j=1:n
A(:,j)=A(:,j)+y(j)x
end个标量-向量乘法操作加
个列向量加法操作。
矩阵-矩阵乘法
更新
的形式,即:
其中,,
并且
。
for i=1:m
for j=1:n
for k=1:r
C(i,j)=C(i,j)+A(i,k)B(k,j)
end
end
end个标量乘法操作加
个标量加法操作。
for i=1:m
for j=1:n
C(i,j)=C(i,j)+A(i,:)B(:,j)
end
end个内积操作加
个标量加法操作。
for i=1:m
C(i,:)=C(i,:)+A(i,:)B
end个向量-矩阵乘法操作加
个向量加法操作。
循环
顺序两层循环
一层循环
两层循环对应的
数据访问方式
i j k
内积
向量-矩阵乘法
从A取行,从B取列
j i k
内积
矩阵-向量乘法
从A取行,从B取列
i k j
Saxpy
面向行的Gaxpy
从B取行,从C取行
j k i
Saxpy
面向列的Gaxpy
从A取列,从C取列
k i j
Saxpy
面向行的外积
从B取行,从C取行
k j i
Saxpy
面向列的外积
从A取列,从C取列
复数矩阵
表示所有复数组成的集合,用
表示所有
的复数矩阵构成的向量空间,并且用
表示所有长度为
的复数向量构成的向量空间。
,那么我们用
和
分别表示矩阵A的实部和虚部,即:
,
。
的共轭(conjugate)矩阵
:
其中,两个实部相等,虚部互为相反数的复数互为共轭复数(conjugate complex number)。的转置(transposition)是共轭转置:
文章标题:【矩阵计算】矩阵乘法其一:基础符号和算法
文章链接:http://soscw.com/index.php/essay/95989.html