Performance 两个Toeplitz矩阵的乘积?

Performance 两个Toeplitz矩阵的乘积?,performance,algorithm,matrix,fft,matrix-multiplication,Performance,Algorithm,Matrix,Fft,Matrix Multiplication,Toeplitz矩阵与正确长度的向量乘积的O(n logn)算法是众所周知的:将其放入循环矩阵中,乘以向量(以及随后的零),然后返回乘积的顶部n元素 我发现很难找到两个相同大小的Toeplitz矩阵相乘的最佳(时间方面的)算法 有人能给我一个算法吗?这里有一个O(n^2)时间算法 要计算乘积矩阵的一条对角线,我们需要在长度为-(2n-1)的n个窗口上计算点积,这些窗口是按锁步滑动的。可以在时间O(1)中计算两个连续条目之间的差值 例如,考虑的乘积 e f g h i o p q r s d

Toeplitz矩阵与正确长度的向量乘积的
O(n logn)
算法是众所周知的:将其放入循环矩阵中,乘以向量(以及随后的零),然后返回乘积的顶部
n
元素

我发现很难找到两个相同大小的Toeplitz矩阵相乘的最佳(时间方面的)算法

有人能给我一个算法吗?

这里有一个O(n^2)时间算法

要计算乘积矩阵的一条对角线,我们需要在长度为-(2n-1)的n个窗口上计算点积,这些窗口是按锁步滑动的。可以在时间O(1)中计算两个连续条目之间的差值

例如,考虑

的乘积
e f g h i    o p q r s
d e f g h    m o p q r
c d e f g    l m o p q
b c d e f    k l m o p
a b c d e    j k l m o
1,1分录为
eo+fm+gl+hk+ij
。2,2分录为
dp+eo+fm+gl+hk
,或1,1分录减去
ij
plus
dp
。3,3分录为
cq+dp+eo+fm+gl
,或2,2分录减去
hk
plus
cq
。4,4条目是
br+cq+dp+eo+fm


如果用浮点实现,请注意。

Toeplitz矩阵的乘积不一定是Toeplitz。如何表示输出?作为nxn矩阵,因为在这种情况下,没有其他表示法可以显示所有相关数据。我并不是要一个比
O(n^2)
更快的算法,我只是想知道在这种情况下是否有比标准矩阵乘法例程更快的算法。请注意,两个循环矩阵的乘积是循环的。我想知道是否有比O(n^2)更快的算法来计算两个循环矩阵的乘积,这两个矩阵都表示为向量。@nneonneo有一个O(n logn)时间算法——将第一个矩阵乘以第二个矩阵的一行,并进行n次不同的旋转。你能详细介绍一下吗?我不明白你所说的步调一致是什么意思,“但我确实看到了你试图展示的模式。@乔纳森,我想另一种说法是,我们可以逐点乘以列表,然后对角线上的元素是乘积列表中n个连续元素的和。有没有一种方法可以从数学上表示这一点呢?@乔纳森用一个全一向量进行卷积?”?