基于FFT的连续信号谱分析设计
- 格式:doc
- 大小:1.00 MB
- 文档页数:41
实验二用FFT对信号进行频谱分析简介:频谱分析是信号处理中常用的一种方法,通过将信号变换到频域,可以得到信号的频谱特征。
其中,快速傅里叶变换(FFT)是一种高效的计算频域的方法。
在这个实验中,我们将学习如何使用FFT对信号进行频谱分析。
实验步骤:1.准备工作:a. 安装MATLAB或者Octave等软件,并了解如何运行这些软件。
2.载入信号:a. 在MATLAB或Octave中,使用内置函数加载信号文件,将信号读入到内存中。
b.查看信号的基本信息,例如采样频率、时长等。
3.FFT变换:a. 使用MATLAB或Octave的fft函数将信号由时域变换到频域。
b.设置合适的参数,例如变换的点数、窗口函数等。
可以尝试不同的参数,观察其对结果的影响。
4.频谱绘制:a. 使用MATLAB或Octave的plot函数将变换后的频率数据进行绘制。
b.可以绘制幅度谱(频率的能量分布)或相位谱(频率的相位分布),也可以同时绘制两个谱。
5.频谱分析:a.根据绘制出的频谱,可以观察信号的频率特征。
例如,可以识别出信号中的主要频率分量。
b.可以进一步计算信号的能量、均值、方差等统计量,了解信号的功率特征。
c.可以对不同的信号进行对比分析,了解它们在频域上的差异。
实验结果和讨论:1.绘制出的频谱图可以清晰地显示信号的频率分量,可以识别出信号中的主要频率。
2.通过对不同信号的对比分析,可以发现它们在频域上的差异,例如不同乐器的音调特征。
3.可以进一步分析频谱的统计特征,例如信号的能量、平均幅度、峰值频率等。
4.在进行FFT变换时,参数的选择对结果有一定的影响,可以进行参数的调优,获得更准确的频谱分析结果。
结论:本实验通过使用FFT对信号进行频谱分析,可以获得信号在频域上的特征。
通过观察频谱图和统计特征,可以进一步了解信号的频率分布、能量特征等信息。
这对信号处理、音频分析等领域具有很大的应用价值。
在实际应用中,可以根据不同的需求,选择合适的参数和方法,对不同的信号进行频谱分析。
实验三 利用DFT 分析连续信号频谱1. 利用FFT 分析信号的频谱。
(1) 确定DFT 计算的各参数(抽样间隔,截短长度,频谱分辨率等);(2) 比较理论值与计算值,分析误差原因,提出改善误差的措施。
答: (1)选取fm=25Hz 为近似的最高频率,抽样间隔T=1/(2fm)=0.02s; 选取Tp=6s 进行分析,则截短点数为N=Tp/T=300,采用矩形窗,确定作fft 的点数为N=512。
(2)计算程序如下:fsam=50;Tp=6;N=512;T=1/fsam;t=0:T:Tp;x=exp(-2*t);X1=T*fft(x,N);subplot(4,1,1)plot(t,x)title('时域波形')subplot(4,1,2)w=[-N/2:N/2-1]*(2*pi/N)/T;plot(w,abs(fftshift(X1)));title('幅度谱计算值')X2=1./(2+j*w);subplot(4,1,3)plot(w,abs(X2),'r');title('幅度谱理论值')error=abs(abs(fftshift(X1))-abs(X2));subplot(4,1,4)plot(w,error)title('理论值与计算值的误差')运行结果:)(e )(2t u t x t-=产生误差的原因:在整个计算过程中存在密集频点上的插值,插值就会存在精度问题。
改善措施:可以增加作fft 运算的点数N 来提高插值的精度,从而减小误差。
2. 分析周期信号的频谱时,如果分析长度不为整周期,利用 fft 函数计算并绘出其频谱,总结对周期信号进行频谱分析时,如何选取信号的分析长度。
答:周期信号x(t),若分析长度为其周期T=1s ,程序如下:T=1;fsm=19;Ts=1/fsm;t=0:Ts:1;N=fsm;x=cos(2*pi*5*t)+2*sin(2*pi*9*t);X=Ts*fft(x,N);f=(-(N-1)/2:(N-1)/2)/N/Ts;stem(f,abs(fftshift(X)));title('幅度谱')运行结果:时域波形幅度谱计算值幅度谱理论值理论值与计算值的误差)π18sin(2)π10cos()(t t t x +=若分析长度为其周期T=1.6s ,程序如下:T=1.6;fsm=19;Ts=1/fsm;t=0:Ts:1.6;N=length(t);x=cos(2*pi*5*t)+2*sin(2*pi*9*t);X=Ts*fft(x,N);f=(-(N-1)/2:(N-1)/2)/N/Ts;stem(f,abs(fftshift(X)));title('幅度谱')运行结果:幅度谱00.20.40.60.811.21.41.6幅度谱根据以上两图可以看出:分析周期信号频谱时,如果分析长度不为信号的整周期,其频谱图会发生改变,不再反映原周期信号的频谱结构。
实验二的应用FFT对信号进行频谱分析引言:频谱分析是通过将连续信号转换为离散信号,根据信号在频域上的强度分布来分析信号的频谱特性。
其中,FFT(Fast Fourier Transform,快速傅里叶变换)是一种常见的频谱分析算法,可以高效地计算离散信号的傅里叶变换。
实验目的:本实验旨在使用FFT算法来对一个信号进行频谱分析,从而了解FFT 的原理和应用。
实验器材:-计算机-MATLAB软件实验步骤:1.准备信号数据:首先,需要准备一个信号数据用于进行频谱分析。
可以通过MATLAB 自带的函数生成一个简单的信号数据,例如生成一个正弦信号:```Fs=1000;%采样频率T=1/Fs;%采样时间间隔L=1000;%信号长度t=(0:L-1)*T;%时间向量S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); % 生成信号,包含50Hz和120Hz的正弦波成分```其中,Fs为采样频率,T为采样时间间隔,L为信号长度,t为时间向量,S为生成的信号数据。
2.进行FFT计算:利用MATLAB提供的fft函数,对准备好的信号数据进行FFT计算,得到信号的频谱:```Y = fft(S); % 对信号数据进行FFT计算P2 = abs(Y/L); % 取FFT结果的模值,并归一化P1=P2(1:L/2+1);%取模值前一半P1(2:end-1) = 2*P1(2:end-1); % 对非直流分量进行倍频处理f=Fs*(0:(L/2))/L;%计算对应的频率```其中,Y为FFT计算的结果,P2为对应结果的模值,并进行归一化处理,P1为P2的前一半,f为对应的频率。
3.绘制频谱图:使用MATLAB的plot函数,将频率和对应的功率谱绘制成频谱图:```plot(f,P1)title('Single-Sided Amplitude Spectrum of S(t)')xlabel('f (Hz)')ylabel(',P1(f),')```实验结果与分析:上述实验步骤通过MATLAB实现了对一个信号的频谱分析并绘制成频谱图。
实验二用FFT做谱分析实验报告一、引言谱分析是信号处理中一个重要的技术手段,通过分析信号的频谱特性可以得到信号的频率、幅度等信息。
傅里叶变换是一种常用的谱分析方法,通过将信号变换到频域进行分析,可以得到信号的频谱信息。
FFT(快速傅里叶变换)是一种高效的计算傅里叶变换的算法,可以大幅减少计算复杂度。
本实验旨在通过使用FFT算法实现对信号的谱分析,并进一步了解信号的频谱特性。
二、实验目的1.理解傅里叶变换的原理和谱分析的方法;2.学习使用FFT算法对信号进行谱分析;3.通过实验掌握信号的频谱特性的分析方法。
三、实验原理傅里叶变换是将信号从时域转换到频域的一种数学变换方法,可以将一个非周期性信号分解为一系列正弦和余弦函数的叠加。
FFT是一种计算傅里叶变换的快速算法,能够在较短的时间内计算出信号的频谱。
在进行FFT谱分析时,首先需要对信号进行采样,然后利用FFT算法将采样后的信号转换到频域得到信号的频谱。
频谱可以用幅度谱和相位谱表示,其中幅度谱表示信号在不同频率下的幅度,相位谱表示信号在不同频率下的相位。
四、实验装置和材料1.计算机;2.信号发生器;3.数字示波器。
五、实验步骤1.连接信号发生器和示波器,通过信号发生器产生一个周期为1s的正弦信号,并将信号输入到示波器中进行显示;2.利用示波器对信号进行采样,得到采样信号;3.利用FFT算法对采样信号进行频谱分析,得到信号的频谱图。
六、实验结果[插入频谱图]从频谱图中可以清晰地看到信号在不同频率下的幅度和相位信息。
其中,频率为2Hz的分量的幅度最大,频率为5Hz的分量的幅度次之。
七、实验分析通过对信号的频谱分析,我们可以得到信号的频率分量和其对应的幅度和相位信息。
通过分析频谱图,我们可以得到信号中各个频率分量的相对强度。
在本实验中,我们可以看到频率为2Hz的分量的幅度最大,频率为5Hz的分量的幅度次之。
这说明信号中存在2Hz和5Hz的周期性成分,且2Hz的成分更为明显。
实验报告实验题目:用FFT作谱分析所属课程:数字信号处理班级:信息姓名:学号:1.实验目的(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。
(2) 熟悉FFT 算法原理和FFT 子程序的应用。
(3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法, 了解可能出现的分析误差及其原因, 以便在实际中正确应用FFT 。
2.实验步骤(1) 复习DFT 的定义、 性质和用DFT 作谱分析的有关内容。
(2) 复习FFT 算法原理与编程思想, 并对照DIT-FFT 运算流图和程序框图,读懂本实验提供的FFT 子程序。
(3) 编制信号产生子程序, 产生以下典型信号供谱分析用:(4) 编写主程序。
图 10.4.1 给出了主程序框图, 供参考。
本实验提供FFT 子程序和通用绘图子程序。
(5) 按实验内容要求, 上机实验, 并写出实验报告。
1423()()1,03()8470403()3470x n R n n n x n n n n n x n n n =⎧+≤≤⎪=-≤≤⎨⎪⎩-≤≤⎧⎪=-≤≤⎨⎪⎩456()cos 4()sin 8()cos8cos16cos20x n n x n n x n t t t πππππ===++3. 上机实验内容(1) 对2 中所给出的信号逐个进行谱分析。
下面给出针对各信号的FFT变换区间N以及对连续信号x6(t)的采样频率fs,供实验时参考。
x1(n), x2(n), x3(n), x4(n), x5(n): N=8,16,x6(t): fs=64(Hz), N=16, 32, 64(2) 令x(n)=x4(n)+x5(n),用FFT计算8 点和16 点离散傅里叶变换,X(k)=DFT[x(n)](3) 令x(n)=x4(n)+jx5(n),重复(2)。
程序运行结果:x1(n)的8点和16点快速傅里叶变换频谱如下:X2(n)的8点和16点快速傅里叶变换频谱如下:X3(n)的8点和16点快速傅里叶变换频谱如下:X4(n)的8点和16点快速傅里叶变换频谱如下:X5(n)的8点和16点快速傅里叶变换频谱如下:X6(n)的16点,32点,64点快速傅里叶变换频谱如下:X4(n)+ X5(n)的8点和16点快速傅里叶变换频谱如下:X4(n) + j*X5(n)的8点和16点快速傅里叶变换频谱如下:程序源代码:%%%%序列X1(n)function x1=x1(n)%序列X1(n)n=0:3;%给定n的范围N=length(n);%把n的长度值赋给Nx1=zeros(1,N);%x1的所有值全部赋值0x1(1)=1;x1(2)=1;x1(3)=1;x1(4)=1;%把x1的前四个数都赋值1 figure(1)%窗口名figure1subplot(3,1,1);%窗口分为三行一列。
应用FFT实现信号频谱分析一、快速傅里叶变换(FFT)原理快速傅里叶变换是一种将时域信号转换为频域信号的算法,它通过将信号分解为不同频率的正弦波的和,来实现频谱分析。
FFT算法是一种高效的计算DFT(离散傅里叶变换)的方法,它的时间复杂度为O(nlogn),在实际应用中得到广泛使用。
二、FFT算法FFT算法中最基本的思想是将DFT进行分解,将一个长度为N的信号分解成长度为N/2的两个互为逆序的子信号,然后对这两个子信号再进行类似的分解,直到分解成长度为1的信号。
在这一过程中,可以通过频谱折叠的性质,减少计算的复杂度,从而提高计算效率。
三、FFT实现在实际应用中,可以使用Matlab等软件来实现FFT算法。
以Matlab 为例,实现FFT可以分为以下几个步骤:1.读取信号并进行预处理,如去除直流分量、归一化等。
2. 对信号进行FFT变换,可以调用Matlab中的fft函数,得到频域信号。
3.计算频谱,可以通过对频域信号进行幅度谱计算,即取频域信号的模值。
4.可选地,可以对频谱进行平滑处理,以降低噪音干扰。
5.可选地,可以对频谱进行归一化处理,以便于分析和比较不同信号的频谱特性。
四、应用1.音频处理:通过分析音频信号的频谱,可以实现音频特性的提取,如频率、振幅、共振等。
2.图像处理:通过分析图像信号的频谱,可以实现图像特征的提取,如纹理、边缘等。
3.通信系统:通过分析信号的频谱,可以实现信号的调制解调、频谱分配等功能。
4.电力系统:通过分析电力信号的频谱,可以实现电力质量分析、故障检测等。
总结:应用FFT实现信号频谱分析是一种高效的信号处理方法,通过将时域信号转换为频域信号,可以实现对信号频谱特性的提取和分析。
在实际应用中,我们可以利用FFT算法和相应的软件工具,对信号进行频谱分析,以便于进一步的研究和应用。
∑-=--==101,....,0,)(1)(N k nk N N n W k X N n x (3.2) 离散傅立叶反变换与正变换的区别在于N W 变为1-N W ,并多了一个N 1的运算。
因为N W 和1-N W 对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此可将FFT 和快速傅立叶反变换(IFFT )算法合并在同一个程序中。
2.利用FFT 进行频谱分析若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT 运算求得)(k X ,)(k X 就代表了序列在[]π2,0之间的频谱值。
幅度谱 )()()(22k X k X k X I R +=相位谱 )()(arctan )(k X k X k R I =ϕ 若信号是模拟信号,用FFT 进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT 来对连续信号进行谱分析。
按采样定理,采样频率s f 应大于2倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。
用FFT 对模拟信号进行谱分析的方框图如下所示。
3.在运用DFT 进行频谱分析的过程中可能产生三种误差:(1)混叠序列的频谱是被采样信号频谱的周期延拓,当采样速率不满足Nyquist 定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解。
在一般情况下,为了保证不出现频谱混叠,在采样前,先进行抗混叠滤波。
(2)泄漏实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT 来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。
抗混叠低通滤波器 采样T=1/f s N 点FFT泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。
利用FFT对信号进行频谱分析傅里叶变换(Fast Fourier Transform,FFT)是一种用于将信号从时域转换为频域的数学算法,在信号处理中经常被用于频谱分析。
频谱分析可以用来确定信号中包含的不同频率的成分,帮助我们理解信号的特性以及包含的信息。
在进行频谱分析之前,我们首先需要了解一些基本概念。
信号可以被看作是一个函数,表示随时间变化的其中一种物理量。
这个函数可以在时域上表示,也可以在频域上表示。
在时域中,信号在不同时间点上的取值。
而在频域中,信号的成分按其频率进行表示,即信号中包含的不同频率的成分。
傅里叶变换可以将一个信号从时域转换为频域,通过将信号分解成一系列正弦和余弦的和,表示信号中包含的不同频率的成分。
FFT是一种高效的算法,能够在计算机上快速地进行傅里叶变换,使频谱分析变得可行。
进行频谱分析的基本步骤如下:1.采集信号:首先需要获得要分析的信号,可以通过传感器、麦克风等设备采集到的模拟信号,或者从文件中读取的数字信号。
2.离散化:将连续的信号离散化,即将信号在时间上进行采样,得到一系列离散的数据点,通常是均匀采样。
3.预处理:根据具体应用的需求,对信号进行预处理。
预处理的方法包括去除噪声、滤波、去除基线漂移等。
4.应用FFT:将预处理后的信号应用FFT算法,将信号从时域转换为频域。
FFT算法可以将信号转换为频谱表示,显示信号中不同频率的成分。
5.频谱分析:对得到的频谱进行分析,可以观察信号中存在的频率成分及其相对强度。
可以通过频谱分析来确定信号中的主要频率、频率的幅值等信息。
6.可视化:可以将得到的频谱进行可视化,使得结论更加直观明了。
常见的可视化方法包括将频谱绘制成线图、柱状图、瀑布图等形式。
频谱分析可应用于多个领域,如音频处理、图像处理、通信信号处理等。
在音频处理中,许多音频效果的实现都依赖于对音频信号的频谱分析,如均衡器、滤波器等。
在通信中,频谱分析可以帮助我们理解信号传输中的问题,例如频率偏移、多径效应等。
实验三:用FFT对信号作频谱分析1.实验目的学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。
2.实验原理1). 对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是N/2π,因此要求D2π。
可以根据此式选择FFT的变换区间N。
用FFT作频谱分析时,N≤/得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
2).周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
3).对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
3.实验步骤及内容%物联一班胡洪 201313060110%2015年11月08日%实验三:程序1x1n=[ones(1,4)];x2n=[1:4,4:-1:1];x3n=[4:-1:1,1:4];X1k8=fft(x1n,8); X1k16=fft(x1n,16);X2k8=fft(x2n,8); X2k16=fft(x2n,16);X3k8=fft(x3n,8); X3k16=fft(x3n,16); n=0:7;subplot(321);stem(2*n/8,abs(X1k8),'.');xlabel('w/pi');ylabel('8点DFT[x1n]幅度')subplot(323);stem(2*n/8,abs(X2k8),'.');xlabel('w/pi');ylabel('8点DFT[x2n]幅度')subplot(325);stem(2*n/8,abs(X3k8),'.');xlabel('w/pi');ylabel('8点DFT[x3n]幅度') n=0:15;subplot(322);stem(2*n/16,abs(X1k16),'.');xlabel('w/pi');ylabel('16点DFT[x1n]幅度')subplot(324);stem(2*n/16,abs(X2k16),'.');xlabel('w/pi');ylabel('16点DFT[x2n]幅度')subplot(326);stem(2*n/16,abs(X3k16),'.');xlabel('w/pi');ylabel('16点DFT[x3n]幅度')w/pi8点D F T [x 1n ]幅度w/pi8点D F T [x 2n ]幅度w/pi8点D F T [x 3n ]幅度w/pi16点D F T [x 1n ]幅度w/pi16点D F T [x 2n ]幅度w/pi16点D F T [x 3n ]幅度图1%物联一班 胡洪 201313060110 %2015年11月08日 %实验三:程序2 n=0:7;x4n=cos(pi/4*n);x5n=cos(pi/4*n)+cos(pi/8*n); X4k8=fft(x4n); X5k8=fft(x5n);subplot(221);stem(2*n/8,abs(X4k8),'.');xlabel('w/pi');ylabel('8点DFT[x4n]幅度')subplot(223);stem(2*n/8,abs(X5k8),'.');xlabel('w/pi');ylabel('8点DFT[x5n]幅度') n=0:15;x4n=cos(pi/4*n);x5n=cos(pi/4*n)+cos(pi/8*n); X4k16=fft(x4n);X5k16=fft(x5n);subplot(222);stem(2*n/16,abs(X4k16),'.');xlabel('w/pi');ylabel('16点DFT[x4n]幅度')subplot(224);stem(2*n/16,abs(X5k16),'.');xlabel('w/pi');ylabel('16点DFT[x5n]幅度')00.51 1.52w/pi8点D F T [x 4n ]幅度0.51 1.52w/pi8点D F T [x 5n ]幅度00.51 1.52w/pi16点D F T [x 4n ]幅度w/pi16点D F T [x 5n ]幅度图2%物联一班胡洪 201313060110%2015年11月08日%实验三:程序3Fs=64;T=1/Fs;N=16;n=0:N-1;x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);X6k16=fft(x6nT);Tp=N*T;F=1/Tp; fk=n*F;subplot(3,1,1);stem(fk,abs(X6k16),'.');;xlabel('f(Hz)');ylabel('幅度'); title('变换区间N=16')axis([0,60,0,max(abs(X6k16))])N=32;n=0:N-1;x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);X6k32=fft(x6nT);Tp=N*T;F=1/Tp; fk=n*F;subplot(3,1,2);stem(fk,abs(X6k32),'.');;xlabel('f(Hz)');ylabel('幅度'); title('变换区间N=32')axis([0,60,0,max(abs(X6k32))])N=64;n=0:N-1;x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);X6k64=fft(x6nT);Tp=N*T;F=1/Tp; fk=n*F;subplot(3,1,3);stem(fk,abs(X6k64),'.');;xlabel('f(Hz)');ylabel('幅度'); title('变换区间N=64')axis([0,60,0,max(abs(X6k64))])102030405060f(Hz)幅度变换区间N=16f(Hz)幅度变换区间N=32f(Hz)幅度变换区间N=64102030405060f(Hz)幅度变换区间N=16f(Hz)幅度变换区间N=320102030405060f(Hz)幅度变换区间N=64图34.思考题1. 对于周期序列,如果周期不知道,如何用FFT 进行频谱分析?答:如果不知道信号周期,可以尽量选择信号的观察时间长一些。
计算机作业:用FFT 进行谱分析1. 利用FFT 分析离散时间周期信号的频谱,通过实验理解分辨率的概念和栅栏效应。
设离散时间周期序列()cos(0.48)cos(0.52)x n n n p p =+ ,有限长序列()()()N x n x n R n = ,N 为序列长度。
参数选取:(1)设定序列()x n 长度N=10,对()x n 做10点DFT ,得到)(1k X ; (2)设定序列()x n 长度N=10,对()x n 补零后做100点DFT ,得到)(2k X ; (3)设定序列()x n 长度N=100,再做100点DFT ,得到)(3k X 。
要求:针对以上三种情况,分别输出1()X k 、2()X k 、3()X k ,并进行比较、分析和讨论。
分析:1、用DFT 计算频谱只是频谱的采样值,而不能够得到连续的频谱,即栅栏效应。
但它们的包络反映了真实的频谱。
栅栏效应可能造成一些重要的频率分量丢失,为减少这种效应,可在信号末端补零,使谱线变密。
2、10点DFT 不能将两个频率在频谱上分辨出来,而补零DFT 不能提高频谱分辨率,只能加频谱的采样点,使频谱看起来跟接近真实的频谱。
增加采样点(100点)后,频率分辨率得以大大提高,可以明显分辨出两个频点。
验证了频率分辨率公式f=1/NT.2.用FFT 对模拟信号做谱分析—理解频率分辨率和频谱泄漏的概念。
设)50cos()100sin()200cos()(t t t t x a πππ++=,用FFT 分析)(t x a 的频谱结构,选择不同的截取长度Tp ,观察截断效应,试用加窗的方法减少谱间干扰。
第一步:对模拟信号进行采样,采样频率400s f Hz =,采样间隔 1/s T f =,得到采样序列()()a x n x nT =;第二步:对采样序列加窗,得到()()()()()a v n x n w n x nT w n ==,)(n w 是窗函数,长度记为N ,则得到的序列()v n 长度为N ,对应的时间长度记为pT ,二者的关系为ps T f N =;第三步:对()v n 做2048点DFT ,得到的数字谱()V k ,作为()a x t 的近似频谱。
XXXX 大学实验报告XXXX 年 XX 月 XX 日课程名称: 数字信号处理 实验名称:用FFT 作谱分析班级: XXXXXXXX 班 学号: XXXXXXXX 姓名: XXXX实验三 用FFT 作谱分析一、实验目的(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法,所以FFT 的运算结果必然满足DFT 的基本性质); (2) 熟悉FFT 算法的原理;(3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法分析误差及其原因,以便在实际中正确应用FFT 。
二、实验内容(1)x(n)={1 0≤n ≤50 其他构造DFT 函数计算x(n)的10点DFT ,20点DFT并画出图形;(2)利用FFT 对下列信号逐个进行谱分析并画出图形 a 、x 1(n)=R 4(n); b 、x 2(n)=cos π4n ; c 、x 3(n)=sin π8n以上3个序列的FFT 变换区间N=8,16(2)设一序列中含有两种频率成份,f1=2HZ,f2=2.05HZ,采样频率取为fs =10HZ ,即)/2sin()/2sin()(21s s f n f f n f n x ππ+=要区分出这两种频率成份,必须满足N>400,为什么? a.取x(n)(0≤n<128)时,计算x(n)的DFT X(k)b.将a 中的x (n )以补零方式使其加长到0≤n<512,计算X(k)c.取x(n)( 0≤n<512),计算X(k)(3)令)()()(32n x n x n x +=用FFT 计算16点离散傅立叶变换并画出图形,分析DFT 的对称性 (4))()()(32n jx n x n x +=用FFT 计算16点离散傅立叶变换并画出图形,分析DFT 的对称性 三、实验代码 (1)1、 代码function [Xk]=dft(xn,N)n=[0:1:N-1];k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk;Xk=xn*WNnk; %离散傅立叶变换方法定义N=10; %10点DFT n1=[0:N-1];x1=[ones(1,6),zeros(1,N-6)]; %生成1行6列的单位矩阵和1行N-6列的0矩阵 Xk1=dft(x1,N); %10点DFT figure(1); subplot(2,1,1);stem(n1,x1); %画火柴图 xlabel(‘n’);ylabel(‘x(n)’); subplot(2,1,2); stem(n1,abs(Xk1)); xlabel(‘n’);ylabel(‘x(n)’); N=20; n2=[0:N-1];x2=[ones(1,6),zeros(1,14)];Xk2=dft(x2,N);figure(2);subplot(2,1,1);stem(n2,x2);xlabel(‘n’);ylabel(‘x(n)’);subplot(2,1,2);stem(n2,abs(Xk2));xlabel(‘n’);ylabel(‘x(n)’);2、运行结果图1 10点DFT图2 20点DFT3、结果分析定义x(n)的N 点DFT 为由定义知:DFT 具有隐含周期性,周期与DFT 的变换长度N 一致,这说明,变换长度不一样,DFT 的结果也不一样(2)1、代码N=64;n=[0:N-1];x1=[ones(1,4),zeros(1,N-4)];%定义x1(n)=R 4(n) x2=cos((pi/4)*n); %定义x2(n)=cos π4nx3=sin((pi/8)*n); %定义x3(n)=sin π8n y1=fft(x1); y2=fft(x2);y3=fft(x3); %分别进行DFT figure(1); m1=abs(y1);subplot(2,1,1); %绘制x1(n)的图形 stem(n,x1);subplot(2,1,2); %绘制x1(n)的DFT 图形 stem(n,m1) figure(2);m2=abs(y2);subplot(2,1,1);stem(n,x2); %绘制x2(n)的图形 subplot(2,1,2);stem(n,m2); %绘制x1(n)的DFT 图形 figure(3);m3=abs(y3);subplot(2,1,1);stem(n,x3); %绘制x3(n)的图形 subplot(2,1,2);stem(n,m3); %绘制x1(n)的DFT 图形2、运行结果10)()(1-≤≤=∑-=N k W n x k X N n nkNNjN eW π2-=其中图3 x1(n)的DFT前后图形图4 x2(n)的DFT前后图形图5 x3(n)的DFT前后图形3、结果分析由图可以看出,离散序列的DFT与对应连续函数的FT有对应关系,不同之处在于DFT的结果是离散的,而FT的结果是连续的,再者,DFT结果与DFT 的变换长度N有关。
信息院 14电信(师范)实验三 用FFT 对信号作频谱分析1.实验目的学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析 误差及其原因,以便正确应用FFT 。
2. 实验原理用FFT 对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。
频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是N /2π,因此要求D N ≤/2π。
可以根据此式选择FFT 的变换区间N 。
误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时离散谱的包络才能逼近于连续谱,因此N 要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT ,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
3.实验步骤及内容(1)对以下序列进行谱分析。
⎪⎩⎪⎨⎧≤≤-≤≤-=⎪⎩⎪⎨⎧≤≤-≤≤+==其它nn n n n n x 其它n n n n n n x n R n x ,074,330,4)(,074,830,1)()()(3241 选择FFT 的变换区间N 为8和16 两种情况进行频谱分析。
分别打印其幅频特性曲线。
并进行对比、分析和讨论。
程序代码:x1n = [ones(1,4)]; %²úÉúR4(n)ÐòÁÐÏòÁ¿X1k8 = fft(x1n,8); %¼ÆËãx1(n)µÄ8µãDFTX1k16 = fft(x1n,16); %¼ÆËãx1(n)µÄ16µãDFT%»æÖÆ·ùÆµÌØÐÔÇúÏßN = 8;f = 2/N*(0:N-1);stem(f,abs(X1k8),'.'); %»æÖÆ8µãDFTµÄ·ùÆµÌØÐÔͼtitle('8µãDFT[x1(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È');N = 16;f = 2/N*(0:N-1);figure(1);subplot(1,2,2);stem(f,abs(X1k16),'.'); %»æÖÆ16µãDFTµÄ·ùÆµÌØÐÔͼtitle('16µãDFT[x1(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È');%x2n¡¢x3nM = 8;xa = 1:(M/2);xb = (M/2):-1:1;x2n = [xa,xb];x3n = [xb,xa];X2k8 = fft(x2n,8);X2k16 = fft(x2n,16);X3k8 = fft(x3n,8);X3k16 = fft(x3n,16);N = 8;f = 2/N*(0:N-1);figure(2);subplot(1,2,1);stem(f,abs(X2k8),'.'); %»æÖÆx2n-8µãDFTµÄ·ùÆµÌØÐÔͼtitle('8µãDFT[x2(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È');N = 16;f = 2/N*(0:N-1);subplot(1,2,2);stem(f,abs(X2k16),'.'); %»æÖÆx2n-8µãDFTµÄ·ùÆµÌØÐÔͼ16 title('16µãDFT[x2(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È');%x3nN = 8;f = 2/N*(0:N-1);figure(3);subplot(1,2,1);stem(f,abs(X3k8),'.'); %»æÖÆx2n-8µãDFTµÄ·ùÆµÌØÐÔͼtitle('8µãDFT[x3(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È');N = 16;f = 2/N*(0:N-1);stem(f,abs(X3k16),'.'); %»æÖÆx2n-8µãDFTµÄ·ùÆµÌØÐÔͼ16title('16µãDFT[x3(n)]');xlabel('¦Ø/¦Ð');ylabel('·ù¶È');其对应的幅频特性曲线分别为:分析: 图(1)和(2)说明X1(n )=R4n 的8点DFT 和16点DFT 分别是XI (n )的频谱函数的8点和16点采样;因X3(n )=X2((n-3))8R8(n).故X3(n )与X2(n)的8点DFT 的模相等,如图(3)(4)所示。
在matlab 中对信号111()cos()cos(2)s t t f t π=Ω进行采样,其中f1=1000Hz ,根据奈奎斯特采样定理,采样频率f>=2*f1,在此我们取f=3000Hz 在matlab 中仿真也好,实际中处理的信号也罢,一般都是数字信号。
而采样就是将信号数字化的一个过程,设将信号s1(t)数字化得到信号s1(n)=cos(2*pi*f1/f*n),其中n=[0…N -1],N 为采样点数。
为什么说s1(n)=cos(2*pi*f1/f*n)表示以采样率f 对频率为f1的信号进行采样的结果呢? 采样,顾名思义,就是对信号隔一段时间取一个值,而隔的这段时间就是采样间隔,取其倒数就是采样率了,那们我们看s1(n)=cos(2*pi*f1/f*n),将前面的参数代入,当n=0时,s1(0)=cos(0),当n=1时,s1(1)=cos(2*pi*1000/3000*1),当n=2时,s1(2)=cos(2*pi*1000/3000*2),当n=3时,s1(3)=cos(2*pi*1000/3000*3),这是不是想当于对信号s1(t)的一个周期内采了三个样点呢?对一个频率为1000Hz 的信号每周期采三个样点不就是相当于以3倍于频率的采样率进行采样呢?注意,当n=3时相当于下一个周期的起始了。
我们取采样点数N=64,即对64/3=21.3个周期,共计64/3/f1=21.3ms 时长。
我们在matlab 中输入以下命令:>> n=0:63;>> f1=1000;f=3000;>> s1=cos(2*pi*f1/f*n);>> plot(abs(fft(s1)));图1 信号频谱下面引入一个新的概念:频率分辨率频率分辩率是指频域取样中两相邻点间的频率间隔。
更确切的说是如果某一信号含有两个频率成分f1和f2,Of=|f2-f1|,频率分辨率的概念是如果频率分辨率大于Of,对信号进行谱分析后将不能识别出其含有两个频率成分,这两个频率将混叠在一起。
实验二 应用 FFT 对信号进行频谱分析一、实验目的1、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉 FFT 算法及其程序的编写。
2、熟悉应用 FFT 对典型信号进行频谱分析的方法。
3、了解应用 FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用 FFT 。
二、实验原理与方法一个连续信号 )(t x a 的频谱可以用它的傅立叶变换表示为⎰+∞∞-Ω-=Ωdt e t x j X t j a a )()( (2-1)如果对该信号进行理想采样,可以得到采样序列)()(nT x n x a = (2-2)同样可以对该序列进行z 变换,其中T 为采样周期∑+∞-∞=-=n n z n x z X )()( (2-3) 当 ωj ez =的时候,我们就得到了序列的傅立叶变换 ∑+∞-∞=-=n n j j e n x e X ωω)()( (2-4)其中ω称为数字频率,它和模拟域频率的关系为s f T Ω=Ω=ω(2-5)式中的s f 是采样频率。
上式说明数字频率是模拟频率对采样率s f 的归一化。
同模拟域的情况相似,数字频率代表了序列值变化的速率,而序列的傅立叶变换称为序列的频谱。
序列的傅立叶变换和对应的采样信号频谱具有下式的对应关系∑-=)2(1)(Tm j X T e X a j πωω (2-6) 即序列的频谱是采样信号频谱的周期延拓。
从式(2-6)可以看出,只要分析采样序列的频谱,就可以得到相应的连续信号的频谱。
注意:这里的信号必须是带限信号,采样也必须满足 Nyquist 定理。
在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。
无限长的序列也往往可以用有限长序列来逼近。
对于有限长的序列我们可以使用离散傅立叶变换(DFT ),这一变换可以很好地反应序列的频域特性,并且容易利用快速算法在计算机上实现当序列的长度是 N 时,我们定义离散傅立叶变换为:∑-===10)()]([)(N n kn NW n x n x DFT K X (2-7) 其中,N j N e W π2-=它的反变换定义为:∑-=-==10)(1)]([)(N k kn N W k X N k X IDFT n x (2-8) 根据式(2-3)和(2-7)令 k N W z -=,则有)]([)()(10n x DFT W n x z X N n kn N W z k N ==∑-==- (2-9)可以得到 k N k N j W z W e z X k X k N -===-,)()(2π是 z 平面单位圆上幅角为k Nπω2=的点,就是将单位圆进行 N 等分以后第 k 个点。
基于FFT的连续信号谱分析设计 毕 业 设 计(论文) 题 目: 基于FFT的连续信号谱分析
学 院: 电气与电子信息工程学院 专业名称: 电子信息工程 学 号: 学生姓名: XX 指导教师:
2013年 05月 25日 摘 要 3
离散傅里叶变换(DFT)的快速算法FFT的出现,使DFT在数字通信、语音信号处理、图像处理、功率谱估计、系统分析与仿真等各个领域中都得到了广泛的应用。各种应用一般都以卷积和相关运算的具体计算为依据,或者以DFT为连续傅里叶变换的近似为基础。 本文主要涉及用FFT对连续信号的频谱分析,概述了信号的频谱分析,介绍了谱分析的重要性,连续信号谱分析的过程,FFT算法的思想及性质;利用matlab软件编制信号产生子程序,对典型信号进行谱分析并用仿真实现,绘制不同采样下的时域波形和频谱特性;根据谱分析的结果验证DFT的共轭对称性;了解可能出现的分析误差及其原因。通过matlab软件,我们演示了部分基本信号的波形和变换,使我们可以直观的了解和掌握信号与系统,数字信号处理的一些基本知识。
关键词:谱分析;DFT;FFT;matlab;连续信号 ABSTRACT Digital signal processing course is a basic course of the telecommunications, in which the signal spectrum analysis is very common in practical applications. The emergence of the fast algorithm FFT of DFT, makes DFT have been widely used in various fields of system analysis and simulation such as in digital communications, speech signal processing, image processing, power spectrum estimation and so on. The various applications are generally based on the specific calculation of the convolution and correlation calculation, or the approximation of continuous Fourier Transform . This paper introduce the signal spectrum analysis,and summarizes the importance of spectrum analysis ,the processes of spectral, the ideas and nature of FFT (Fast Fourier Transform); use the matlab software to develop signal generation subroutine to achieve the typical signal spectral analysis and simulation, draw time-domain waveform and spectrum characteristics under different sampling; verify the conjugate symmetry of DFT Based on the results of spectral analysis; understand errors and their causes of the possible analysis. In that experiment,we demonstrate some waveforms and transforms of the basic signals, so that we can intuitively understand and grasp the Basic knowledge of signals and systems and digital signal processing.
Key words:spectrum analysis;Discrete Fourier Transform;Fast Fourier Transform; matlab;Continuous signal目 录 1 引言 ............................................................................................................................. 1 1.1 数字信号处理概述 .......................................................................................... 1 1.2 连续信号的频谱分析 ...................................................................................... 2 1.3 谱分析的研究意义 .......................................................................................... 2 2 离散傅里叶变换(DFT) ......................................................................................... 3 2.1 离散傅里叶变换的性质 .................................................................................. 3 2.2 利用DFT计算模拟信号的傅里叶变换 ........................................................ 3 2.2.1 连续信号谱分析原理 ........................................................................... 3 2.2.2 对连续非周期信号的傅里叶变换的DFT逼近 ................................. 5 2.2.3 对连续时间周期信号的傅里叶级数的DFS逼近 ............................. 7 2.2.4 利用DFT对非周期连续时间信号傅里叶变换逼近的误差分析 ..... 8 3 快速傅里叶变换(FFT) ............................................................................................... 9 3.1 FFT的来源 .................................................................................................... 10 3.2 按时间抽选(DIT)的基-2FFT算法(库利-图基算法) ........................ 11 3.2.1 算法原理 ............................................................................................. 11 3.2.2 运算量 ................................................................................................. 17 3.2.3 按时间抽选FFT算法的特点 ............................................................ 17 4 数字信号处理 MATLAB实现的基本知识 ........................................................... 21 4.1 MATLAB简介 .............................................................................................. 21 4.2 利用Matlab计算FFT的子函数 ................................................................ 21 4.3 利用MATLAB实现信号仿真 ..................................................................... 22 5 总结与展望 ............................................................................................................... 32 5.1 总结 ................................................................................................................ 32 5.2 展望 ................................................................................................................ 33 致谢 ................................................................................................................................. 33 参考文献 ......................................................................................................................... 35