前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FFT_频谱分析(数字信号处理)

FFT_频谱分析(数字信号处理)

作者头像
Fivecc
发布2022-11-21 15:48:26
1.7K0
发布2022-11-21 15:48:26
举报
文章被收录于专栏:前端ACE

                                          FFT_频谱分析(数字信号处理)

(一)实验原理

用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重点在于频谱分辨率及分析误差。频谱分辨率D和频谱分析的点数N直接相关,其分辨率为2π/N 。因此2π/N≤D,可以据这个公式确定频率的分辨率。

FFT分析频谱的误差在于得到的是离散谱,而信号(非周期信号)是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱。因此N要适当选择大一些。

周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。

对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。

(二)实验步骤

1.对以下序列进行频谱分析

为上三角有限长序列,序列长度为8; 为下三角有限长序列,序列长度为8。选择FFT变换点数N分别为8和16两种情况进行频谱分析,打印出频谱特性曲线,观察不同N值, 和 的频谱特性曲线是否相同,进行讨论分析并得出结论。整个频谱分析过程通过Matlab软件进行程序设计实现。以下为Matlab的程序实现:

代码语言:javascript
复制
function e_6_1
M=8;xa=1:(M/2);xb=(M/2):-1:1;x1n=[xa,xb]; x2n=[xb,xa];%产生长度为M的上下三角序列
subplot(321);stem([0:M-1],x1n),title('X_1(n)');xlim([-1,M]);%打印序列X_1(n)
subplot(322);stem([0:M-1],x2n),title('X_2(n)');xlim([-1,M]);%打印序列X_2(n)
subplot(323);fft_stem(x1n,8,1);%打印N=8点X_1(n)DFT幅频特性
subplot(324);fft_stem(x2n,8,2);%打印N=8点X_2(n)DFT幅频特性
subplot(325);fft_stem(x1n,16,1);%打印N=16点X_1(n)DFT幅频特性
subplot(326);fft_stem(x2n,16,2);%打印N=16点X_2(n)DFT幅频特性
end
function fft_stem(A,N,name) % 计算FFT并打印子函数
stem([2/N*(0:(N-1))],abs(fft(A,N)));ylabel('幅度');xlabel('w/π');
title([num2str(N),'点DFT[X_',num2str(name),'(n)]']);xlim([-(2/N),2]);%横坐标范围
end

2.对下列模拟信号进行频谱分析

这是一个含有三个频率成分的模拟信号,频率分别为选择采样频率Fs=64Hz,对DFT变换点数N分别为:16、32、64这三种情况进行频谱分析,分别打印频谱特性曲线。对三种点数的频谱分析结果进行讨论分析。整个频谱分析过程通过Matlab软件进行程序设计实现。以下为Matlab的程序实现:

代码语言:javascript
复制
function e_6_2
global T;%全局变量 采样周期
Fs=64;T=1/Fs;%Fs采样频率
n=0:64-1;nT=n*T;%采样点数
X3n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT);%采样
subplot(311);fft_stem(X3n,16);%对N=16的频谱分析
subplot(312);fft_stem(X3n,32);%对N=32的频谱分析
subplot(313);fft_stem(X3n,64);%对N=64的频谱分析
end
function fft_stem(A,N) % 计算FFT并打印子函数
global T;Tp=N*T;F=1/Tp;%Tp 观察时间 F 频率分辨率
stem([-N/2:N/2-1]*F,abs(fftshift(fft(A,N))));xlabel('f(Hz)');
 %[-N/2:N/2-1]*F产生DFT对应采样点频率(fftshift()零点居中,关于中心反转)
ylabel('幅度');title([num2str(N),'点DFT[X_3(n)]']);xlim([-N*F/2,N*F/2-1]);%x范围
end

三、实验结果分析

(一)序列结果分析

     通过对 和 频谱特性曲线结果的比较与分析(为了便于观察频谱和读取频率值对数据进行归一化处理,即分析以为横坐标),可以得出当FFT变换点数N为8 时, 和 频谱特性相同(见图3中的b1与b2),而N为16时, 和 频谱特性曲线不相同(见图3中的c1与c2)。出现这两种不同情况的原因为 和 为序列为8的有限长序列(如图3的a1和a2)当取N为8时,将两个序列做周期延拓后发现 两个周期序列的波形仅存在相位上的差别,将 向右移动4个单位长度即可得到 ,即,因而两序列的频谱特性相等,而当取N为16时,原 和 序列通过补零的方式变为序列长度为16的序列。此时序列波形完全不同,所以频谱特性必然不同。

(二)模拟信号结果分析

x_3(n) 共有3个频率成分,f1=4Hz, f2 =8Hz, f3=10Hz。所以x_3(n)的周期为0.5s。采样的频率为 Fs=64Hz=16f1=8f2=6.4f3。N为16时,观察时间Tp=16T=0.25s,T为Fs的倒数。不是x_3(n)周期的整数倍,出现混叠现象,严重失真,所以得到的频谱不正确(如图4中a3)。当N=32或64时,观察时间Tp=0.5s或1s, 是周期的整数倍,所以会得到正确的频谱(如图4中b3和c3),频谱中有3根谱线正好对应位于4Hz,8Hz和10Hz。而N为64时的频谱幅度为40正好为N为32时频谱幅度为20的两倍,即验证DFT对中期序列谱分析的理论。

点击下载资源

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •                                           FFT_频谱分析(数字信号处理)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档