Matlab关于用FFT作谱分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab关于用FFT作谱分析

中文摘要:

matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。本文利用matlab的强大计算功能和信号数据处理功能,用FFT对连续信号和时域离散信号进行谱分析。

英文摘要:

matlab is used in algorithm development, data visualization, data analysis and numerical calculation of high-level technical computing language and interactive environment.。In this paper, matlab powerful computing capabilities and signal data processing functions, using FFT of a continuous signal and the time-domain discrete signal spectrum analysis.

关键词:FFT、连续信号、时域离散信号、matlab

一、引言

本文研究在matelab中用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因。除了数字信号变换和滤波的功能外,matlab还具有很强大的图像处理功能,数学计算功能等。而且不光是在物理学方面,在数学,化学,生物学,经济学,甚至是社会学也有很多应用。

二、傅立叶变换

1、离散傅立叶变换(DFT )

离散傅立叶级数变换是周期序列,有N 个独立的数值,所以他的许多特性可以通过有限长序列沿拓来得到。对于一个长度为N 的有限长序列x (n ),也即小(n )只在0~(N-1)各点上有非零值,即

⎩⎨⎧-≤≤=其他

,01

0),()(N n n x n x

把序列x (n )以N 为周期进行周期沿拓得到周期序列)(~n x ,则有

⎩⎨⎧-≤≤=其他

,01

0),(~

)(N n n x n x

所以,有限长序列x (n )的离散傅立叶变换(DFT )为

∑-=--≤≤=

=1

10,)()]([)(N n kn N

N k W

n x n x DFT k X

逆变换为

∑-=--≤≤=

=1

10,)(1)]([)(N n kn N

N k W

k X N

k X IDFT n x

编制信号产生子程序,产生以下典型信号供谱分析:

()()n R n x 41=

1+n ,

30≤≤n

()=n x 2 n -8, 74≤≤n 0 , 其它n

n -4, 30≤≤n

()=n x 3

n -3, 74≤≤n 0

, 其它n

()n n x 4

c o s 4π

=

()n n x 8

s i n 5π

=

()t t t t x πππ20cos 16cos 8cos 6++=

应当注意,如果给出的是连续信号()t x a ,则首先要根据其最高频率确定采样速率s f 以及由频率分辨率选择采样点数N ,然后对其进行软件采样(即计算()()nT

x n x a =

,1

0-≤≤

N n ),产生对应序列()n x 。对信号

()t x 6,

频率分辨率的选择要以能分辨开其中的三个频率对应的谱线为准则。对周期序列,最好截取周期的整数倍进行谱分析,否则有可能产生较大的分析误差 编写主程序

下图给出了主程序框图,供参考。本实验提供FFT 子程序和通用绘图子程序。

开始

读入长度N

调用信号产生子程序产生实验信号

调用绘图子程序(函数)绘制时间序列波形图

调用FFT 子程序(函数)计算信号的DFT

主程序框图

%x6(n)=cos(8пt)+cos(16пt)+cos(20пt) fs=64kHz,

N=16,32,64

m=input('FFT 点数='); n=0:(m-1); subplot(2,2,1);

x6=cos(pi*n/8)+cos(pi*n/4)+cos(pi*n*5/16);

stem(n,x6,'.'); % stem:二维火柴棍图 xlabel('n'); ylabel('x6(n)');

title('x6(n)=cos(8пt)+cos(16пt)+cos(20пt)的函数'); subplot(2,2,2); xa=fft(x6,16); i=0:15;

stem(i,abs(xa),'.'); % abs:求模,绝对值

调用绘图子程序(函数)绘制()k X 曲线 结束

xlabel('k'); ylabel('x6(n)');

title('x6(n)的16点FFT');

subplot(2,2,3); % m 行n 列个图像,第p 个区域 xb=fft(x6,32); i=0:31;

stem(i,abs(xb),'.'); xlabel('k'); ylabel('x6(n)');

title('x6(n)的32点FFT'); subplot(2,2,4); xc=fft(x6,64); i=0:63;

stem(i,abs(xc),'.'); xlabel('k'); ylabel('x6(n)');

title('x6(n)的64点FFT');

直接运行程序,按照实验内容及程序提示键入1~8,分别对

()n x 1~()n x 6及()()()n x n x n x 547+=、()()()n jx n x n x 548+=进行谱分析。输出

()()n x n x 51~的波形及其

8点DFT 和16点DFT ,()n x 6的16点、32点

和64点采样序列及其DFT 。

相关文档
最新文档