c语言实现有限序列相加,两个有限长序列相加、相乘后长度点数怎么计算

x1=[1 0 -1 2],长度L1=4

x2=[2 0 0 0 1],长度L2=5

首先是线性卷积,很简单,本质就是多项式乘法,结果是:

[2 0 -2 4 1 0 -1 2]

线性卷积的长度是L1+L2-1,此处就是8,要求7点圆周卷积,就是把上面结果的最后一位拿下来加到前面第一位,就是:

[4 0 -1 4 1 0 -1]

若要N点线性卷积等于圆周卷积,只有N大于等于线性卷积的长度,这样就不必截下尾巴再添加到头上了。

所以就是N>=L1+L2-1,

即N>=8

58096d65032cf86d7cc7275b4e274742.png

扩展资料:

算法

离散信号的圆周卷积可以经由圆周卷积定理使用快速傅立叶变换(FFT)而有效率的计算。因此,若原本的(线性)卷积能转换成圆周卷积来计算,会远比直接计算更快速。

考虑到长度L 和长度 M 的有限长度离散信号,做卷积之后会成为长度的信号,因此只要把两离散信号补上适当数目的零(zero-padding)成为 N 点信号,其中  ,则它们的圆周卷积就与卷积相等。即可接着用 N 点 FFT 作计算。

用以上方法计算卷积时,若两个信号长度相差很多,则较短者须补上相当多的零,太不经济。而且在某些情况下,例如较短的 h[n] 是一个 FIR 滤波器而较长的 x[n] 是未知长度的输入(像语音)时,直接用以上方法要等所有的输入都收到后才能开始算输出信号,太不方便。

这时可以把 x[n] 分割成许多适当长度的区块(称为 block convolution),然后一段一段的处理。经过滤波后的段落再仔细的连接起来,借由输入或输出的重叠来处理区块连接的部份。这两种做法分别称为重叠-储存之卷积法和重叠-相加之卷积法。

参考资料来源:百度百科-圆周卷积

参考资料来源:百度百科-线性卷积

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值