教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

循环卷积与线性卷积的实现

来源:网络收集 时间:2026-02-10
导读: 实验五 循环卷积与线性卷积的实现 一、实验目的 (1) 进一步理解并掌握循环卷积与线性卷积的概念; (2) 理解掌握二者的关系。 二、实验原理 两个序列的N点的循环卷积定义为 [h(n) x(n)]N h(m)x((n m))N (0 n N) k 0N 1 从定义中可以看到,循环卷积和线性

实验五 循环卷积与线性卷积的实现

一、实验目的

(1) 进一步理解并掌握循环卷积与线性卷积的概念; (2) 理解掌握二者的关系。

二、实验原理

两个序列的N点的循环卷积定义为

[h(n) x(n)]N h(m)x((n m))N (0 n N)

k 0N 1

从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N点序列的N点循环

卷积结果仍为N点序列,而它们的线性卷积的结果长度则为2N-1;循环卷积对序列的移位采取循环移位,而线性卷积对序列采取线性移位。正是这些不同,导致了线性卷积和循环卷积有不同的结果和性质。

两个序列的N点循环卷积是它们的线性卷积以N为周期的周期延拓。设序列h(n)的长度为N1,序列x(n)的长度为N2,此时线性卷积结果的序列点数为N' N1 N2 1;因此如果循环卷积的点数N小于N1 N2 1,那么上述周期性延拓的结果就会产生混叠,从而两种卷积会有不同的结果。而如果满足N N'的条件,就有循环卷积与线性卷积的结果在0 n N范围内相同。

根据DFT循环卷积性质中的卷积定理

DFT{[h(n) x(n)]N} DFT[x(n)] DFT[h(n)]

因此可以根据性质先分别求两个序列的N点DFT,并相乘,然后取IDFT以得到循环卷积。

三、实验分析

例题:已知有限长序列x(n)与h(n)如下图所示, (1) 画出两者之间的线性卷积 (2) 8点圆卷积。 (3) 5点圆卷积。

解析如下:

(1)x(n)与h(n)的线性卷积,由公式可知:

h(n)*x(n)

m

x(m)h(n m)

x(m)与h( m)的图形如下:

利用方格平移法:

由方格平移法可知: 当n 0时,h(n)*x(n) 0 当n 1时,h(n)*x(n) 0

当n 2时,h(n)*x(n) 0*1 1*1 1 当n 3时,h(n)*x(n) 2*1 1*1 0*1 3 当n 4时,h(n)*x(n) 3*1 2*1 1*1 0*1 6 当n 5时,h(n)*x(n) 3*1 2*1 1*1 0*1 6 当n 6时,h(n)*x(n) 3*1 2*1 1*1 6 当n 7时,h(n)*x(n) 3*1 2*1 5 当n 8时,h(n)*x(n) 3*1 3

得到图形如下:

(2)x(n)与h(n)的8点圆卷积,由公式可知:

x(n) h(n) x((m))8h((n m))8G8(n)

n 0

7

x((m))8与h(( m))8的图形如下:

根据下面图表可计算得到圆卷积:

取和得到圆卷积为3。

当n 2时: 取和得到圆卷积为1。

取和得到圆卷积为6。

n 5取和得到圆卷积为6。

取和得到圆卷积为6。

n 7取和得到圆卷积为5。

得到波形如下:

(2)x(n)与h(n)的5点圆卷积,由公式可知:

x(n) h(n) x((m))4h((n m))4G4(n)

n 0

4

x((m))4与h(( m))4的图形如下:

根据图标可计算得到圆卷积: 当n

0取和得到圆卷积为6。

当n 1时:

取和得到圆卷积为6。

当n

2

当n

3取和得到圆卷积为6。

当n

4

画出波形如下:

四、仿真实验

Matlab程序设计如下:

编写的循环卷积程序:

方法一:直接根据定义计算,程序编辑如下:

function y=circonv1(x1,x2,N) if length(x1)>N

error('N must not be less than length of x1') end

if length(x2)>N

error('N must not be less than length of x2') end

x1=[x1,zeros(1,N-length(x1))]; x2=[x2,zeros(1,N-length(x2))]; n=[0:1:N-1];

x2=x2(mod(-n,N)+1); H=zeros(N,N); for n=1:1:N

H(n,:)=cd(x2,n-1,N); end

y=x1*H';

function y=cd(x,m,N) if length(x)>N error end

x=[x zeros(1,N-length(x))]; n=[0:1:N-1]; n=mod(n-m,N); y=x(n+1);

方法二:根据性质先分别求两个序列的N点DFT,并相乘,然后取IDFT以得到循环卷积

function y=circonv2(x1,x2,N) if length(x1)>N error('N must not be less than length of x1') end

if length(x2)>N error('N must not be less than length of x2') end

X1k=fft(x1,N); X2k=fft(x2,N);

Yk=X1k.*X2k; y=ifft(Yk);

if((all(imag(x1)==0))&&(all(imag(x2)==0))) y=real(y); end

编写的主程序:

n=[0:1:4];m=[0:1:4];

N1=length(n);N2=length(m); xn=ones(1,5); hn=[0,0,1,2,3]; y1n=conv(xn,hn);

y2n=circonv2(xn,hn,N1+N2-1); y3n=circonv1(xn,hn,N1); ny1=[0:1:length(y1n)-1]; ny2=[0:1:length(y3n)-1]; subplot(3,1,1); stem(ny1,y1n); subplot(3,1,2); stem(ny1,y2n); subplot(3,1,3); stem(ny2,y3n);

运行结果如下:

图表 1实验结果

与理论结果一致。

五、实验小结

通过本次实验理解并掌握了循环卷积与线性卷积的概念,也掌握了两者之间的关系。学会了matlab中线性卷积函数,以及如何编写循环卷积。在仿真过程中出现了一些问题,由于matlab提供线性卷积函数,则只需要自己编写循环卷积,在编写过程中,没有注意到matlab中的大小写的严格区别,导致程序运行错误。经过反复检查之后发现了错误,经改正后得到了正确的运行结果。收获很大。

…… 此处隐藏:756字,全部文档内容请下载后查看。喜欢就下载吧 ……
循环卷积与线性卷积的实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/124096.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)