两个Toeplitz矩阵的乘积?

Gov*_*mar 6 algorithm performance fft matrix matrix-multiplication

O(n log n)Toeplitz矩阵和正确长度的矢量的乘积的算法是众所周知的:将其置于循环矩阵中,将其乘以矢量(和随后的零),并返回n乘积的顶部元素.

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

任何人都可以给我一个算法吗?

Dav*_*tat 7

这是一个O(n ^ 2)时间算法.

为了计算产品矩阵的一个对角线,我们需要计算长度为n个窗口的点积,这些窗口是以锁步方式滑动的长度(2n-1)列表.可以在时间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
Run Code Online (Sandbox Code Playgroud)

1,1条目是eo + fm + gl + hk + ij.2,2条目是dp + eo + fm + gl + hk,或1,1条目减去ij加号dp.3,3条目是cq + dp + eo + fm + gl,或2,2条目减去hk加号cq.4,4条目是br + cq + dp + eo + fm等等.

如果您以浮点实现此功能,请注意灾难性取消.