MATLAB实现 有限长序列的线性卷积和圆周卷积

2022-07-20 14:23:02 浏览数 (2)

一、实验目的 1.通过实验加深对线性卷积和圆周卷积的认识. 2.知道如何用圆周卷积来计算线性卷积.

二、实验原理及方法 有限长序列卷积有两种形式:线性卷积和圆周卷积.时域圆周卷积在频域上为两序列的 DFT  相乘,因而有限长序列的圆周卷积可以在时域直接计算,也可以在频域中计算.由于 DFT 有快速算法(FFT),当  N 很大时在频域计算的速度上具有很大优越性.然而现实中要解决的实际问题是要计算两个有限长序列的线性卷积,如信号通过线性系统,系统的输出 y(n) 是输入信号 x(n)与系统抽样响应 h(n)的线性卷积: y(n) = x(n) * h(n) ,然而,在一定的条件下,可以使圆周卷积等于线性卷积。. 设 x1 (n) 和 x2 (n) 是两个长度分别为 M 和 N 的有限长序列,则其线性卷积为

y₁(n) = x₁(n) * x₂ (n)

y1 (n) 是一个长度为 L₁=N M-1 点的有限长序列.

将 x₁(n) 和 x₂ (n) 均补零成 L 点的有限长序列,其中 L≥max(M,N),则其L 点的圆周卷积 为

由此可见,L 点的圆周卷积 y₂ (n) 是线性卷积 y₁(n) 以 L 为周期,进行周期延拓后在区间 0 到 L-1 范围内所取的主值序列.若 L≥L₁,则有 y1(n) = y2 (n) 。于是,可使得圆周卷积等于线性卷积而不产生混迭的充要条件是 L≥N M-1。

三、实验内容 1、 若有两序列 x₁(n) = δ (n − 1) 2δ (n − 1) 3δ (n − 2) ,长度N₁=3;                           x₂ (n) = 4δ (n) 3δ (n − 1) δ (n − 2) δ (n − 1) ,长度N₂=4.

用 MATLAB 编程:         1)计算两序列的线性卷积;         2)分别计算两序列N=4,5,6,7,8 点的圆周卷积 参考流程图:

 四、实验报告要求 1.简述实验原理及目的. 2.给出所编制的程序,并绘出实验所得出的图形. 3.分析线性卷积和圆周卷积之间的关系。

代码语言:javascript复制
clc;clear;
N1=3;N2=4;
n1=0:N1-1;n2=0:N2-1;
x1=zeros(1,N1);
x2=zeros(1,N2);
x1(2)=1 2;
x1(3)=3;
x2(1)=4;
x2(2)=3 1;
x2(3)=1;
y1=conv(x1,x2);
n01=min(n1) min(n2);
n02=max(n1) max(n2);
ny=[n01:n02];
subplot(421),stem(n1,x1,'.');title('x1(n)');
subplot(422),stem(n2,x2,'.');title('x2(n)');
subplot(423),stem(ny,y1,'.');title('线性卷积');
for N=4:8
n=0:N-1;
x3=zeros(1,N);x4=x3;
x3(find(n<N1))=x1;
x4(find(n<N2))=x2;
k=n;
xk1=x3*exp(-j*2*pi/N).^(n'*k);
xk2=x4*exp(-j*2*pi/N).^(n'*k);
yk2=xk1.*xk2;
y2=yk2*(exp(j*2*pi/N)).^(n'*k)/N;
y2=abs(y2);
subplot(4,2,N),stem(k,y2,'.');
title('圆周卷积');
end

0 人点赞