题目:已知两个有限长序列
x(n>=δ(n>+2δ(n-1>+3δ(n-2>+4δ(n-3>+5δ(n-4>
h(n>=δ(n>+2δ(n-1>+δ(n-2>+2δ(n-3>
计算以下两个序列的线性卷积和圆周卷积
<1)x(n>⑤y(n> (2>x(n>⑥y(n> (3>x(n>⑨y(n>
(4>x(n>⑩y(n>b5E2RGbCAP
●调用函数circonv
function yc=circonv(x1,x2,N>
%用直接法实现圆周卷积
%y=circonv(x1,x2,N>
%y:输出序列
%x1,x2:输入序列
%N:圆周卷积的长度
if length(x1>>N
error。
end
if length(x2>>N
error。
end
%以上语句判断两个序列的长度是否小于N
x1=[x1,zeros(1,N-length(x1>>]。
%填充序列x1(n>使其长度为N,序列h(n>的长度为N1,序列x(n>的长度为N2p1EanqFDPw
x2=[x2,zeros(1,N-length(x2>>]。
%填充序列x2(n>使其长度为N
n=[0:1:N-1]。
x2=x2(mod(-n,N>+1>。
%生成序列x2((-n>>N,镜像,可实现对x(n>以N为周期的周期延拓,加1是因为MATLAB向量下标只能从1开始。
DXDiTa9E3d
H=zeros(N,N>。
%生成N行N列的零矩阵
for n=1:1:N
H(n,:>=cirshiftd(x2,n-1,N>。
%该矩阵的k行为x2((k-1-n>>N end
yc=x1*H'。
%计算圆周卷积
●调用函数cirshiftd
function y=cirshiftd(x,m,N>
%直接实现序列x的圆周移位
%y=cirshiftd(x,m,N>
%x:输入序列,且它的长度小于N
%m:移位位数
%N:圆周卷积的长度
%y:输出的移位序列
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>。
•函数<1)x(n>⑤y(n>
clear all。
N1=5。
N2=4。
xn=[1 2 3 4 5]。
%生成x(n>
hn=[1 2 1 2]。
%生成h(n>
yln=conv(xn,hn>。
%直接用函数conv计算线性卷积
ycn=circonv(xn,hn,5>。
%用函数circonv计算N1点圆周卷积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('圆周卷积'>。
•函数<2)x(n>⑥y(n>
clear all。
N1=5。
N2=4。
xn=[1 2 3 4 5]。
%生成x(n>
hn=[1 2 1 2]。
%生成h(n>
yln=conv(xn,hn>。
%直接用函数conv计算线性卷积
ycn=circonv(xn,hn,6>。
%用函数circonv计算N1点圆周卷积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('圆周卷积'>。
•函数<3)x(n>⑨y(n>
clear all。
N1=5。
N2=4。
xn=[1 2 3 4 5]。
%生成x(n>
hn=[1 2 1 2]。
%生成h(n>
yln=conv(xn,hn>。
%直接用函数conv计算线性卷积
ycn=circonv(xn,hn,9>。
%用函数circonv计算N1点圆周卷积
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('圆周卷积'>。
•函数<4)x(n>⑩y(n>
clear all。
N1=5。
N2=4。
xn=[1 2 3 4 5]。
%生成x(n>
hn=[1 2 1 2]。
%生成h(n>
yln=conv(xn,hn>。
%直接用函数conv计算线性卷积
ycn=circonv(xn,hn,10>。
%用函数circonv计算N1点圆周卷积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('圆周卷积'>。
思考题:
①圆周卷积与线性卷积的关系:
若有x1(n>与x2<n)两个分别为N1与N2的有限长序列,则它们的线性卷积y1<n)为N1+N2-1的有限长序列,而它们的N点圆周卷积y2<n)则有以下两种情况:1,当N<N1+N2-1时,y2<n)是由y1<n)的前N点和后<N1+N2-1-N)点圆周移位后的叠加而成;N> N1+N2-1时,y2<n)的前N1+N2-1的点刚好是y1<n)的全部非零序列,而剩下的N-(N1+N2-1>个点上的序列则是补充的零。
RTCrpUDGiT
②线性卷积运算步骤:
求x1(n>与x2<n)的线性卷积:对x1(m>或x2<m)先进行镜像移位x1<-m),对移位后的序列再进行从左至右的依次平移x(n-m>,当n=0,1,2.…N-1时,分别将x(n-m>与x2<m)相乘,并在m=0,1,2.…N-1的区间求和,便得到y<n)5PCzVD7HxA
③圆周卷积运算步骤:
圆周卷积过程中,求和变量为m,n为参变量,先将x2(m>周期化,形成x2((m>>N,再反转形成x2((-m>>N,取主值序列则得到x2((-m>>NRN(m>,通常称之为x2(m>的圆周反转。
对x2(m>圆周反转序列圆周右移n,形成x2((n-m>>NRN(m>,当n=0,1,2,…,N-1时,分别将x1(m>与x2((n-m>>NRN(m>相乘,并在m=0到N-1区间内求和,便得到圆周卷积y(n>。
jLBHrnAILg
④用圆周移位代替线性移位的好处:
时域圆周卷积在频域上相当于两序列的DFT的相乘,而计算DFT可以采用它的快速算法——快速傅立叶变换<FFT),因此圆周卷积和线性卷积相比,计算速度可以大大加快。
xHAQX74J0X
实验总结:
通过本次实验,我掌握了线性卷积与圆周卷积软件实现的方法,并验证了两者之间的关系,同时,通过上机调试程序,进一步增强了我使用计算机解决问题的能力。
在编程过程中照葫芦画瓢是没有用的,只有真正理解程序中的精华与奥妙,才能真正掌握,把书本上的知识转换为自己的知识。
LDAYtRyKfE
申明:
所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。