实验二 DFTFFT的应用利用FFT实现快速卷积Word文件下载.docx
- 文档编号:17287056
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:13
- 大小:120.59KB
实验二 DFTFFT的应用利用FFT实现快速卷积Word文件下载.docx
《实验二 DFTFFT的应用利用FFT实现快速卷积Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验二 DFTFFT的应用利用FFT实现快速卷积Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
N2=4;
xn=[2,1,1,2];
hn=[1,-1,-1,1];
N=N1+N2-1;
%卷积后的序列长度
yn=conv(xn,hn);
%线性卷积
x=0:
N-1;
stem(x,yn);
title('
线性卷积'
);
运行结果:
(2)FFT卷积快速卷积
n=0:
1:
3;
m=0:
N1=length(n);
%xn的序列长度
N2=length(m);
%hn的序列长度
xn=[2,1,1,2];
hn=[1,-1,-1,1];
N=N1+N2-1;
XK=fft(xn,N);
%xn的离散傅里叶变换
HK=fft(hn,N);
%hn的离散傅里叶变换
YK=XK.*HK;
yn=ifft(YK,N);
%逆变换
ifall(imag(xn)==0)&
&
(all(imag(hn)==0))%实序列的循环卷积仍为实序列
yn=real(yn);
end
x=0:
stem(x,yn);
FFT卷积'
结果分析:
对比
(1)和
(2)直接线性卷积和FFT快速卷积的结果可以验证,用FFT线性卷积的结果是与直接卷积的结果相同的,FFT可以实现快速卷积,提高运算速度。
2.数字滤波器的冲激响应为
可自定,本实验取
,输入序列x(n)可选下列几种情况:
可取16
(3)实验前,预先编制一个应用FFT实现数字滤波器的通用程序。
通用程序:
functionyn=xian(xn,n,N1)
N1=16;
N2=17;
15;
16;
hn=(-0.5).^m;
(4)上机独立调试,并打印或记录试验结果。
①调用程序,在命令行输入:
yn=xian([ones(1,N1)],n,16)
②调用程序,在命令行输入:
yn=xian([cos(2*pi*n/N1)],n,16)
③调用程序,在命令行输入:
yn=xian([(1/3).^n],n,16)
(5)将实验结果与预先笔算的结果比较,验证其正确性。
将实验结果与预先笔算的结果对比结果是相同的,验证了程序的正确性。
3.设
a.计算线性卷积
figure
(1);
N2=5;
xn=[1,2,2,1];
hn=[1,2,3,4,5];
subplot(211);
4;
xn=[1,2,2,1,];
hn=[1,2,3,4,5];
subplot(212);
b.分别用FFT计算它们的5点、6点、8点和10点圆周卷积。
(1)5点圆周卷积代码:
N=length(n);
M=length(m);
x=[1,2,2,1];
xn=[x(1:
M),zeros(1,N-M)];
%补0到序列长度为5
5点圆周卷积'
(2)6点圆周卷积代码:
5;
z=0:
Z=length(z);
%补0到序列长度为6
h=[1,2,3,4,5];
hn=[h(1:
Z),zeros(1,N-Z)];
6点圆周卷积'
(3)8点圆周卷积代码:
7;
%补0到序列长度为8
stem(x,yn,'
.'
8点圆周卷积'
(4)10点圆周卷积代码:
9;
%补0到序列长度为10
10点圆周卷积'
分析实验结果,思考以下问题:
什么条件下圆周卷积与线性卷积是相同的?
对比试验结果可以知道,当圆周卷积的序列长度L满足:
L≧N+M-1(M,N分别为两个序列的长度)时,圆周卷积的结果和线性卷积是相同的。
如果不满足条件结果会怎样?
如果不满足条件的话,x(n)的周期延拓就必然有一部分非零序列值要交叠起来,发生混淆失真。
圆周卷积的结果就与线性卷积不同了。
4.编写一个MATLAB函数,用一个N点离散傅里叶变换同时计算两个N点实序列的离散傅里叶变换,并将该函数用于求1中x(n)和h(n)的离散傅里叶变换,将结果与直接使用两个N点离散傅里叶变换计算出来的结果进行比较。
(1)MATLAB函数:
function[XK,HK]=juan(xn,hn,N)
k=0:
yn=xn+1i*hn;
%一个作为实部,一个做虚部
YK=fft(yn,N);
%求离散傅里叶变换
YK2=conj(YK);
%取共轭
YK0=fliplr(YK2(2:
N));
%反序
YK1=[YK2
(1)YK0];
XK=(YK+YK1)/2;
%求XK
HK=-1i*(YK-YK1)/2;
%求HK
subplot(211);
stem(k,XK);
xnFFT'
stem(k,HK);
hnFFT'
实验过程:
调用函数,在命令行输入:
[XK,HK]=juan([2,1,1,2],[1,-1,-1,1],4)
(2)直接求两个N点的离散傅里叶变换
N=4;
XK1=fft(xn,N);
%求xn的离散傅里叶变换
HK1=fft(hn,N);
%求hn的离散傅里叶变换
stem(k,XK1);
xn1FFT'
stem(k,HK1);
hn1FFT'
对比用MATLAB函数和直接求两个N点的DFT的结果可以知道,两种方法的结果是相同的,因此可以用一个N点的离散傅里叶变换同时计算两个N点实序列的离散傅里叶变换。
遇到的问题及解决办法:
在编写MATLAB函数时,虚数的表示应写成“1i”而不是“j”,序列的反序要用到fliplr函数,conj取共轭。
要求:
列出实验程序清单,包括必要步骤的程序说明。
记录调试运行情况及所遇问题的解决方法。
分析实验结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 DFTFFT的应用利用FFT实现快速卷积 实验 DFTFFT 应用 利用 FFT 实现 快速 卷积