矩阵卷积的快速算法

本文讲述了在面试中遇到的矩阵卷积问题,从暴力求解的高复杂度O(MNK^2)出发,讨论了如何利用傅里叶变换将卷积转换为乘法,从而降低复杂度到O(MNlogMlogN)。内容涉及信号处理和图像处理中的快速算法。
摘要由CSDN通过智能技术生成

悲剧的面试

上周二去面试一家公司,好几个问题上都卡住了。

原先刷的都是算法、数据结构上的问题。简历上写的课程上的知识几乎全忘了(本身也没兴趣),结果面试官按着简历上的课程问,悲剧了。

题目

一个M×N的矩阵A,以及一个K×K的矩阵B,对两个矩阵做卷积运算,复杂度为多少?有没有快速运算?

思路

如果考虑暴力法,那复杂度显然是 O(MNK2)

快速算法当时一直在往动态规划上套,死活想不出来,%>_<%

回来仔细想了想,这不是能用变换域做嘛%>_<%

这个和编程倒是没什么关系,是用在信号处理和图像处理上的。

卷积运算在频域会变成乘法运算,复杂度大降。

数学原理

假设矩阵a为M×N的矩阵,b为K×K的矩阵,那么它们的卷积为

s(m,n)=ab=i=0K1j=0K1a(mi,nj)b(i,j)

很容易看出来,复杂度是 O(MNK2)

如果对 s 做二维DFT(M+k-1与N+k-1点),有

S(u,v)=m=0M+K2n=0N+K2s(m,n)ej2πmuM+K1e2πnv
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值