数字信号处理实验一FFT变换及其应用Word文档格式.docx

上传人:b****6 文档编号:17518601 上传时间:2022-12-07 格式:DOCX 页数:19 大小:589.81KB
下载 相关 举报
数字信号处理实验一FFT变换及其应用Word文档格式.docx_第1页
第1页 / 共19页
数字信号处理实验一FFT变换及其应用Word文档格式.docx_第2页
第2页 / 共19页
数字信号处理实验一FFT变换及其应用Word文档格式.docx_第3页
第3页 / 共19页
数字信号处理实验一FFT变换及其应用Word文档格式.docx_第4页
第4页 / 共19页
数字信号处理实验一FFT变换及其应用Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数字信号处理实验一FFT变换及其应用Word文档格式.docx

《数字信号处理实验一FFT变换及其应用Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验一FFT变换及其应用Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

数字信号处理实验一FFT变换及其应用Word文档格式.docx

]之间的频谱值。

􀁺

幅度谱:

相位谱:

为防止产生混叠现象,采样频率fs应大于2倍信号的最高频率fc,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。

用FFT对模拟信号进行谱分析的方框图如下所示。

图1.1FFT对模拟信号进行谱分析的方框图

2.应用FFT实现快速卷积涉及的根底知识如下:

一个信号序列x(n)与系统的卷积可表示为下式:

Y(n)=x(n)*h(n)=

当是一个有限长序列,且0

n

N-1时,有:

Y(n)=

此时就可以应用FFT来快速计算有限长度序列的线性卷积。

也就是先将输入信号x〔n〕通过FFT变换为它的频谱采样值X(k),然后再和滤波器的频响采样值H(k)相乘,最后再将乘积通过快速傅里叶变换〔简称IFFT〕复原为时域序列,即得到输出。

如下列图所示。

图1.2FFT实现卷积的过程示意图

.当序列x(n)和h(n)的长度差不多时

设x(n)的长度为N1,h(n)的长度为N2,那么用FFT完成卷积的具体步骤如下:

①为使两有限长序列的线性卷积可用其循环卷积代替而不发生混叠,必须选择循环卷积长度N≥N1+N2-1

②用补零方法使x(n)和h(n)变成列长为N的序列。

③用FFT计算x(n)和h(n)的N点离散傅里叶变换

④完成X(k)和H(k)的乘积Y(k)。

⑤用FFT计算的离散傅里叶反变换得y(n)

2.2当x(n)长度很长时可采用分段卷积的方法即重叠相加法和重叠保存法。

(二)实验工程

〔1〕用FFT进行频谱分析

1)对高斯序列进行频谱分析

代码如下:

n=0:

15;

p=8;

q=2;

x=exp(-1*(n-p).^2/q);

closeall;

subplot(3,1,1);

stem(fft(x));

%利用fft函数实现傅里叶变换

subplot(3,1,2);

stem(abs(fft(x)));

%绘制幅度谱

subplot(3,1,3);

stem(angle(fft(x)))%绘制相位谱

代码是为了得出此高斯序列的快速傅里叶变换,得到DFT的频谱特征图、幅频特征图和相频特征图。

a)固定信号参数P=8,改变q的值依次为2、4、8,结果如下列图:

P=8,q=2

图2-1

P=8,q=4

图2-2

P=8,q=8

图2-3

结果分析:

从图中可以看出,当固定p的值,改变q,可观察到:

随着q的增加,幅频图中趋近与0和等于0的个数增多。

可见q的增大使DFT幅频图中幅度平均值减小,且p是序列的对称轴,时域轴都关于n=8对称。

当q=2、4、8时,频域变化越来越快,中间水平局部越来越大,混叠减弱。

b)固定信号参数q=8,改变p的值依次为8、13、14,结果如下列图:

q=8,P=8

图2-4

q=8,p=13

图2-5

p=14,q=8

图2-6

当固定q的值,改变p,可观察到:

随着p的增大,图形越来越偏

离真实值,当p=14时泄漏现象较明显,频域波形随p的增大频率

分量会增多,易产生混叠。

2)对正弦序列进行频谱分析

%定义序列长度

a=0.1;

f=0.0625;

x=exp(-a*n).*sin(2*pi*f*n);

subplot(2,1,1);

stem(x);

title('

衰减正弦序列'

);

subplot(2,1,2);

%绘制幅度谱

x信号的频谱'

a)固定参数a=0.1,改变f,分别为、、,结果如下列图:

图2-7

图2-8

图2-9

观察可知,当f=0.4375,0.5625时,时域图像关于Y轴对称,频域完

全相同。

随着f值增大,时域序列周期变小。

频域序列的高频分量逐渐

增多,低频分量逐渐减少,因为所取的频率不符合采样定理,以致发

生严重的频谱混叠和泄漏。

3)对三角序列进行频谱分析

fori=1:

4

x(i)=i;

end

fori=5:

8

x(i)=9-i;

fori=9:

16

x(i)=0;

closeall

