给定一个至少包含两个元素的整数数组,输出该数组的矩阵向量(定义如下)。
为了计算Matrix-Vector,首先旋转通过n
size - input数组以创建一个size的矩阵n x n
,该数组的第一个元素位于主对角线之后。这形成矩阵部分。对于向量,垂直翻转输入数组。然后执行普通矩阵乘法。输出向量是结果。
例如,
a = [1, 2, 3]
首先,将阵列向右旋转两次,以获得[3, 1, 2]
和[2, 3, 1]
,然后将它们堆叠以形成3x3
矩阵
[[1, 2, 3]
[3, 1, 2]
[2, 3, 1]]
接下来,垂直翻转数组以形成向量
[[1, 2, 3] [[1]
[3, 1, 2] x [2]
[2, 3, 1]] [3]]
执行通常的矩阵乘法
[[1, 2, 3] [[1] [[1+4+9] [[14]
[3, 1, 2] x [2] = [3+2+6] = [11]
[2, 3, 1]] [3]] [2+6+3]] [11]]
输出为[14, 11, 11]
或[[14], [11], [11]]
(您选择是否展平)。
范例#2
a = [2, 5, 8, 3]
[[2, 5, 8, 3] [[2] [[4+25+64+9] [[102]
[3, 2, 5, 8] x [5] = [6+10+40+24] = [80]
[8, 3, 2, 5] [8] [16+15+16+15] [62]
[5, 8, 3, 2]] [3]] [10+40+24+6]] [80]]
[102, 80, 62, 80]
(v*2)[i+j]
绝招