ch2_3DFT计算卷积
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x2 x2
[2] [3]
1 0 1 1 1 2
1 1
1 1
0 1
1 0
1 0
3 2
0 1 1 1 1 2
1
x1[(n)4]
n 0123
2020/4/20
11
6点循环卷积的矩阵表示
y[0] x1[0]
y[1]
x1[1]
y[2]
y[3]
x1[2]
0
y[4] 0
y[5]
0
6
9
4
3 12
01 2
79
y[k] yn [k nL]
4 3 12
2020/4/20
01 23
k k
k
27
利用MATLAB实现分段卷积
fftfilt(h,x,n) h: FIR filter x: input sequence n 为DFT点数,一般取2的整数次幂
2020/4/20
28
利用MATLAB实现分段卷积
解:
x1[k]和x2[k] 6点循环卷积
x1[k]和x2[k] 线性卷积
线性卷积 y6[k]={1,2,2,2,1,1}
x1[k] x2 [k] {1, 2, 2, 2,1,1}
2020/4/20
13
利用DFT计算序列线性卷积的步骤
若x[k]的长度为N,h[k]的长度为M,则 L=N+M1点循环卷积等于x[k] 与h[k]的线性卷积。
% Calculate Linear Convolution by DFT x = [1 2 0 1]; h = [2 2 1 1]; % determine the length for zero padding L = length(x)+length(h)-1; % Compute the DFTs by zero-padding XE = fft(x,L); HE = fft(h,L); % Determine the IDFT of the product y1 = ifft(XE.*HE);
20
结论
若x1[k]为 M 点序列, x2[k]为L 点序列 , L>M 则L点循环卷积 x1[k] L x2[k]
k=0 ~(M2), 前M1个点不是线性卷积的点
k= (M1) ~( L1) , LM+1个点与线性卷积的点对应 线性卷积 L ~( L+M2 )后M 1点没有计算
2020/4/20
24
长序列和短序列的线性卷积
1. 重叠相加法(overlap add)记 : yn[k] xn[k] h[k]
x[k] h[k] xn[k nL] h[k] yn[k nL]
n0
n0
y0[k]的非零范围
0k LM 2
y1[kL]的非零范围
L k 2L M 2
序列 y0[k], y1[k]的重叠部分 L k L M 2
重叠的点数
L+M2L+1=M1
依次将相邻两段的M1个重叠点相加,即得到最 终的线性卷积结果。
2020/4/20
25
重叠相加法分段卷积举例
h[k] 1
M=4
0 1 2 M-1
k
x[k] 1
L=7
2020/4/20
012
L1
k
26
重叠相加法分段卷积举例
y0 [k ]
12
4 3
01 23
y1[k L]
2020/4/20
16
问题讨论
若x1[k]为 M 点序列, x2[k]为L 点序列 , L>M
x1[k ]
x2 [k ]
k
M1
k L1
x1[k] L x2[k]中哪些点不是线性卷积的点?
2020/4/20
17
x1[n]
x2[n]
M1
x1[(n) L ]RL[n]
补L-M 个0
n
n L1
x1[(1 n)L ]RL[n]
1
x1[n]
1
x1[1n]
1
x1[2n]
1
x1[3n]
n
n
n
n
2 1 0
1 1
2
3
1
x1[(n)5]
1
x1[(1n)5]
1
x1[(2n)5]
n
n
n
01234
01234
01234
1
x1[(3n)5]
1
x1[(4n)5]
01234 2020/4/20
n 01234
n
x[nຫໍສະໝຸດ Baidu=x[k-n]
7
卷积的图
6点循环卷积
2020/4/20
5
卷积的图解
线性卷积
x1[n] 1 012
x2[n] 1
n
n
0123
y1[k] {1, 2, 2, 2,1,1} y2[k] {2, 3, 2, 2}
1
x1[n]
n 2 1 0
1
x1[1n]
n 1 1
1
x1[2n] 4点1循环卷积x1[3n]
n
n
2
3
1
x1[(n)4]
n 0123
x1[1]
x1[0]
x2[0]
x2[1]
x1[M 1] x1[M 2] x1[0]
x2
[L
1]
x1[M 1] x1[0] x1[0]
x1[2] x1[1] x1[0]
0
0
x1[M 1] x1[M 2] x1[M 3] x1[0] 0
x1[M 1] x1[M 2] x1[1] x1[0] 0
2020/4/20
15
直接计算与由DFT间接计算结果比较
A mpl itu de Am pl itu de
Result of Linear Convolution 6 4 2
x 10-15 3
Error Magnitude
2
1
0 0
1
2
3
4
5
6
00
1
2
3
4
5
6
Time index k
Time index k
0
0
0
0
0
x1[M 1] x1[0] x1[0]
x1[2] x1[1] x1[0]
0 0
0 0
x1[M 1] x1[M 2] x1[M 3] x1[M 4] 0 0
x1[M 1]
x1[M 2] x1[M 3]
x1[0]
x2
[
L
1]
2020/4/20
数字信号处理
(Digital Signal Processing)
信号与系统系列课程组 国家电工电子教学基地
2020/4/20
1
离散傅里叶变换(DFT)
问题的提出 有限长序列的傅里叶分析 离散傅里叶变换的性质 利用DFT计算线性卷积 利用DFT分析信号的频谱
2020/4/20
2
利用DFT计算序列线性卷积
x[k] 补LN零 xL[k] L点DFT h[k] 补LM零 hL[k] L点DFT
y[k ]
L点IDFT
xL[k] hL[k] x[k] h[k] P70,
2020/4/20
图2-8 14
例:利用MATLAB由DFT计算x[k]* h[k]。 x[k]={1, 2, 0, 1}, h[k]={2, 2, 1, 1}
% Generate the noise sequence
N = 64; d = rand(N,1)-0.5;
% Generate the uncorrupted sequence and add noise
for m = 1:1:N,
s(m) = 2*(m-1)*((0.9)^(m-1));
x(m) = s(m) + d(m);
end
% the length of moving average filter
M = 4;
% Generate the moving average filter coefficients
1
x1[(n)4]
n 0123
1
x1[(1n)4]
n 0123
1
x1[(2n)4]
n 0123 2020/4/20
1
x1[(3n)4]
n 0123
x[n]=x[k-n]
6
卷积的图解
5点循环卷积
x1[n] 1 012
x2[n] 1
n
n
0123
y1[k] {1, 2, 2, 2,1,1} y3[k ] {2, 2, 2, 2,1}
x1[0] x1[1] x1[2]
0 0
1 11 11 01
x1[0]
x1[1] x1[0]
x1[2] x1[1] x1[0]
0 x1[2] x1[1]
1 1
1
2
0 2
1
2
1 0 2
1 1 0 1
x2[0]
x2
[1]
x2 x2
[2] [3]
x1[0]
0 0
1
1
x1[(3n)6]
n 012345
1
x1[(4n)6]
n 012345
x1[(5n)6]
1
n
n
n
012345
012345
012345
2020/4/20
8
例:x1[k]={1,1,1}, x 2[k]={1,1,0,1} , 计算 (1) x1[k]和x2[k]的线性卷积; (2) x1[k]和x2[k]的4点循环卷积; (3) x1[k]和x2[k]的5点、6点和7点循环卷积。
0 x1[0] x1[1] x1[2]
0 0
0 0 x1[0] x1[1] x1[2] 0
0 0 0 x1[0] x1[1] x1[2]
x1[2] 0 0 0
x1[0] x1[1]
x1[1] x1[2]
0
0
0
x1[0]
x2 [0]
x2
[1]
xx22[[32]]
0
0
1 0 0 0 1 1 1 1
21
结论
在阴影区没有周期延拓序列的混叠,因而这一范围 内的圆周卷积和才能代表线性卷积和。
2020/4/20 22
长序列和短序列的线性卷积
直接利用DFT计算的缺点: (1) 信号要全部输入后才能进行计算,延迟太多。 (2) 内存要求大。 (3) 算法效率不高。
解决问题方法:采用分段卷积 分段卷积可采用重叠相加法和重叠保留法。
两个有限长序列的线性卷积 利用DFT计算序列线性卷积的步骤 长序列和短序列的线性卷积
2020/4/20
3
两个有限长序列的线性卷积
问题提出: DFTx1[k] x2[k] X1[m]X2[m]
实际需要: LTI系统响应 y[k]=x [k]h[k] 可否利用DFT计算线性卷积?
2020/4/20
4
x1[n]
n 2 1 0
10
4点循环卷积的矩阵表示
y[0] x1[0]
y[1]
x1[1]
y[2]
y[3]
x1[2] x1[3]
x1[3] x1[0] x1[1] x1[2]
x1[2] x1[3] x1[0] x1[1]
x1[1] x2[0]
x1[2]
x2
[1]
xx11[[03]]
例:x1[k]={1,1,1}, x 2[k]={1,1,0,1} , 计算 (1) x1[k]和x2[k]的线性卷积y1[k] ; (2) x1[k]和x2[k]的4点循环卷积y2[k] ; (3) x1[k]和x2[k]的5点、6点和7点循环卷积。
解:
x1[n] 1
x2[n] 1
n 012
n 0123
2020/4/20
23
长序列和短序列的线性卷积
1. 重叠相加法(overlap add)
x[k ]
将长序列x[k] 分为若干段长度为L的序列
x0[k]
x1[k ]
x2[k]
x3 [k ]
L
2L
3L
x[k] xn[k nL]
n0
其中
x[k nL] xn[k] 0
2020/4/20
k
0 k L1 其他
2020/4/20
19
循环卷积的矩阵表示
y[0] y[1] y[M 1] y[M] y[M 1] y[L 2] y[L 1]T
x1[0]
0 0
x1[1]
x1[0]
0
0 x1[M 2] x1[M 1] x1[1] x2[0]
0
0
x1[M 1]
x1[2]
x2[1]
x1[M 1] x1[M 2] x1[0]
解: x1[k]和x2[k]的7点循环卷积y7[k]为 y7[k]={1,2,2,2,1,1,0}
2020/4/20
9
线性卷积的矩阵表示
y[0] x1[0]
y[1]
x1[1]
y[2]
y[3]
x1[2] 0
y[4] 0
y[5]
0
1 1 1 1 1 0 1 0 0 2020/4/20 0 0
x1[n] 1 012
x2[n] 1
n
n
0123
y1[k] {1, 2, 2, 2,1,1} y6[k ] {1,2, 2, 2,1,1}
1
x1[n]
1
x1[1n]
1
x1[2n]
1
x1[3n]
n
n
n
n
2 1 0
1 1
2
3
1
x1[(n)6]
1
x1[(1n)6]
1
x1[(2n)6]
n 012345
n
LM1
L1
n LM2 L1
x1[(M 1 n)L ]RL[n] 0 k ( M2 )不是线性卷
积的结果,即前M1个点
2020/4/20
M1
与线性卷积不一样。
n
18
线性卷积的矩阵表示
y[0] y[1] y[M 1] y[M] y[M 1] y[L M 2] y[L M 1]T
x1[0]
1 1 0 0 0 1 1 2
1 0
0 2020/4/20 0
1 1 0 0
1 1 1 0
0 1 1 1
0 0 1 1
0 0 0
1
0 10 0
2 2 2 1
1
x1[(n)6]
012345 12
n
例:x1[k]={1,1,1}, x 2[k]={1,1,0,1} , 计算 (1) x1[k]和x2[k]的线性卷积; (2) x1[k]和x2[k]的4点循环卷积; (3) x1[k]和x2[k]的5点、6点和7点循环卷积。