循环卷积与线性卷积的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
( = ∑ h (m )x ((n - m )) (0 ≤ n < N )
y (n ) = [h (n )⊗ x (n )] = ∑ y '(n - rN )⎪G (n )
⎝ r =-∞ ⎭
N
循环卷积与线性卷积的实现
一、 实验目的:1)进一步理解并掌握循环卷积与线性卷积的概念。
(2)理解掌握二者的关系。
三、实验原理
两个序列的 N 点循环卷积定义为
[h (n )⊗ x (n )] N
N -1
N
k =0
从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个
N 点序列的 N 点循环卷积的结果仍为 N 点序列,而他们的线性卷积
的结果的长度则为 2N -1;循环卷积对序列的移位采取循环移位,而
线性卷积对序列采取线性位移。
正式这些不同,导致了线性卷积和循
环卷积有不同的结果和性质。
循环卷积和线性卷积虽然是不用的概念,但是它们之间有一个有
意义的公式联系在一起
⎛ ∞ ⎫
N
其中 y '(n ) = h (n )* x (n )
也就是说,两个序列的 N 点循环卷积是他们的线性卷积以 N 为
周期的周期延阔。
设序列 h (n )的长度为 N ,序列 x (n )的长度为 N ,此时, 1 2
线性卷积结果的序列的点数为 N ' = N + N - 1;因此如果循环卷积的点 1 2
数 N 小于 N + N - 1 ,那么上述周期性延阔的结果就会产生混叠,从 1 2
而两种卷积会有不同的结果。
而如果 N 满足 N = N ' 的条件,就会有
y (n ) = y '(n )( ≤ n < N )
这就会意味着在时域不会产生混叠。
因此,我们得出结论:若通过在序列的末尾填充适当的零值,使得x(n)和h(n)成为N+N-1店序
12
列,并作出这两个序列的N+N-1循环卷积与线性卷积的结果在
12
0≤n<N范围内相同。
根据DFT循环卷积性质中的卷积定理
}=DFT[x(n)]•DFT[h(n)]
DFT{[h(n)⊗x(n)]
N
便可通过两种方法求两个序列的循环卷积:一是直接根据定义计算;二是根据性质先分别求两个序列的N点DFT,并相乘,然后取IDFT 以得到循环卷积。
第二种方法看起来要经过若干个步骤,但由于求序列的DFT和IDFT都有快速算法,因此它的效率比第一种方法要高得多。
同样,根据线性卷积和循环卷积的关系,可以通过计算循环卷积以求得线性卷积,提高计算序列线性卷积的效率。
四、实验内容
输入程序序列如下:
n=[0:1:4];m=[0:1:3];
x1=1+n;x2=4-m;%生成函数x1和x2
L1=length(x1)-1;L2=length(x2)-1;%取函数的长度
y1=conv(x1,x2);%直接用函数conv计算线性卷积
n1=[0:1:L1+L2];
subplot(3,1,1);stem(n1,y1)%绘制线性卷积图形
xlabel('n');ylabel('y(n)');%标注x、y轴
N2=5;%求5点圆卷积if length(x1)>N2
error('N必须大于序列x1的长度')
end
if length(x2)>N2
error('N必须大于序列x2的长度')
end
是否小于N
X21=fft(x1,N2);
X22=fft(x2,N2);
y2=ifft(X21.*X22);
n2=[0:1:N2-1];
subplot(3,1,2);stem(n2,y2) axis([0,7,0,40])%以上语句判断两个序列的长度
%作序列1的FFT
%作序列2的FFT
%求两序列的循环卷积(时域)
%绘制两序列循环卷积图形
%修改x、y轴长度
N3=8
if length(x1)>N3
error('N必须大于序列x1的长度') end
if length(x2)>N3
error('N必须大于序列x2的长度') end
x31=[x1,zeros(1,N3-length(x1))]
x32=[x2,zeros(1,N3-length(x2))]
X31=fft(x31)
X32=fft(x32)
y3=ifft(X31.*X32)
n3=[0:1:N3-1]
subplot(3,1,3);stem(n3,y3)
将程序输入MATLAB运行结果如下:
MATLAB运行显示的图形为:
五、实验心得:本次实验对我意义很大,让我熟练的运用了matlab 软件。
使我对课本上的知识又加深了很多理解和运用。