stem(abs(fft(x)))%绘制幅度谱

其频谱图如下所示:

图2-10

此编程实现三角序列,中间两个值是相等的,然后我们根据fft函数快

速求出x在各个n值上所对应的傅里叶变换值,得到结果如下:

Y=[18.46403.1605-16.3681i-5.3021-2.2394i-0.3336+0.3570i

0.1333+0.0145i0.7981-0.5599i-0.0955-0.4109i0.3750–

0.0802i0.06460.3750+0.0802i-0.0955+0.4109i0.7981+

0.5599i0.1333-0.0145i-0.3336-0.3570i-5.3021+2.2394i

3.1605+16.3681i]然后分别求出各点处的大小〔实部的平方加虚部的

平方开根号〕,得出来的大小和图像近似相等。

此三角序列的时域表达

式为:

当1≤n≤4时x(n)=n;

当5≤n≤8时x(n)=9-n。

a)反三角序列:

Fori=1:

x(i)=5-i;

end

Fori=5:

x(i)=i-4;

closeall

stem(abs(fft(x,16)))

图2-11

b)半三角序列〔直角三角形序列〕:

代码1如下:

fori=1:

8

x(i)=i-1;

end

stem(abs(fft(x)))

代码2如下:

x(i)=8-i;

图2-13

c)只有一个峰值:

x(i)=i;

x(i)=8-i;

图2-14

〔2〕使用FFT实现卷积运算

x1(n)=RN(n),1

N

10;

x2(n)=8sin(0.5*pi*n+4)1

x3〔n〕=0.8*exp〔3*n〕1

使用FFT实现以上3种卷积。

n=[1:

1:

10];

N1=length(n);

xn1=ones(1,N1);

xn2=8*sin(0.5*pi*n+4);

xn3=0.8*exp(3*n);

N=N1+N1-1;

X1k=fft(xn1,N);

X2k=fft(xn2,N);

X3k=fft(xn3,N);

Yk1=X1k.*X2k;

Yk2=X1k.*X3k;

Yk3=X2k.*X3k;

yn1=ifft(Yk1,N);

yn2=ifft(Yk2,N);

yn3=ifft(Yk3,N);

x=0:

N-1;

stem(x,yn1,'

.'

stem(x,yn2,'

stem(x,yn3,'

用FFT计算卷积,实验结果如下列图:

图2-15

X1n=[111111111];

x2n=[80-8080-8080];

X1n*x2n=[0

880088008008800880],其IFFT变换为8*〔exp〔j*2*w〕

+exp〔j*3*w〕+exp〔j*6*w〕+exp〔j*7*w〕+exp〔j*10*w〕+exp〔j*13*w〕

+exp〔j*14*w〕+exp〔j*17*w〕+exp〔j*18*w〕〕=8*(1+exp(j*w))

*(exp(j*2*w)+exp(j*6*w)+exp(j*13*w)+exp(j*17*w))+8*exp(j*10*

w),Matlab运行的结果与手工计算的结果完全一致,由此可知此代码

是正确的。

〔3〕一个综合性实例

1)创立简易界面

使用MATLAB中的图形用户接口功能,设计简单的操作界面,如下图。

界面中包含列表框,滑动块,按钮和静态文本。

其中列表中,包含正弦波、方波和锯齿波;

移动滑动块可以改变图形的周期,且周期数在静态文本中显示;

点击“退出〞按钮那么退出程序。

界面如下列图:

图2-16

a)当列表框中选择‘正弦波’,周期数为4时,产生的时域波形和频谱图如下:

图2-17

b)当列表框中选择‘方波’,周期数为4时,产生的时域波形和频谱图如下:

图2-18

c)当列表框中选择‘三角波’,周期数为4时,产生的时域波形和频谱图如下:

图2-19

d)当列表框中选择‘锯齿波’,周期数为4时,产生的时域波形和频谱图如下:

图2-20

四、实验小结

本次实验按照实验指导书,根本是按照原有的代码和步骤根底上来做的,实验中也遇到了一系列的问题:

一,前后参数不一致,即在改变参数的时候,由于粗心使得前后参数形式不一致,而导致运行出错;

二,在matlab中新建文件,假设以中文命名,然后保存后运行,那么系统会因为识别不了所命名的中文而导致运行会出错;

三,只会用datacursor来将坐标点贴标签,仍然不会用编写代码的方式将各坐标点的数值贴标签。

当然,在试验中我也学到了一些知识:

一,使用FFT实现卷积运算时,三个序列互相形成的三个卷积可以整合一下,显示在一个图像中,这样节省了时间也提高了效率。

二,在三角序列中,可通过函数的改变来实现正三角、倒三角以及直角三角等;

对于快速傅里叶变换,知道如何用MATLAB解决卷积问题,通过此次实验发现,用FFT函数变化,要比手工计算要方便的多,而且既准确又省时间;

三,在编写matlab代码的时候,放在新建文件中编写,更方便去改变相应的参数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1