线性卷积与圆周卷积的计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.实验目的
1) 通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。
2) 掌握线性卷积与圆周卷积软件实现的方法,并验证两者之间的关系。
2.基本原理
线性卷积;圆周卷积;两个有限长序列的线性卷积;圆周卷积与线性卷积的关系。
3.实验内容及要求
已知两个有限长序列
X(n)= S (n)+2 -⑪+3 S -2)+4 S -3)+5 S (rt)
h(n)= S (n)+2-1S+(n S -2)+2 S (3)
1.编制一个计算两个线性卷积的通用程序,计算x(n)*h(n) 。
2•编制一个计算圆周卷积的通用程序,计算上述4种情况下两个序列x(n)与h(n)的圆周卷积。
3.上机调试并打印或记录实验结果。
4.将实验结果与预先笔算的结果比较,验证真确性。
4.相应程序及图像
1 )编制一个计算两个序列线性卷积的通用程序,计算x(n)*h(n).
clear all;
xn=[1 2 3 4 5];
hn=[1 2 1 2];
yln=conv(xn,hn);
ny=[0:1:length(yln)-1];
stem(ny,yln);
xlabel('时间序号n');
ylabel('信号幅度');
title('线性卷积');
线性卷积
1
1
T
—
2)编制一个计算圆周卷积的通用程序,计算上述4种情况下两个序列x(n)与h(n)的圆周卷
积。
主程序:
clear all
clc
N=[5 6 9 10];%圆周卷积的长度向量
xn=[1 2 3 4 5];
hn=[1 2 1 2];
y1n=conv(xn,hn)%计算线性卷积
ny仁0:length(y1 n)-1;%分别计算x (n)和h ( n)的5点,6点,9点和10点圆周卷积
yc1=circ onv(xn,hn,N ⑴)
yc2=circo nv(x n,h n,N(2))
yc3=circo nv(x n,h n,N(3))
yc4=circonv(xn,hn,N(4))%分别作出线性卷积和取不同点数的圆周卷积的图像比较
subplot(1,2,1)
stem (n y1,y1 n);
xlabel('时间序号n');
ylabel('信号幅度');
title('线性卷积');
subplot(1,2,2)
stem(0:N(1)-1,yc1);
xlabel('时间序号n');
ylabel('信号幅度');
title('5点圆周卷积');
figure subplot(1,2,1) stem(ny1,y1n); xlabel(' 时间序号n'); ylabel(' 信号幅度');
title(' 线性卷积'); subplot(1,2,2) stem(0:N(2)-1,yc2); xlabel(' 时间序号n'); ylabel(' 信号幅度'); title('6 点圆周卷积'); figure subplot(1,2,1) stem(ny1,y1n); xlabel(' 时间序号n'); ylabel(' 信号幅度'); title(' 线性卷积'); subplot(1,2,2) stem(0:N(3)-1,yc3); xlabel(' 时间序号n'); ylabel(' 信号幅度'); title('9 点圆周卷积'); figure subplot(1,2,1) stem(ny1,y1n); xlabel(' 时间序号n'); ylabel(' 信号幅度'); title(' 线性卷积'); subplot(1,2,2) stem(0:N(4)-1,yc4); xlabel(' 时间序号n'); ylabel(' 信号幅度'); title('10 点圆周卷积');
2. 圆周卷积的函数function yc=circonv(x1,x2,N) if length(x1)>N
error('N 必须大于等于x1 的长度'); end if length(x2)>N
error('N 必须大于等于x2 的长度'); end x1=[x1,zeros(1,N-length(x1))];
x2=[x2,zeros(1,N-length(x2))];
n=[0:N-1];
x2=x2(mod(-n,N)+1); H=zeros(N,N); for n=1:1:N
H( n,:)=cirshiftd(x2, n-1,N); end yc=x1*H :
3.实现圆周移位的函数
function y=cirshiftd(x,m,N) if len gth(x)>N
error('x 的长度必须小于 N'); end x=[x,zeros(1,N-le ngth(x))]; n=[0:1:N-1];
y=x(mod( n-m,N)+1);
线性卷积
2 4 时间序号n 8
4 J I T" ^12 0 8 6 4 2
20
4
1
12 3 4
时间序号n
线性卷积 2
4
6
时间序号n
O 8 € 4 2 O 8 6 4 2C
O
2
d i 1— 1— 1
6点圆周卷积
线性卷积 c 0864208642
2 d i 1 1— 1
9,点圆周卷
积