捋一捋DSP里的重叠保留法

相比于十分“直接”的重叠相加法,重叠保留法显得有点绕。那些字母加来减去的,各段和总输出的表达式让人眼花缭乱。花了些力气捋了捋清楚,记录于斯。

看字母太抽象太烦可以滑到后面例子对照理解。

设h(n)序列长M;x(n)总长L,分成长为N1的若干段,每段再把前一段末尾的M-1个点复制到本段开头(首段开头补零),变成长N的片段,然后依次和h(n)卷积。(故,N=M+N1-1)

每段卷完得有N+M-1那么多点,但空只留了N-M+1那么多,咋办?多出来前后各(M-1)个点没地待。巧了,这些个点正好没用,直接扔了。

为啥没用?首先,每段前端的M-1个点:它们实际上是h(n)翻过去之后(可能平移几下也可能都没动地——M=2的时候M-1=1就是只有没动地的情况)和本段那些多余的x(n)的点的积的和(最多是M-1个数的和,就是这M-1个没用的x(n)的点都被h(n)的点给乘了),一个有用的x(n)都没掺和这事总结一下,就是计算结果前端的M-1点对应了本来就是“复制”上一段结尾的那M-1个点,本来就不属于自己的“赝品”当然要扔。

(先看正文,再看括号补充的,不然有点乱)

不过如果是有些有用,有些没用的x(n)都参与了活动,活动成果要不要留呢?

答案是肯定的。这些就是和上一段的衔接点,因为这段开头所谓没用的点实际上是上一段的结尾,也是总的x(n)里原本就有的,而卷积也本来就是要前后的点都掺和,都是一家人分不开的(从“卷”这个字就能看出来,剪不断、理还乱啊)。上一段h(n)只能挪到最后一位与该段x(n)最后一位对齐这里,不能再往后挪了(这就是后面的M-1个点的去向——根本没计算出来)。所以这一段必须留,不然就缺了。

还是举套具体的数为例吧。

设x={1,2,3,...,9},h={3,2},要求最后的结果是每段x_{k}(n)长N=4(分完之后加上段首的M-1个上段“结余”一共).

那么,L=9,M=2,M-1=1,N=4

x_{1}={0,1,2,3};x_{2}={3,4,5,6};x_{3}={6,7,8,9};x_{4}={9,0,0,0}

明明到x_{3}这都把数取完了,为什么 末了又杀出个x_{4}

是因为按照原来分段算完并去完该去的,剩下的个数是和x(n)原来的点数相等,但卷积的结果应该是两个被卷积序列长度之和再减1啊,所以要补上后面缺的M-1=1个数,补上之后不足一个分段(N=4),所以又叫来仨零一起打麻将。

可以得到,y1={0,3,8,13},y2={9,18,23,28},y3={18,33,38,43},y4={27,18,0,0}

这里边,各段其实都没有按照线性卷积算完N+M-1个点,而是算到第N个点就不算了。这还没完,接下来还要把上面已经算出来的点,每段去掉开头的M-1=1个,其余保留并按序抄下就是最终结果:y={3,8,13,18,23,28,33,38,43,18}.什么?y的最后俩零为啥也不要了?那就回头看看x4的那三个0是怎么添上的,就会发现其实后面的整个x4就是为了把h(n)完整地从x(n)的末尾移出来,事实上只有9是被需要的,后面仨零都只是凑数的(真惨),用他们计算出来的结果也是白忙活一场,本来现实中就不存在,所以一旦y的末尾开始出现0,就说明后面都是虚无了。之前的段都是两个序列末尾重合,h(n)就不再继续向前挪了,但这次不行了,这是最后收尾阶段,没有后面的序列来找补了,必须在这里做个了断。

补充一下的话,原x(n)序列末尾是没有0的,如果原本就是0,那么y的结尾也会有0存在,所以我们来理论上算一下该留几个去几个:

需要补的0总共是N-(M-1)=N-M+1=N1个,这个例子里就是3个,最后补的这段卷积完只要留M-1=1个,除此之外,后面的以及最开始的M-1=1个全是不要的。再钻一下牛角尖的话,到底一共(包括开端和结尾)去几个呢?答案是N+M-1-(M-1)=N=4个,或者按照前面只算N个卷积的惯例,则是去掉N-(M-1)=3个。那么单算结尾去掉的数量,就是这个数字减去开头的M-1咯。

结束~

总结一下,一共是,重叠式分段、逐段卷积、掐头去尾、补零算末尾、存数依次排这几个步骤。我讲清楚了吗~

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值