课后习题及答案_第4章快速傅里叶变换--习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.
解:
本题比较简单,
仿照教材中的 8 点基 2DIT-FFT 和 DIF-FFT 运算流
图很容易画出 16 点基 2DIT-FFT 和 DIF-FFT 运算流图。 但画图占篇幅较大,这 里省略本题解答, 请读者自己完成。
6. 解: 为了使用灵活方便, 将本题所给算法公式作为函数编写 ifft46.m 如下: %函数 ifft46.m %按照所给算法公式计算 IFET function xn=ifft46(Xk, N) Xk=conj(Xk); %对 Xk 取复共轭
F(k)=X(k)+jY(k)=Fep(k)+Fop(k) 计算一次 N 点 IFFT 得到 f(n)=IFFT[F(k)]=Re[f(n)]+j Im[f(n)] 由 DFT 的共轭对称性可知 Re[f(n)]=IDFT[Fep(k)]=IDFT[X(k)]=x(n) j Im[f(n)]=IDFT[Fop(k)]=IDFT[jY(k)]=jy(n) 故
y(n)=x1(n)+jx2(n) Y(k)=DFT[y(n)] k=0, 1, …, N-1
则 X (k ) = DFT[ x (n)] = Y (k ) = 1 [Y (k ) + Y * ( N − k )] 1 1 ep 2 1 jX 2 (k ) = DFT[ jx2 (n)] = Yep (k ) = [Y (k ) − Y * ( N − k )] 2
1
TD=10×10 9×10242+10×10 9×1 047 552=20.961 28 ms
- -
用 FFT 计算 1024 点 DFT 所需计算时间 TF 为 N TF = 10 × 10 −9 × l bN + 10 × 10−9 × N l bN 2 1024 = 10−8 × × 10 + 10 −8 × 1024 × 10 2 = 0.1536 ms 快速卷积计算时间 Tc 约为
运行程序输出时域序列如下所示,
x1n = 1 x2n = 1 x3n = 1 0 1 2 0 1 3 0 1 4
正是原序列 x1n、 x2n 和 x3n。
0 1 4 0 1 3 0 1 2 0 1 1
5
③ 由 x1(n)和 x2(n)合成 x(n):
n x1 2 x ( n) = x n −1 2 2
n = 偶数
,0≤n≤2N-1
n = 奇数
在编程序实现时, 只要将存放 x1(n)和 x2(n)的两个数组的元素分别依次放入 存放 x(n)的数组的偶数和奇数数组元素中即可。
2
根据 DIT-FFT 的思想, 只要求得 x1(n)和 x2(n)的 N 点 DFT, 再经过简单 的一级蝶形运算就可得到 x(n)的 2N 点 DFT。 因为 x1(n)和 x2(n)均为实序列, 所 以根据 DFT 的共轭对称性, 可用一次 N 点 FFT 求得 X1(k)和 X2(k)。 具体方法 如下: 令
x2n=[1 1 1 1 1 1 1 1] ; %输入矩形序列向量 x2n x3n=[1 2 3 4 4 3 2 1] ; X1k=fft(x1n, N); X2k=fft(x2n, N); X3k=fft(x3n, N); x1n=ifft46(X1k, N) x2n=ifft46(X2k, N) x3n=ifft46(X3k, N) %输入三角序列序列向量 x3n %计算 x1n 的 N 点 DFT %计算 x2n 的 N 点 DFT %计算 x3n 的 N 点 DFT %调用 ifft46 函数计算 X1k 的 IDFT %调用 ifft46 函数计算 X2k 的 IDFT %调用 ifft46 函数计算 X3k 的 IDFT N=8;
2N 点 DFT[x(n) ]=X(k)可由 X1(k)和 X2(k)得到
X (k ) = X 1 (k ) + W2kN X 2 (k )
k X (k + N ) = X 1 (k ) − W2 N X 2 (k )
这样,
k = 0,1, L , N − 1
通过一次 N 点 IFFT 计算就完成了计算 2N 点 DFT。 当然还要进行由
X (k ) = X 1 (k ) + W2kN X 2 (k )
k 2N
X (k + N ) = X 1 (k ) − W X 2 (k )
由上式可解出
k = 0,1, L , N − 1
1 X 1 (k ) = [ X (k ) + X (k + N )] 2 1 −k X 2 (k ) = [ X (k ) + X (k + N )]W2 N 2
在数字信号处理领域得到广泛应用。机器周期小于 1 ns 的 DSP 产品已上市, 其 处理速度更高。 3. 解: 因为 x(n)和 y(n)均为实序列, 所以, X(k)和 Y(n)为共轭对称序列,
jY(k)为共轭反对称序列。 可令 X(k)和 jY(k)分别作为复序列 F(k)的共轭对称分量 和共轭反对称分量, 即
k = 0,1, 2, L , N − 1
由以上分析可得出运算过程如下: (1)由 X(k)计算出 X1(k)和 X2(k):
3
1 X 1 (k ) = [ X (k ) + X (k + N )] 2 1 X 2 (k ) = [ X (k ) + X ቤተ መጻሕፍቲ ባይዱk + N )]W2−Nk 2 ② 由 X1(k)和 X2(k)构成 N 点频域序列 Y(k):
Y(k)=X1(k)+jX2(k)=Yep(k)+Yop(k)
其中, Yep(k)=X1(k), Yop(k)=jX2(k), 进行 N 点 IFFT, 得到
y(n)=IFFT[Y(k)]=Re[y(n)]+j Im[y(n)]
由 DFT 的共轭对称性知
n=0, 1, …, N-1
1 Re[ y (n)] = [ y (n) + y* (n)] = DFT[Yep (k )] = x1 (n) 2 1 jIm[ y (n)] = [ y (n) + y * (n)] = DFT[Yop (k )] = jx2 (n) 2
- -
用 FFT 计算 1024 点 DFT 所需计算时间 TF 为 TF = 5 ×10 −6 × N lbN + NlbN × 10 −6 2 1024 = 5 × 10−6 × ×10 + 1024 × 10 × 10−6 2 = 30.72 ms
快速卷积时, 需要计算一次 N 点 FFT(考虑到 H(k)= DFT[h(n)]已计算好存 入内存) 、 N 次频域复数乘法和一次 N 点 IFFT。 所以, 积的计算时间 Tc 约为 Tc = 2TF + 1024次复数乘计算时间 = 71680 µs + 4 × 1024 µs 所以, = 65536 µs 每秒钟处理的采样点数(即采样速率)
Fs < 1024 = 15 625 次/秒 65536 × 10 −6
计算 1024 点快速卷
由采样定理知,
f max <
可实时处理的信号最高频率为
Fs 15625 = = 7.8125 kHz 2 2
应当说明, 实际实现时, fmax 还要小一些。 这是由于实际中要求采样频 率高于奈奎斯特速率, 而且在采用重叠相加法时, 重叠部分要计算两次。 重 叠部分长度与 h(n)长度有关, 2. 解: 与第 1 题同理。 直接计算 1024 点 DFT 所需计算时间 TD 为 而且还有存取数据和指令周期等消耗的时间。
Y(k)求 X1(k)、 X2(k)和 X(k)的运算(运算量相对很少)。
(2) 与(1)相同, 设
x1(n)=x(2n) x2(n)=x(2n+1) X1(k)=DFT[x1(n)] X2(k)=DFT[x2(n)]
则应满足关系式
n=0, 1, …, N-1 n=0, 1, …, N-1 k=0, 1, …, N-1 k=0, 1, …, N-1
1 x (n) = [ f ( n) + f ∗ ( n)] 2
y ( n) = 1 [ f (n) − f ∗ (n)] 2j
4.
解:
本题的解题思路就是 DIT-FFT 思想。
(1)在时域分别抽取偶数和奇数点 x(n),得到两个 N 点实序列 x1(n)和 x2(n): x1(n)=x(2n) x2(n)=x(2n+1) n=0, 1, …, N-1 n=0, 1, …, N-1
Tc = 2TF + 1024 次复数乘计算时间 = 2 × 0.1536 × 10−3 + 10 × 10−9 × 1024 = 0.317 44 ms 可实时处理的信号最高频率 fmax 为 1 1 1024 1 f max ≤ Fs = · = ·3.1158 MHz=1.6129 MHz 2 2 Tc 2 由此可见, 用 DSP 专用单片机可大大提高信号处理速度。 所以, DSP
第 4 章 快速傅里叶变换(FFT) 习题答案 1. 解: 当 N=1024=210 时, 直接计算 DFT 的复数乘法运算次数为
N2=1024×1024=1 048 576 次 复数加法运算次数为 N(N-1)=1024×1023=1 047 552 次 直接计算所用计算时间 TD 为 TD=4×10 6×10242+1 047 552×10 6=5.241 856 s
xn=conj(fft(Xk, N))/N; %按照所给算法公式计算 IFFT
分别对单位脉冲序列、 长度为 8 的矩形序列和三角序列进行 FFT, 用函数 ifft46 计算 IFFT 变换, 验证函数 ifft46 的程序 ex406.m 如下: 并调
%程序 ex406.m
4
%调用 fft 函数计算 IDFT x1n=1; %输入单位脉冲序列 x1n