fft 重叠加法_北邮《数字信号处理》Matlab实验-实现重叠相加和重叠保留算法完成线性卷积的分段计算.docx...

实验题目1:线性卷积的分段计算实验目的:实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定x(n)及h(n))。试验内容:1、对算法的概括性说明重叠相加法是将待过滤的信号分割成长为N的若干段,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。建立缓存序列,每次输入N点序列,通过计算x(n)和h(n)的循环卷积实现线性卷积运算,将缓存的M‐1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M‐1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。M‐1点缓存xl(n)L=N+M‐1L点循环卷积h(n)后M‐1点+前N点y(n)重叠保留法相当于将想xl(n)和h(n)作循环卷积,然后找出循环卷中相当于线性的部分。在这种情况下,将序列y(n)分为长N的若干段,每个输入段和前一段有M‐1个重叠点。此时只需要将发生重叠的前M‐1个点舍去,保留重叠的部分并输出,则可获得序列y(n)。M‐1点缓存后M‐1点xl(n)序列衔接N+M‐1点循环卷积后N点y(n)每N点输入h(n)2、流程图及源代码重叠相加法开始重叠保留法开始输入序列X(n),h(n)输入序列X(n),h(n)计算各序列长度、分段数、生成临时序列计算各序列长度、分段数、生成临时序列分段循环卷积填入保留之后分段循环卷积重叠相加后输出前N点否输出前N个点并为t(n)重新赋为保留值否完成所有分段计算?完成所有分段计算?是输出序列y(n)是输出序列y(n)结束结束function[y]=circular_conv(x1,x2,L)%利用循环卷积计算线性卷积%循环卷积采用频域计算方法,已FFT代替DFT,降低运算量X1k=fft(x1,L);%x1做L点FFTX2k=fft(x2,L);%x1做L点FFT Yk=X1k.*X2k;%频域相乘y=ifft(Yk);%FFT反变换得循环卷积结果endfunction[y]=overlap_add(x,h,N)%重叠相加法实现%核心为将高点数DFT转化为低点数DFT,且用循环卷积计算线性卷积M=length(h);%获得h(n)的长度ifN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值