线性卷积与圆周卷积的计算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线性卷积与圆周卷积的计算

一、基本原理

1. 线性卷积

当系统输入序列为x(n),系统的单位冲击响应为h(n),输出序列为y (n ),则线性时不变系统输入、输出间的关系为:

Y (n )=h (n )*x (n )

2. 圆周卷积

设两个有限长序列1()x n 和2()x n ,均为N 点,其N 点的DFT 分别为1()X k 和2()X k ,如果312()()()X k X k X k =⋅,则

1

3120()[()()]()N N m x n x

m x n m R n -==-∑ 1

120()(())N N m x m x n m -==-∑

1()x n =○

N 2()x n 01n N ≤≤-

二、实验内容与要求

已知两个有限长序列:

()()2(1)3(2)4(3)5(4)x n n n n n n δδδδδ=+-+-+-+-

()()2(1)(2)2(3)h n n n n n δδδδ=+-+-+-

(1) 实验前,预先笔算好这两个序列的线性卷积及下列几种情况的圆周卷积 ①()x n ⑤()h n ②()x n ⑥()h n ③()x n ⑨()h n ④()x n ⑩()h n

(2)编制一个计算两个序列线性卷积的通用程序,计算()()x n h n *。

(3)编制一个计算圆周卷积的通用程序,计算上述4种情况下的两个序列的圆周卷积。

(4)上机调试并记录实验结果

(5)将实验结果和预先笔算的结果比较,验证其正确性。

三、实验过程

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:1: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'; %计算圆周卷积

function y=cirshiftd(x, m, N)

if length(x)>N

error('x的长度必须小于N');

end

x=[x, zeros(1, N-length(x))];

n=[0:1:N-1];

y=x(mod(n-m,N)+1);

①x(n)⑤y(n)

clear all

xn=[1 2 3 4 5];

hn=[1 2 1 2];

N1=length(xn);

N2=length(hn);

y1n=conv(xn, hn);

ycn=circonv(xn, hn, 5);

ny1=[0:1:length(y1n)-1];

ny2=[0:1:length(ycn)-1];

subplot(2,1,1);

stem(ny1, y1n);

subplot(2,1,2);

stem(ny2, ycn);

②x(n)⑥y(n)

clear all;

N1=5;

N2=4;

xn=[1 2 3 4 5];

hn=[1 2 1 2];

yln=conv(xn,hn);

ycn=circonv(xn,hn,6);

ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1);

stem(ny1,yln);

ylabel('线性卷积');

subplot(2,1,2);

stem(ny2,ycn);

ylabel('圆周卷积');

③x(n)⑨y(n)

clear all;

N1=5;

N2=4;

xn=[1 2 3 4 5];

hn=[1 2 1 2];

yln=conv(xn,hn);

ycn=circonv(xn,hn,9);

ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1);

stem(ny1,yln);

ylabel('线性卷积');

subplot(2,1,2);

stem(ny2,ycn);

ylabel('圆周卷积');

④x(n)⑩y(n)

clear all;

N1=5;

N2=4;

xn=[1 2 3 4 5];

hn=[1 2 1 2];

yln=conv(xn,hn);

ycn=circonv(xn,hn,10); ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1);

stem(ny1,yln);

ylabel('线性卷积');

subplot(2,1,2);

stem(ny2,ycn);

ylabel('圆周卷积');

相关文档
最新文档