圆周卷积的积分算法
基于重叠保留法的圆周卷积
![基于重叠保留法的圆周卷积](https://img.taocdn.com/s3/m/808de0800722192e4436f647.png)
1.理论知识1.1圆周卷积的定义设)(1n x 和)(2n x 为长度为N 的有限长序列,且[])()(11k X n x DFT =,[])()(22k X n x DFT =,如果()()()k X k X k Y 21=,则()()[]k Y IDFT n y =()()()()n R m n x m x N N N m -=∑-=1102 (1)证明:相当于将)(~),(~21n x n x 作周期卷积和后,再取主值序列。
将)(k y 周期延拓:)(~)(~~21k X k X k Y =)(则有: []()()⎥⎦⎤⎢⎣⎡-=-==∑∑-=-=10211021))(()(~)(~)(~)(~N m N N N m m n x m x m n x m x k Y IDFS n y在主值区间)())((,1011m x m x N m N =-≤≤ ,所以:()()()n R m n x m x n R n y n y N N m N N ⎥⎦⎤⎢⎣⎡-==∑-=1021)()()(~)( 同样可以证明:()())()()(1012n R m n x m x n y N N m N ⎥⎦⎤⎢⎣⎡-=∑-=定义式(1)为序列)(1n x 与)(2n x 的圆周卷积,习惯表示为 ()()()n n x y 21x ⊙n =从以上的证明过程也可以得出圆周卷积与周期卷积之间的关系,即有限长序列圆周卷积结果的周期延拓等于它们周期延拓后的周期卷积。
也就是说,周期卷积的主值序列是各周期序列主值序列的圆周卷积。
1.2圆周卷积的计算圆周卷积的具体步骤为:第一步:在哑元坐标上做)(1m x 与)(2m x ;第二步:把)(2m x 沿着纵坐标翻转,得到)(2m x -; 第三步:对)(2m x -做圆周移位,得()()()n R m n x N N -2;第四步:)(1m x 与()()()n R m n x N N -2对应的相同m 的值进行相乘,并把结果进行相加,得到的对应于自变量n 的一个()n y ;第五步:换另一个n ,重复第三、四步,直到n 取遍[0,N-1]中的所有值,得到完整的()n y 。
线性卷积与圆周卷积的计算
![线性卷积与圆周卷积的计算](https://img.taocdn.com/s3/m/c59d55b6c77da26925c5b066.png)
数字信号处理实验报告
实验名称:线性卷积与圆周卷积的计算(实验四)
专业班 级: 学生姓名: 学 号: 指导教师:
二○一 年 月 日
1
一、 实验原理 1.线性卷积
当系统输入序列为 x(n),系统的单位冲激响应为 h(n),输出序列为 y(n),则线性时不变系统 y(n) = x(n)*h(n). 2.圆周卷积
圆周移位代替线性移位的好处: 时域圆周卷积在频域上相当于两序列的 DFT 的相乘,而计算 DFT 可 以采用它的快速算法——快速傅立叶变换(FFT),因此圆周卷积和线 性卷积相比,计算速度可以大大加快。
7
调试中所遇到的问题: 图形输出与算得的不符,经过结果逆推回去,发现计算圆周卷积的一 个矩阵没有转置。 圆周卷积与线性卷积的关系: 根据实验结果,可以发现,当 N>=L+P-1 时,圆周卷积等于线性卷积; 而当 N<L+P-1 时,圆周卷积等于两个序列的线性卷积加上时间的混 叠。
6
线性卷积的运算步骤: 求 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)。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
圆周卷积通用程序
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function yc = circonv(x1,x2,N) % 定义函数 if length(x1)>N
卷积的数学公式
![卷积的数学公式](https://img.taocdn.com/s3/m/97a23f2aa9114431b90d6c85ec3a87c240288a8e.png)
卷积的数学公式
卷积是一种在数学和工程中广泛应用的技术,它是一种数学运算,用于将两个函数或信号相乘,然后对结果进行积分。
卷积的数学公式通常表示为:
(f * g)(t) = ∫f(τ)g(t - τ)dτ
其中,f和g是两个函数,*表示卷积运算符,t是自变量,τ是积分变量。
公式的意思是,将函数f和g相乘,然后将结果在t上积分。
卷积的应用非常广泛,它在信号处理、图像处理、物理学、工程学和其他领域中都有重要的作用。
例如,在信号处理中,卷积可以被用来将两个信号混合在一起,或者将一个信号滤波以去除噪声。
在图像处理中,卷积被用来模糊、锐化、增强图像的特定部分或提取图像的特征。
在物理学中,卷积可以被用来计算两个物理系统的响应,从而预测它们的效果。
总之,卷积是一种非常有用的数学公式,具有广泛的应用。
掌握卷积的数学公式可以帮助我们更好地理解和应用它在各种领域中的
作用。
- 1 -。
线性卷积与圆周卷积的计算(杭电)
![线性卷积与圆周卷积的计算(杭电)](https://img.taocdn.com/s3/m/19dc3822b84ae45c3a358c1c.png)
信号、系统与信号处理实验Ⅱ实验报告实验名称:线性卷积与圆周卷积的计算一、实验目的1、通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。
2、掌握线性卷积与圆周卷积软件实现的方法,并验证两者之间的关系。
二、实验内容与要求已知两个有限长序列: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)*h(n)。
2.编制一个计算圆周卷积的通用程序,计算上述4种情况下两个序列x(n)与h(n)的圆周卷积。
3.上机调试并打印或记录实验结果。
4.将实验结果与预先笔算的结果比较,验证真确性。
三、实验程序与结果1、计算两个线性卷积的通用程序,计算x(n)*h(n)。
xn=[1 2 3 4 5]hn=[1 2 1 2]N=length(xn);M=length(hn);L=N+M-1;for(n=1:L)y(n)=0;for(m=1:M)k=n-m+1;if(k>=1&k<=N)y(n)=y(n)+hn(m)*xn(k);endendendy=conv(xn,hn);ny=0:L-1;stem(ny,y) ;xlabel('n ');ylabel('y(n) ');figurestem(ny,yn) ;xlabel('n ');ylabel('y ');根据定义编写循环实现线性卷积结果:01234567n y (n )Conv 函数实现线性卷积结果:01234567n y2. 计算圆周卷积的通用程序,计算上述4种情况下两个序列x(n)与h(n)的圆周卷积。
主程序:clear allN=[5 6 9 10];xn=[1 2 3 4 5];hn=[1 2 1 2];yc1=circonv(xn,hn,N(1))yc2=circonv(xn,hn,N(2))yc3=circonv(xn,hn,N(3))yc4=circonv(xn,hn,N(4))figurestem(0:N(1)-1,yc1);xlabel('时间序号n');ylabel('信号幅度');title('5点圆周卷积');figurestem(0:N(2)-1,yc2);xlabel('时间序号n');ylabel('信号幅度');title('6点圆周卷积');figurestem(0:N(3)-1,yc3);xlabel('时间序号n');ylabel('信号幅度');title('9点圆周卷积');figurestem(0:N(4)-1,yc4);xlabel('时间序号n');ylabel('信号幅度');title('10点圆周卷积');定义函数:function yc=circonv(x1,x2,N)if length(x1)>Nerror('N必须大于等于x1的长度'); endif length(x2)>Nerror('N必须大于等于x2的长度'); endx1=[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:NH(n,:)=cirshiftd(x2,n-1,N);yc=x1*H';function y=cirshiftd(x,m,N)if length(x)>Nerror('x 的长度必须小于N');endx=[x,zeros(1,N-length(x))];n=[0:1:N-1];y=x(mod(n-m,N)+1);时间序号n 信号幅度5点圆周卷积00.51 1.52 2.533.54 4.55时间序号n 信号幅度时间序号n 信号幅度时间序号n 信号幅度四、仿真结果分析编写的线性卷积程序和conv 函数的结果相同,也与笔算结果相同。
卷积公式理解
![卷积公式理解](https://img.taocdn.com/s3/m/333bd7c670fe910ef12d2af90242a8956becaac9.png)
卷积公式是信号处理、图像处理等领域中常用的一种数学工具。
卷积公式可以表示为:
f(t) * h(t) = ∫f(τ)h(t - τ)dτ
其中,f(t)和h(t)是两个函数,* 表示卷积运算。
这个公式的理解可以从以下几个方面入手:
1. 卷积是一种积分运算,它涉及到两个函数的相乘然后对时间积分。
2. 在卷积公式中,f(τ)是卷积的一个输入函数,h(t - τ)是另一个输入函数,它们在时间上相互滑动,并在每个位置相乘,然后将结果积分。
3. 卷积的结果是一个新的函数,它是输入函数f(t)和h(t)在时间上的重叠部分的加权叠加。
权重取决于两个函数在重叠部分的相对位置。
4. 在图像处理中,卷积可以看作是对图像的每个像素点加上一个由模板函数确定的权重,这个权重取决于模板函数与图像在该像素点的位置的相对位置。
5. 在信号处理中,卷积可以看作是对信号的每个时间点加上一个由滤波器函数确定的权重,这个权重取决于滤波器函数与信号在该
时间点的相对位置。
总的来说,卷积公式是一种描述两个函数在时间上相互作用的数学工具,它在信号处理、图像处理等领域中有广泛的应用。
圆周卷积
![圆周卷积](https://img.taocdn.com/s3/m/59f8789bf12d2af90242e699.png)
五. 圆周卷积定理 ( Circular convolution )
1. 圆周卷积和的定义:
两个长度为 N 的序列 的如下计算称为圆周卷积和,用 符号 N 表示: (N表示圆周卷积的点数)
x1(n)
N
x2
(n)
N 1 m0
将 Y (k) 周期延拓: Y~(k) X~1(k)X~2(k)
则有: ~y (n) IDFS Y~(k)
N 1
~x1 (m)
~x2
(n
m)
m0
N 1
x1((m))N x2 n mN m0
在主值区间 0 m N 1, x1((m)) N x1(m) ,所以:
y(n) ~y(n)RN (n)
其中
k e j
k
z
z e j
1 zN
N (1WNk z 1) ze j
1 N
1 e jN
j k 2
1 e N
k e j
1 N
1 e jN e j 2k
j k 2
1 e N
1 1 e j (N 2k ) j k 2
N 1e N
j N 2k
N
1
W (mn N
)
k
k 0
x(n rN ) r
利用性质
N 1 j 2 pk N ,p rN
eN
k 0
0
,其他
p
由 ~xN (n) x(n rN ) 可知: r ~xN (n) 是 x(n) 以 N 为周期的周期延拓; 也就是说: 频域抽样造成时域周期延拓。
3. 频域抽样定理:
x1
第八讲 DFT性质-圆周卷积
![第八讲 DFT性质-圆周卷积](https://img.taocdn.com/s3/m/957dc30216fc700abb68fc4d.png)
M 1 m 0
L 1
M 1 m 0
x( m ) y(( n m )) R ( n )
L L
x( m ) y( n m rL )RL ( n )
r
r m 0
x( m ) y( n m rL )R ( n ) x( n )* y( n rL )R ( n )
关于原点的纵坐标 的对称性
• 圆周共轭偶(奇)对称序列
1 * xep (n) xep ( N n) x(n) x * ( N n) 2 1 * xop (n) xop ( N n) x(n) x* ( N n) 2
* xe (n) xe (n)
N 1
N点
WN e
j 2 N
1 IDFT [ X (k )] x(n) [ N
n 0 N 1 k 0
X (k )WN nk ]RN (n )
DFT是一种数学上的映射关系,反映了时域上 的 N点与频域上的 N 点之间的对应关系
例: N点 x ( n ) N点X ( k ) 把x ( n )加长补零为长度为 的序列y ( n ) rN 0 n N 1 x(n) y (n) N n rN 1 0 问Y ( k )与X ( k )的关系
2
1
1
0 123 4 5
n
…
0 123
…n
(2)用圆周卷积实现线性卷积 ∵L 是可以人为选择的,∴可通过选择适当的 L 值,使 x(n) h(n) x(n) h(n) 例如选 L=8。
… … …
1
1
0 123
x(m)
11圆周卷积
![11圆周卷积](https://img.taocdn.com/s3/m/e6bba669f4335a8102d276a20029bd64783e62f2.png)
11圆周卷积圆周卷积圆周运算其实圆周运算是针对周期序列⽽⾔的,由于周期序列在每⼀个周期内的取值都相同,所以我们只关注它的主值区间,⽐如,如果⼀个序列的长度为N的话,那么它的主值区间就是0\leq n\leq N-1。
虽然圆周运算是源⾃于对周期信号的处理,但是经过⼀般化的扩展之后,对有限长序列也可以进⾏圆周运算。
具体就是,你可以把有限长序列以它的长度为周期,进⾏周期延拓成⼀个周期序列,然后进⾏运算,然后取其主值区间进⾏观察得到的结果。
圆周反褶圆周反褶就是⼀个周期序列进⾏反褶之后,取其主值区间序列。
因为⼀个周期序列反褶之后还是周期序列,所以这么做是合理的。
假设⼀周期信号在其主值区间的取值为x[n]={x[0],x[1],x[2],x[3],x[4]}即该序列的周期为5,那么反褶后的信号为(只关注主值区间)\begin{aligned} y[0]&=x[0]=x[0] \\ y[1]&=x[-1]=x[5-1]=x[4] \\ y[2]&=x[-2]=x[5-2]=x[3] \\ y[3]&=x[-3]=x[5-3]=x[2] \\ y[4]&=x[-4]=x[5-4]=x[1] \end{aligned}为了⽅便⽤数学的语⾔描述这种运算,⾸先看⼀种数学上的模运算运算,⾸先看⼏个模运算的例⼦:\begin{aligned} 2 \,mod \, 5 =2 \\ 6 \, mod \, 5 = 1 \\ -3 \, mod \, 5 = 2 \end{aligned}不知道⼤家看出来没有,模运算其实就是求余,2对5的余数就是2,6对于5的余数是1,⽽-3对5的余数应该为(-3+5)\, mod\, 5=2(加上5之后不影响余数的⼤⼩,因为5⼀直能整除5,5对5的余数⼀直是0)我们把2 \, mod\, 5记作<2>_5,所以我们定义圆周反褶为y[n]=x[<-n>_N]其中N为序列x[n]的长度。
圆周卷积与周期卷积、线性卷积的关系与计算
![圆周卷积与周期卷积、线性卷积的关系与计算](https://img.taocdn.com/s3/m/53a126d25022aaea998f0f1a.png)
圆周卷积与周期卷积、线性卷积的关系及计算一、三者关系设:1122()01()01x n n N x n n N ≤≤-≤≤-N :圆周卷积的点数⏹ 圆周卷积是周期卷积的主值序列。
周期卷积:1120()()()N m y n x m x n m -==-∑ (1)圆周卷积:1120()()()[()(())]()N c N N N m y n y n R n x m x n m R n -===-∑1210[()(())]()N N N m x m x n m R n -==-∑ (2)注意:(2)式直接使用的前提是圆周卷积的点数N 应满足:12max[,]N N N ≥(一般题目均符合此种情况)⏹ 周期卷积是线性卷积的周期延拓。
线性卷积:1112120()()*()()()N l m y n x n x n x m x n m -===-∑212121()()()*()N m x m x n m x n x n -==-=∑ (4)圆周卷积与线性卷积的关系:()[()]()c l N r y n y n rN R n ∞=-∞=+∑ (5)注意:上述关系式对任意长度的圆周卷积均适合。
二、举例说明1、对于12max[,]N N N ≥的情况,各教材例题很多,不再举例。
2、12N N N N <<或的情况。
习题8.已知序列()()2(1)(4)3(5)x n n n n n δδδδ=+-+-+-,4()()y n R n =,求:(1)()()*()z n x n y n =(2)()()f n x n =○5()y n (5点圆周卷积)。
解:(){1,2,0,0,4,3},(){1,1,1,1}x n y n ==(1)()()(){1,3,3,3,3,4,4,4,3}z n x n y n =*=(过程略) (2)()()f n x n =○5()y n (5点圆周卷积),N =5。
常见卷积计算公式
![常见卷积计算公式](https://img.taocdn.com/s3/m/d0ca08506fdb6f1aff00bed5b9f3f90f77c64d6b.png)
常见卷积计算公式
常见的卷积计算公式有两种,一种是离散卷积计算公式,另一种是连续卷积计算公式。
离散卷积计算公式:
卷积操作是两个序列之间的按元素乘积累加的运算,计算公式为:
y[n] = ∑(x[k] * h[n-k])
其中,y[n]为卷积结果的第n个元素,x[k]为输入序列的第k 个元素,h[n-k]为滤波器(卷积核)序列翻转后的第n-k个元素。
连续卷积计算公式:
卷积操作是两个函数之间的积分运算,计算公式为:
y(t) = ∫(x(τ) * h(t-τ)) dτ
其中,y(t)为卷积结果的函数,x(τ)为输入函数,h(t-τ)为滤波器(卷积核)函数翻转后的函数。
需要注意的是,在实际操作中,离散卷积计算通常是对离散信号(如图像)进行的,而连续卷积计算通常是对连续信号进行的。
卷积积分的步骤
![卷积积分的步骤](https://img.taocdn.com/s3/m/598f48157275a417866fb84ae45c3b3567ecdda3.png)
卷积积分的步骤
卷积积分图解法的步骤依次为:1.换元;2.翻转;3.平移;4.相乘;5.积分。
卷积积分图示法的五个步骤:
1、公式如下:卷积积分公式是(f *g)∧(x)=(x)·(x),卷积是分析数学中一种重要的运算。
2、设f(x),g(x)是R1上的两个可积函数,作积分,可以证明,关于几乎所有的x∈(-∞,∞),上述积分是存在的。
3、这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为f与g的卷积,记为h(x)=(f *g)(x)。
4、容易验证,(f *g)(x)=(g *f)(x),并且(f *g)(x)仍为可积函数。
卷积与傅里叶变换有着密切的关系。
6、以(x) ,(x)表示L1(R)1中f和g的傅里叶变换,那么有如下的关系成立:(f *g)∧(x)=(x)·(x),即两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换。
7、这个关系,使傅里叶分析中许多问题的处理得到简化。
8、由卷积得到的函数(f *g)(x),一般要比f,g都光滑。
9、特别当g为具有紧支集的光滑函数,f 为局部可积时,它们的卷积(f *g)(x)也是光滑函数。
10、利用这一性质,对于任意的可积函数,都可以简单地构造出一列逼近于f 的光滑函数列fs(x),这种方法称为函数的光滑化或正则化。
11、卷积的概念还可以推广到数列、测度以及广义函数上去。
圆周卷积
![圆周卷积](https://img.taocdn.com/s3/m/9b98bcb165ce0508763213e2.png)
重叠相加法补点的方法是在分段后的每段 短序列和原短序列h(n)后边添加零值点,补到 长度为2的整次幂。 重叠保留法补点的方法是在原短一段前边补上(M-1)个零值,其他每段前边 补上前一段保留下的(M-1)个x(n)值,使其长 度为2的同一整次幂。
圆周卷积理论基础
当我们用FFT快速算法计算一个短序列h(n)和一个 长序列x(n)的线性卷积时,需要把它们都补零值点成 为2的整次幂长度的序列,计算量较大。 所以我们把长序列x(n)分成长度和短序列h(n)相 当的若干端。每段长L个点,L=N-M+1。N为大于短序列 长度M的2的整次幂数. x(n)分段后的短序列,若要用FFT求其与原短序列 h(n)圆周卷积来代替线性卷积,仍然需要把其长度补为 2的整次幂。根据补点方法的不同,可分为重叠相加法 和重叠保留法。
重叠相加法补点的方法是在分段后的每段短序列和原短序列hn后边添加零值点补到重叠保留法补点的方法是在原短序列hn后边补零点至2的整次幂而在分段后的短序列第一段前边补上m1个零值其他每段前边补上前一段保留下的m1个xn值使其长度为2的同一整次幂
圆周卷积在信号处理系统中的 应用
——————课程设计报告 091041237张加林 091041236曾恒 091041224施晋宁
数字信号处理实验4——线性卷积与圆周卷积的计算
![数字信号处理实验4——线性卷积与圆周卷积的计算](https://img.taocdn.com/s3/m/df007b4f1ed9ad51f01df265.png)
22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
' % 直接实现序列x的圆周移位 % y=cirshifed(x,m,N) % x:输入序列,且它的长度小于N % m:移位位数 % N:圆周卷积的长度 % y:输出的移位序列 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); % 主程序,axis 的坐标范围根据各自的圆周卷积后的长度进行调整 xn=[1,2,3,4,5]; hn=[1,2,1,2]; yln=conv(xn,hn); ycn=circonv(xn,hn,5); ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1); stem(ny1,yln); subplot(2,1,2); stem(ny2,ycn); axis([0,5,0,25]);
数字信号处理实验 ——线性卷积与圆周卷积的计 算
通信中英2班 潘奕铭(16086214)
实验目的
通过编程、上机调试程序,进一步增强使用计算机解决问题的能力。 掌握线性卷积与圆周卷积软件的实现方法,并验证两者之间的关系。
基本原理
线性卷积:
圆周卷积:设两个有限长序列 如下程序:
1. 2. 3.
和
,均为 点长,则它们的 的圆周卷积等价于
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算步骤:
a.事先准备好滤波器参数H(k)=DFT[h(n)],N点
b.用N点FFT计算Xi(k)=DFT[xi(n)]
c.Yi(k)=Xi(k)H(k)
程序:
function y = overlap_add(x1,x2,N)
%重叠相加法实现
%将高点数DFT转化为低点数DFT
M = length(x2);%获得x2(n)的长度
if N<M
N = M+1;
end
L = M+N-1;
Lx = length(x1);
T = ceil(Lx/N);%确定分段数
其次,我要感谢帮助过我的同学,同时也感谢学院为我提供良好的做课程设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学!
参考文献
[1]刘泉,阙大顺,郭志强.数字信号处理.北京:电子工业出版社,2009
[2]唐昌建.Matlab编程基础与应用.四川:四川大学网络教育学院,2003
[3]陈怀琛.数字信号处理教程-Matlab释疑与实现.北京:电子工业出版社,2004
2.2圆周卷积计算过程
具体步骤如下:
(1)在二元坐标上做出 与 ;
(2)把 沿着纵坐标翻转,得到 ;
(3)对 做圆周移位,得到 ;
(4) 与 对应相同的m的值进行相乘,并把结果相加,得到对应于自变量n的一个 ;
(5)换另一个n,重复以上两步,直到n取遍0到N-1所有的值,得到完整的 。
3重叠相加法原理
这次课程设计主要用到了matlab软件,这款软件在对数字信号处理的建模、编程、分析、实现等方面功能非常强大,由于之前在实验课中我们曾经接触过matlab,因此这次做起来相对轻松一些。我选做的题目是基于重叠相加法的圆周卷积,在开始进行程序设计之前,我先对理论知识进行了回顾,在熟悉了圆周卷积以及重叠相加法的原理以及matlab的应用环境后,我开始了软件的设计,虽说之前对matlab有所了解,但对软件里面的程序包并不了解,所以编程的过程中也遇到过很多问题,比如找不到需要用的函数,但通过查看软件自带的帮助信息我很快能够找到自己想要的东西,在熟悉了原理后,程序设计并不复杂,但程序的调试却花了很长时间,其中也遇到了一些莫名其妙的问题,调试成功后第二次再打开就不行了,经过了长时间的调试,并且在老师和Leabharlann 学的帮助下,我换了个软件终于解决了。
%利用循环卷积计算线性卷积
%循环卷积采用频域计算方法,以FFT代替DFT,降低运算量
x1k= fft(x1,L);%x1做L点FFT
x2k= fft(x2,L);%x2做L点FFT
yk = x1k.*x2k;%频域相乘
y = ifft(yk);%FFT反变换得循环卷积结果
end
4.3重叠相加部分
重叠相加法程序流程图:
由此表明,只要将x(n)的每一段分别与h(n)卷积,然后再将这些卷积结果相加起来就可得到输出序列,这样,每一段的卷积都可用上面讨论的快速卷积来计算。先对h(n)及xi(n)补零,补到具有N点长度,N=N1+N2-1。 一般选择N=2M,然后用基2 FFT算法通过正反变换计算
yi(n)=xi(n)*h(n)
t = zeros(1,M-1);%生成1行M-1列的全零矩阵
x1 = [x1,zeros(1,(T+1)*N-Lx)];%不足部分补0
y = zeros(1,(T+1)*N);%定义输出序列,初始化为全0
for i=0:1:T
xi = i*N+1;
x_seg = x1(xi:xi+N-1);
y_seg = circular_conv(x_seg,x2,L);%计算每段的圆周卷积
n=circular_conv(x1,x2,L);%线性卷积直接得到的结果
subplot(4,1,1);
a = 1:13;
stem(a,x1)
title('x1序列')
subplot(4,1,2);
b = 1:3;
stem(b,x2)
title('x2序列')
subplot(4,1,3);
c = 1:15;
d.用N点IFFT求 yi(n)=IDFT[Yi(k)]
e.将重叠部分相加
图3.1重叠相加法的分段示意图
x1(n)后M-1点 y(n)
前N点
L=N+M-1 h(n)
图3.2 重叠相加法算法示意图
4MATLAB程序设计
基于以上对原理的分析,这里采用FFT算法实现重叠相加法的圆周卷积计算。程序主要由计算圆周卷积的函数以及重叠相加函数和主程序三部分组成。
y_seg(1:M-1) = y_seg(1:M-1)+t(1:M-1);%重叠相加
t(1:M-1) = y_seg(N+1:L);
y(xi:xi+N-1) = y_seg(1:N);
end
y=y(1:Lx+M-1);
end
4.4主程序
x1=[1:1:13];
x2=[-2,1,3];
L=15;
m=overlap_add(x1,x2,L);%重叠相加法得到的结果
stem(c,m)
title('基于重叠相加法的圆周卷积结果')
5MATLAB实现
图5.1 圆周卷积m文件
图5.2重叠相加法m文件
图5.3主程序m文件
图5.4 程序运行结果
图5.5基于重叠相加法的圆周卷积结果表格
心得体会
数字信号处理是我们电信专业非常重要的一门课程,学好它对以后的进一步学习或者工作都有至关重要的作用,经过了一个学期的理论课程的学习,我感觉自己还停留在做题目上,而对理论知识的应用却知之甚少,因此,这次课程设计对我来说是一个非常好的机会来进一步认识理论知识的具体意义,怀着这种心态,我从对理论知识的回顾到设计仿真,每一步都非常认真的对待,我从中也学到了不少。
2圆周卷积原理
2.1圆周卷积定义
有两个有限长序列 和 。设 和 的长度分别为N1和N2,N=max[N1,N2]。
若 、 的离散付里叶变换分别为 、 ,且有
= ·
则
=IDFT[ ] =
上式即为序列 与 的圆周卷积,习惯表示为 = ⊙ 。
可以看出,圆周卷积和周期卷积过程一样,只不过这里要取结果的主值序列。公式中的 只在m=0到N-1范围内取值,因而它就是圆周移位,所以这一卷积和称为圆周卷积。圆周卷积与周期卷积之间的关系,就是有限长序列圆周卷积结果的周期延拓,等于它们周期延拓后的周期卷积。换句话说,周期卷积的主值序列,是各周期序列主值序列的圆周卷积。周期卷积得到是周期序列,圆周卷积得到的是有限长序列,而且长度等于参加卷积的序列的长度。
(2)计算每一分段的大小N
(3)填充序列使得循环中对序列的索引不会超出范围
(4)计算分段数K
(5)对序列进行分段调用conv()函数计算圆周卷积
(6)各段重叠相加
(7)取出实际的输出序列
4.2圆周卷积部分
计算圆周卷积函数的流程图:
程序:
function y = circular_conv( x1,x2,L )
4.1程序设计思路
函数conv(x1,x2,L)设计
(1)x1(n)进行N点快速傅里叶变换得X1k
(2)x2(n)进行N点快速傅里叶变换得X2k
(3)进行频域相乘Yk=X1k*X2k
(4)对Yk进行反变换得到时域卷积结果y(n)
函数overlap_add(x,h,N)设计
(1)首先取圆周卷积的周期L(即进行L点的快速傅里叶变换)
虽然调试的过程并不顺利,但成功后的喜悦是无穷的。我从中学到了很多东西,这些都是书本上很难遇到的,当然最终能够获得成功也离不开老师的帮助,所以在此感谢老师对我的帮助
致谢
在这次课程设计过程中,我得到了许多人的帮助。
首先我要感谢吴巍老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
实际应用中通常参加卷积的两个序列的长度相差较大,这样长度较小的就需要补很多0,就需要较大的存储空间,运算时间也会变长,常用的办法有重叠相加法和重叠保留法。本次设计采用重叠相加法。
设x(n)为无限长序列,并假定xi(n)表示第i段x(n)序列:
则输入序列可表为:
于是输出可分解为: = * =
其中 = *
[4]张志涌.Matlab教程.北京:北京航空航天大学出版社,2005
[5]曹弋.matlab教程与实例.北京:机械工业出版社,2008