计算一长一短两个序列的线性卷积时,假如直接使用 FFT 以及 IFFT 进行快速变换,则需要在较短的序列后面补很多个零,增加了计算量
因此在此种情况下,一般采纳重叠相加法和重叠保留法来计算,可以有效减少计算量,具体原理此处不涉及,只提供这两种方法的matlab程序,供参考
overlap_add 重叠相加法的程序overlap_save 重叠保留法的程序lin_conv 用 FFT 和 IFFT 快速计算线性卷积的程序,被以上两个程序调用建议:将这三段程序保存成分开的三个
m 文件%% 重叠相加法,重叠保留法 实现长短序列的线性卷积function y=overlap_add(x,h,M,choice)% x为较长的输入序列,h为较短的系统函数,M为分段大小% choice为’add’或’save’,选择重叠相加法或重叠保留法%---—--——-前期处理——-——-—-——----——--—N=length(h); % 序列h(n)的长度Lx=length(x); % 序列x(n)的长度if N>M % 算法要求 N