用matlab计算两个有限长序列的卷积,Matlab实现长序列卷积和2FFT-DIF

Matlab 实现长序列卷积和2FFT-DIF

1. 实验要求

1.1 令w(n)为一正弦加白噪声信号,长度为500,h(n)是一个低通FIR 滤波器,试用DFT 与叠接相加法计算线性卷积。

h(n)使用fir1.m 设计:

h=fir1(10,0.3,hanning(11)); %设计低通滤波器,得到h(n);

1.2设计一个按照时间抽取的基2快速傅里叶变换(基2FFT-DIT )。

2. 实验原理

2.1 DFT 实现重叠相加

w(n)为长序列,将其分解为若干个子序列,利用叠接相加法进行卷积。

设x(n)为一个M 点序列,h(n)为一个L 点序列,y(n)=x(n)*h(n),即y(n)是x(n)和h(n)的线性卷积,那么y(n)是一(M+L-1)点的序列。又由于DFT 对应循环卷积而不是线性卷积,能否用DFT 来计算两个序列的线性卷积呢?答案是肯定的。

由DFT 的性质有:

()()[()()]x n h n IDFT X k H k ?=

式中x(n),y(n)都是N 点的序列,循环卷积的结果也是N 点序列,显然X(k),H(k)也是N 点序列,现希望

()()()[()()][()]y n x n h n IDFT X k H k IDFT Y k =*==

因为y(h)是(M+L-1)点序列,因此,Y(k)也必须是(M+L-1)点序列,相应的X(k),H(k)也都应当是M+L-1点序列,而且X(K),H(K)对应的时域序列x(n),h(n)也必须是M+L-1点的序列。只有这样,由Y(k)作逆变换所得到的y(n)才能保证x(n)和h(n)的线性卷积,具体步骤如下:

1) 对M 点序列x(n)及L 点序列h(n)分别作扩展,构成新序列()x n ',()h n ',他们的长度都是M+L-1点,即

()0,1,,1()0,2x n n M x n n M M L =-?'=?=+-?

你可能感兴趣的:(用matlab计算两个有限长序列的卷积,Matlab实现长序列卷积和2FFT-DIF)