实验三 用FFT对信号进行频谱分析及MATLAB程序
- 格式:doc
- 大小:242.00 KB
- 文档页数:8
用MATLAB进行FFT频谱分析假设一信号:()()292.7/2cos1.0996.2/2sin1.06.0+++=ttRππ画出其频谱图。
分析:首先,连续周期信号截断对频谱的影响。
DFT变换频谱泄漏的根本原因是信号的截断。
即时域加窗,对应为频域卷积,因此,窗函数的主瓣宽度等就会影响到频谱。
实验表明,连续周期信号截断时持续时间与信号周期呈整数倍关系时,利用DFT变换可以得到精确的模拟信号频谱。
举一个简单的例子:()ππ2.0100cos+=tY其周期为。
截断时不同的持续时间影响如图一.1:(对应程序)140.0160.0180.02截断时,时间间期为周期整数倍,频谱图0.0250.0320406080100截断时,时间间期不为周期整数倍,频谱图图错误!文档中没有指定样式的文字。
.1其次,采样频率的确定。
根据Shannon 采样定理,采样带限信号采样频率为截止频率的两倍以上,给定信号的采样频率应>1/,取16。
再次,DFT 算法包括时域采样和频域采样两步,频域采样长度M 和时域采样长度N 的关系要符合M ≧N 时,从频谱X(k)才可完全重建原信号。
实验中信号R 经采样后的离散信号不是周期信号,但是它又是一个无限长的信号,因此处理时时域窗函数尽量取得宽一些已接近实际信号。
实验结果如图一.2:其中,0点位置的冲激项为直流分量造成(对应程序为)0204060801001201401601802000.40.50.60.70.800.050.10.150.20.250.30.350.40.450.550100150图 错误!文档中没有指定样式的文字。
.2♣ARMA (Auto Recursive Moving Average )模型:将平稳随机信号x(n)看作是零均值,方差为σu 2的白噪声u(n)经过线性非移变系统H(z)后的输出,模型的传递函数为()()()∑∑=-=-+==Pk kk Qr r rza zb z A z B z H 111用差分方程表示为()()()∑∑==-+--=Qr r P k k r n u b k n x a n x 01AR (Auto Recursive )自回归模型,即ARMA 模型中系数b 只有在r=0的情况下为1,其余都是零,获得一个全极点模型:()()()∑=-+==Pk kk za z A z B z H 111差分方程表示为:()()()n u k n x a n x Pk k +--=∑=1AR 模型的功率谱估计为:()()()Ω-ΩΩ=j j uj x e A e A eS 12σ程序:%%------------------------------------------------------------------------%%功能:利用MATLAB 的FFT 函数做双正弦信号频谱分析 %%------------------------------------------------------------------------ fs=16; t=0:1/fs:200;x6=+sin(2*pi*t/*+cos(2*pi*t/+2)*;subplot(2,1,1);plot(t,x6);N=length(t);subplot(212);plot((-N/2:N/2-1)*fs/N,abs(fftshift(fft(x6,N)))) %绘制信号的频谱,横轴对应实际频率axis([0 0 160]);例子:%%------------------------------------------------------------------------%%功能:连续周期信号截断对频谱的影响%%------------------------------------------------------------------------fs=8000;n1=;n=0:1/fs:n1;n=n(1,1:end-1);N=length(n);y=cos(100*pi*n+*pi);subplot(2,2,1);plot(n,y);title('函数y=cos(100{\pi}t+{\pi})');subplot(2,2,2);stem((-N/2:N/2-1)*fs/N,abs(fftshift(fft(y,N))));axis([0 1000 0 100]);grid on;title('截断时,时间间期为周期整数倍,频谱图');n1=;n=0:1/fs:n1;n=n(1,1:end-1);N=length(n);y=cos(100*pi*n+*pi);subplot(2,2,3);plot(n,y);title('函数y=cos(100{\pi}t+{\pi})');subplot(2,2,4);stem((-N/2:N/2-1)*fs/N,abs(fftshift(fft(y,N))));axis([0 1000 0 100]);grid on;title('截断时,时间间期不为周期整数倍,频谱图');。
实验三用FFT对信号进行频谱分析和MATLAB程序实验三中使用FFT对信号进行频谱分析的目的是通过将时域信号转换为频域信号,来获取信号的频谱信息。
MATLAB提供了方便易用的函数来实现FFT。
首先,我们需要了解FFT的原理。
FFT(快速傅里叶变换)是一种快速计算离散傅里叶变换(DFT)的算法,用于将离散的时间域信号转换为连续的频域信号。
FFT算法的主要思想是将问题划分为多个规模较小的子问题,并利用DFT的对称性质进行递归计算。
FFT算法能够帮助我们高效地进行频谱分析。
下面是一个使用MATLAB进行频谱分析的示例程序:```matlab%生成一个10秒钟的正弦波信号,频率为1Hz,采样率为100Hzfs = 100; % 采样率t = 0:1/fs:10-1/fs; % 时间范围f=1;%正弦波频率x = sin(2*pi*f*t);%进行FFT计算N = length(x); % 信号长度X = fft(x); % FFT计算magX = abs(X)/N; % 幅值谱frequencies = (0:N-1)*(fs/N); % 频率范围%绘制频谱图figure;plot(frequencies, magX);xlabel('频率(Hz)');ylabel('振幅');title('信号频谱');```上述代码生成了一个10秒钟的正弦波信号,频率为1 Hz,采样率为100 Hz。
通过调用MATLAB的fft函数计算信号的FFT,然后计算每个频率分量的幅值谱,并绘制出信号频谱图。
在频谱图中,横轴表示频率,纵轴表示振幅。
该实验需要注意以下几点:1.信号的采样率要与信号中最高频率成一定比例,以避免采样率不足导致的伪频谱。
2.FFT计算结果是一个复数数组,我们一般只关注其幅值谱。
3.频率范围是0到采样率之间的频率。
实验三的报告可以包含以下内容:1.实验目的和背景介绍。
Matlab编程实现FFT变换及频谱分析的程序代码内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************** **********%% FFT实践及频谱分析%%*************************************************************** **********%%*************************************************************** **********%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128');grid;%求均方根谱sq=abs(y);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱');grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************% fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形'); grid;。
matlab 信号频谱分析实验报告《Matlab 信号频谱分析实验报告》实验目的:通过Matlab软件对信号进行频谱分析,了解信号的频谱特性,并掌握频谱分析的基本方法。
实验原理:信号的频谱分析是指将信号在频域上进行分析,得到信号的频谱特性。
频谱分析可以帮助我们了解信号的频率成分,频率分布情况,以及信号的频谱密度等信息。
在Matlab中,可以使用fft函数对信号进行频谱分析,得到信号的频谱图像。
实验步骤:1. 生成信号:首先在Matlab中生成一个信号,可以是正弦信号、方波信号或者任意复杂的信号。
2. 采样信号:对生成的信号进行采样,得到离散的信号序列。
3. 频谱分析:使用fft函数对采样的信号进行频谱分析,得到信号的频谱特性。
4. 绘制频谱图像:将频谱分析得到的结果绘制成频谱图像,观察信号的频谱分布情况。
实验结果分析:通过频谱分析,我们可以得到信号的频谱图像,从图像中可以清晰地看出信号的频率成分,频率分布情况,以及信号的频谱密度等信息。
通过对信号频谱图像的观察和分析,可以更好地了解信号的频谱特性,为后续的信号处理和分析提供参考。
实验结论:通过本次实验,我们成功使用Matlab对信号进行了频谱分析,得到了信号的频谱特性,并且掌握了频谱分析的基本方法。
频谱分析是信号处理和分析的重要工具,对于理解信号的频率特性和频率分布情况具有重要意义。
希望通过本次实验,能够对信号的频谱分析有更深入的了解,并且能够在实际工程中应用到相关领域。
通过本次实验,我们对Matlab信号频谱分析有了更深入的了解,对信号处理和分析有了更深入的认识,也为我们今后的学习和工作提供了更多的帮助。
希望通过不断地实践和学习,能够更加深入地掌握信号频谱分析的相关知识,为实际工程应用提供更多的帮助。
实验三用FFT 对信号进行频谱分析一 实验目地1 能够熟练掌握快速离散傅立叶变换地原理及应用FFT 进行频谱分析地基本方法; 2了解用FFT 进行频谱分析可能出现地分析误差及其原因;二 实验原理1.用DFT 对非周期序列进行谱分析单位圆上地Z 变换就是序列地傅里叶变换,即()()j j z e X e X z ωω== (3-1)()j X e ω是ω地连续周期函数.对序列()x n 进行N 点DFT 得到()X k ,则()X k 是在区间[]0,2π上对()j X e ω地N 点等间隔采样,频谱分辨率就是采样间隔2Nπ.因此序列地傅里叶变换可利用DFT (即FFT )来计算.用FFT 对序列进行谱分析地误差主要来自于用FFT 作频谱分析时,得到地是离散谱,而非周期序列地频谱是连续谱,只有当N 较大时,离散谱地包络才能逼近连续谱,因此N 要适当选择大一些.2.用DFT 对周期序列进行谱分析已知周期为N 地离散序列)(n x ,它地离散傅里叶级数DFS 分别由式(3-2)和(3-3) 给出:DFS : ∑-=-=12)(1N n kn N j k e n x N a π , n =0,1,2,…,N -1 (3-2) IDFS : ∑-==102)(N k kn N j ke a n x π , n =0,1,2,…,N -1 (3-3) 对于长度为N 地有限长序列x (n )地DFT 对表达式分别由式(3-4)和(3-5)给出: DFT :∑-=-=102)()(N n kn N j e n x k X π , n =0,1,2,…,N -1 (3-4)IDFT : ∑-==102)(1)(N k kn N j e k X N n x π,n =0,1,2,…,N -1 (3-5) FFT 为离散傅里叶变换DFT 地快速算法,对于周期为N 地离散序列x (n )地频谱分析便可由式(3-6)和(3-7)给出:DTFS : 1*(())k a fft x n N= (3-6)IDTFS : ()*()k x n N i f f t a = (3-7)周期信号地频谱是离散谱,只有用整数倍周期地长度作FFT ,得到地离散谱才能代表周期信号地频谱.3.用DFT 对模拟周期信号进行谱分析对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号.对于模拟周期信号,也应该选取整数倍周期地长度,经采样后形成周期序列,按照周期序列地谱分析进行.如果不知道信号地周期,可以尽量选择信号地观察时间长一些.三 实验内容1.对以下序列进行谱分析:14()()x n R n =2103()84700n n x n nn thers +≤≤⎧⎪=-≤≤⎨⎪⎩3403()34700n n x n n n thers-≤≤⎧⎪=-≤≤⎨⎪⎩ 选择FFT 地变换区间N 为8和16两种情况进行频谱分析.分别打印其幅频特性曲线,并进行对比、分析和讨论.2.对以下周期序列进行谱分析:4()cos()4x n n π= 5()cos()cos()48x n n n ππ=+ 选择FFT 地变换区间N 为8和16两种情况进行频谱分析.分别打印其幅频特性曲线,并进行对比、分析和讨论.3.对模拟周期信号进行谱分析: 6()cos(8)cos(16)cos(20)x t t t t πππ=++选择采样频率64s F Hz ,对变换区间N 分别取16、32、64三种情况进行谱分析.分别打印其幅频特性曲线,并进行对比、分析和讨论.四 思考题1. 对于周期序列,如果周期不知道,如何用FFT 进行谱分析?2. 如何选择FFT 地变换区间?(包括非周期信号和周期信号)3. 当N=8时,2()x n 和3()x n 地幅频特性会相同吗?为什么?N=16呢?五 实验报告及要求1. 完成各个实验任务和要求,附上程序清单和有关曲线.2. 简要回答思考题.程序代码:%用FFT 对信号作频谱分析clear all;close all;%实验(1)x1n=[ones(1,4)]; %产生序列向量R4(n)M=8;xa=1:(M/2);xb=(M/2):-1:1;x2n=[xa,xb]; %产生长度为8地三角波序列x2(n)、x3(n)x3n=[xb,xa];X1k8=fft(x1n,8); %计算x1n地8点DFTX1k16=fft(x1n,16); %计算x1n地16点DFTX2k8=fft(x2n,8); %计算x2n地8点DFTX2k16=fft(x2n,16); %计算x2n地16点DFTX3k8=fft(x3n,8); %计算x3n地8点DFTX3k16=fft(x3n,16); %计算x3n地16点DFT%幅频特性曲线N=8;wk=2/N*(0:N-1);subplot(3,2,1);stem(wk,abs(X1k8),'.'); %绘制8点DFT地幅频特性图title('(1a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,3);stem(wk,abs(X2k8),'.');title('(2a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,5);stem(wk,abs(X3k8),'.');title('(3a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');N=16;wk=2/N*(0:N-1);subplot(3,2,2);stem(wk,abs(X1k16),'.'); %绘制16点DFT地幅频特性图title('(1b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,4);stem(wk,abs(X2k16),'.');title('(2b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,6);stem(wk,abs(X3k16),'.');title('(3b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');%实验2对周期序列作频谱分析clear all;close all;N=8;n=0:N-1; %FFT地变换区间N=8x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k8=fft(x4n); %计算x4n地8点DFTX5k8=fft(x5n); %计算x5n地8点DFTN=16;n=0:N-1; %FFT地变换区间N=16x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k16=fft(x4n); %计算x4n地16点DFTX5k16=fft(x5n); %计算x5n地16点DFTN=8;w1k=2/N*(0:N-1);subplot(2,2,1);stem(w1k,abs(X4k8),'.'); %绘制8点DFT地幅频特性图title('(4a) 8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X4k8))]);subplot(2,2,3);stem(w1k,abs(X5k8),'.'); %绘制8点DFT地幅频特性图title('(5a)8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X5k8))]);N=16;w2k=2/N*(0:N-1);subplot(2,2,2);stem(w2k,abs(X4k16),'.'); %绘制16点DFT地幅频特性图title('(4b) 16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X4k16))]);subplot(2,2,4);stem(w2k,abs(X5k16),'.'); %绘制16点DFT地幅频特性图title('(5b)16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X5k16))]);%实验3对模拟周期信号作谱分析(归一化)Fs=64;T=1/Fs;N=16;n=0:N-1; %FFT地变换区间N=16x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); %对x6(t)16点采样X6k16=fft(x6nT); %计算x6nT地16点DFTTp=N*T;F=1/Tp; %频率分辨率Fk=0:N-1;fk=2*k/N; %产生16点DFT对应地采样点频率(以零频率为中心)subplot(3,1,1);stem(fk,abs(X6k16),'.'); %绘制16点DFT地幅频特性图title('(6a) 16点DFT[x_6(nT)]|');xlabel('\omega/\pi');ylabel('幅度');N=32;n=0:N-1; %FFT地变换区间N=32x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); %对x6(t)32点采样X6k32=fft(x6nT); %计算x6nT地32点DFTTp=N*T;F=1/Tp; %频率分辨率Fk=0:N-1;fk=2*k/N; %产生32点DFT对应地采样点频率(以零频率为中心)subplot(3,1,2);stem(fk,abs(X6k32),'.');%绘制32点DFT地幅频特性图title('(6b) 32点DFT[x_6(nT)]|');xlabel('\omega/\pi');ylabel('幅度');N=64;n=0:N-1; %FFT地变换区间N=64x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); %对x6(t)64点采样X6k64=fft(x6nT); %计算x6nT地64点DFTTp=N*T;F=1/Tp; %频率分辨率Fk=0:N-1;fk=2*k/N; %产生64点DFT对应地采样点频率(以零频率为中心)subplot(3,1,3);stem(fk,abs(X6k64),'.'); %绘制64点DFT地幅频特性图title('(6c) 64点DFT[x_6(nT)]|');xlabel('\omega/\pi');ylabel('幅度');五、思考题及实验体会4.思考题(1)对于周期序列,如果周期不知道,如何用FFT进行谱分析?(2)如何选择FFT地变换区间?(包括非周期信号和周期信号)(3)当N=8时,)(2n x 和)(3n x 地幅频特性会相同吗?为什么?N=16 呢?答:(1)、如果)(n x 地周期预先不知道,可截取M 点进行DFT ,即)]([)()()()(n x DFT n X n R n x n x M M M M == 0≤k ≤M-1再将截取长度扩大1倍,截取)]([)()()(2222n x DFT n X n R n x M M M M == 0≤k ≤2M-1比较)(k x M 和 )(2k X M ,如果两者地主谱差别满足分析误差要求,则以)(k x M 或 )(2k X M 近似表示)(n x 地频谱,否则,继续将截取长度加倍,直至前后两次分析所得主谱频率差别满足误差要求.设最后截取长度为,iM 则)(0k X iM 表示0)]/(2[k iM πω=点地谱线强度.(2)频谱分辨率直接D 和FFT 地变换区间N 有关,因为FFT 能够实现地频率分辨率是N /2π,因此要求D N ≤/2π.可以根据此式选择FFT 地变换区间N.(3)当N=8时,)(2n x 和)(3n x 地幅频特性会相同.当N=16时,)(2n x 和)(3n x 地幅频特性会不相同.通过实验,我知道了用FFT 对信号作频谱分析是学习数字信号处理地重要内容.经常需要进行谱分析地信号是模拟信号和时域离散信号.对信号进行谱分析地重要问题是频谱分辨率D 和分析误差.频谱分辨率直接和FFT 地变换区间N 有关,因为FFT 能够实现地频率分辨率是2л/N ≤D.可以根据此式选择FFT 地变换区间N.误差主要来自于用FFT 作频谱分析时,得到地是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时,离散谱地包络才能逼近于连续谱,因此N 要适当选择大一些.周期信号地频谱是离散谱,只有用整数倍周期地长度作FFT ,得到地离散谱才能代表周期信号地频谱.如果不知道信号周期,可以尽量选择信号地观察时间长一些.对模拟信号进行频谱分析时,首先要按照采样定理将其变成时域离散信号.如果是模拟周期信号,也应该选取整数倍周期地长度,经过采样后形成周期序列,按照周期序列地普分析进行.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.IAg9q。
∑-=--==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泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。
实验二:时域采样与频域采样一、时域采样1.用MATLAB编程如下:%1时域采样序列分析fs=1000A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=1000;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs); Xk=fft(xn);subplot(3,2,1);stem(n,xn);xlabel('n,fs=1000Hz');ylabel('xn');title('xn');subplot(3,2,2);plot(n,abs(Xk));xlabel('k,fs=1000Hz'); title('|X(k)|');%1时域采样序列分析fs=200A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=200;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs);Xk=fft(xn);subplot(3,2,3);stem(n,xn);xlabel('n,fs=200Hz'); ylabel('xn');title('xn');subplot(3,2,4);plot(n,abs(Xk));xlabel('k,fs=200Hz'); title('|X(k)|');%1时域采样序列分析fs=500A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=500;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs); Xk=fft(xn);subplot(3,2,5);stem(n,xn);xlabel('n,fs=500Hz');ylabel('xn');title('xn');subplot(3,2,6);plot(n,abs(Xk));xlabel('k,fs=500Hz'); title('|X(k)|');2.经调试结果如下图:20406080-200200n,fs=1000Hzxnxn2040608005001000k,fs=1000Hz|X (k)|51015-2000200n,fs=200Hzx nxn510150100200k,fs=200Hz |X(k)|10203040-2000200n,fs=500Hzx nxn102030400500k,fs=500Hz|X (k)|实验结果说明:对时域信号采样频率必须大于等于模拟信号频率的两倍以上,才 能使采样信号的频谱不产生混叠.fs=200Hz 时,采样信号的频谱产生了混叠,fs=500Hz 和fs=1000Hz 时,大于模拟信号频率的两倍以上,采样信号的频谱不产生混叠。
matlab fft谱分析实验报告Matlab FFT谱分析实验报告引言谱分析是一种常用的信号处理技术,用于研究信号的频率成分和能量分布。
傅里叶变换是一种常见的谱分析方法,而Matlab中的FFT函数则是实现傅里叶变换的强大工具。
本实验旨在通过使用Matlab中的FFT函数对不同类型的信号进行谱分析,探索其在实际应用中的作用和价值。
实验方法1. 生成信号首先,我们使用Matlab中的函数生成几种不同类型的信号,包括正弦信号、方波信号和噪声信号。
通过调整信号的频率、幅度和噪声水平,我们可以模拟不同的实际场景。
2. 调用FFT函数接下来,我们使用Matlab中的FFT函数对生成的信号进行频谱分析。
FFT函数将信号从时域转换到频域,提供了信号在不同频率上的能量分布情况。
3. 绘制频谱图通过调用Matlab中的绘图函数,我们可以将FFT函数输出的频谱数据可视化为频谱图。
频谱图通常以频率为横轴,能量或幅度为纵轴,展示了信号在不同频率上的能量分布情况。
实验结果1. 正弦信号的频谱分析我们首先对一个频率为50Hz、幅度为1的正弦信号进行频谱分析。
结果显示,该信号在50Hz附近有一个明显的峰值,表示信号主要由50Hz频率成分组成。
2. 方波信号的频谱分析接下来,我们对一个频率为10Hz、幅度为1的方波信号进行频谱分析。
由于方波信号包含丰富的谐波成分,频谱图中出现了多个峰值,每个峰值对应一个谐波成分。
3. 噪声信号的频谱分析最后,我们对一个包含高斯噪声的信号进行频谱分析。
噪声信号的频谱图呈现出平坦的能量分布,没有明显的峰值。
这说明噪声信号在各个频率上都有一定的能量分布,没有明显的频率成分。
讨论与分析通过对不同类型信号的频谱分析,我们可以得出以下结论:1. 正弦信号的频谱图呈现出一个明显的峰值,表示信号主要由该频率成分组成。
这对于识别和分析周期性信号非常有用。
2. 方波信号的频谱图呈现出多个峰值,每个峰值对应一个谐波成分。
实验三用FFT对信号作频谱分析_实验报告一、实验目的1.学习使用FFT(快速傅里叶变换)对信号进行频谱分析;2.掌握频谱分析的基本原理和方法;3.熟悉使用MATLAB进行频谱分析的操作。
二、实验原理FFT是一种基于傅里叶变换的算法,可以将时域信号转换为频域信号,并将信号的频谱特征展示出来。
在频谱分析中,我们通过分析信号的频谱可以获得信号的频率、幅值等信息,从而对信号的性质和特征进行研究。
对于一个连续信号,我们可以通过采样的方式将其转换为离散信号,再利用FFT算法对离散信号进行频谱分析。
FFT算法可以将信号从时域转换到频域,得到离散的频谱,其中包含了信号的频率分量以及对应的幅值。
MATLAB中提供了fft函数,可以方便地对信号进行FFT分析。
通过对信号进行FFT操作,可以得到信号的频谱图,并从中提取出感兴趣的频率信息。
三、实验步骤1.准备工作:(2)建立新的MATLAB脚本文件。
2.生成信号:在脚本中,我们可以通过定义一个信号的频率、幅值和时间长度来生成一个信号的波形。
例如,我们可以生成一个频率为1000Hz,幅值为1的正弦波信号,并设置信号的时间长度为1秒。
3.对信号进行FFT分析:调用MATLAB中的fft函数,对信号进行FFT分析。
通过设置采样频率和FFT长度,可以得到信号的频谱。
其中,采样频率是指在单位时间内连续采样的次数,FFT长度是指离散信号的样本点数。
4.绘制频谱图:调用MATLAB中的plot函数,并设置x轴为频率,y轴为幅值,可以绘制出信号的频谱图。
频谱图上横坐标表示信号的频率,纵坐标表示信号的幅值,通过观察可以得到信号的频率分布情况。
四、实验结果在实验过程中,我们生成了一个频率为1000Hz,幅值为1的正弦波信号,并对其进行FFT分析。
通过绘制频谱图,我们发现信号在1000Hz处有最大幅值,说明信号主要由这一频率成分组成。
五、实验总结本实验通过使用FFT对信号进行频谱分析,我们可以方便地从信号的波形中提取出频率分量的信息,并绘制出频谱图进行观察。
实验2-1 利用DFT分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法二、实验内容1.x(n)= {2 ,−1 ,1 ,1},完成如下要求:1)计算其DTFT,并画出[−π ,π ]区间的波形2)计算4 点DFT,并把结果显示在(1)所画的图形中3)对x (n)补零,计算64 点DFT,并显示结果4)是否可以由DFT 计算DTFT,如果可以,请编程实现程序代码xn=[2,-1,1,1];n=0:3;w=-pi:0.01:pi;X=xn*exp(-1i*n'*w); %计算DTFTyy=abs(X);subplot(211);plot(w,yy); %绘出DTFT后的波形Y=fft(xn); %利用FFT计算4点DFTyy=abs(Y);hold on;stem((0:3),yy); %绘出DFT后的波形,并同绘在一个图中N=64;m=6;xn=[2,-1,1,1];xn=[xn,zeros(1,60)]; %对xn补零y=fft(xn);yy=abs(y);f=0:N-1;subplot(212);stem(f,yy); %绘出64点DFT图hold on;plot(f,yy); %由DFT通过绘制包络近似得到DTFT 进行试验输出图像:由图可推得DFT所取的点数越多,DFT越逼近DTFT故增加补零项,取1024个点程序如下:x1=[2 -1 1 1];N=1024;x2=linspace(0,0,N-4);x=[x1,x2];n=0:(N-1);w=0:0.01:2*pi/N*(N-1); %计算序列DTFTX=x*exp(-j*n'*w);subplot(211); %绘制DTFT图像plot(w*N/(2*pi),abs(X),'k');xlabel('Nw/2\pi');title('DTFT[x(n)]');xn=[2,-1,1,1];xn=[xn,zeros(1,1020)]; %对xn补零y=fft(xn);f=0:N-1;subplot(212); plot(f,abs(y),'k');%绘制DFT 图像xlabel('k'); title('DFT[x(n)]');输出图像:由图可知,当N 取1024点时,DFT 已经可以很好的近似DTFT 。
MATLAB关于FFT频谱分析的程序```Matlab%定义信号参数fs = 1000; % 采样频率t = 0:1/fs:1-1/fs; % 时间向量f1=10;%第一个频率成分f2=100;%第二个频率成分x = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 信号%计算信号的FFTN = length(x); % 信号长度X = fft(x); % FFT变换X_mag = abs(X(1:N/2))/N; % 取FFT结果的一半并除以信号长度得到幅度谱f = (0:N/2-1)*fs/N; % 计算频率向量%绘制频谱figure;plot(f, X_mag);xlabel('Frequency (Hz)');ylabel('Magnitude');title('FFT Spectrum Analysis');grid on;```在上述程序中,我们首先定义了信号的参数,例如采样频率(fs)、时间向量(t)和信号的频率成分(f1和f2)。
然后,我们使用这些参数生成信号(x),该信号是由两个不同频率的正弦波叠加而成。
接下来,我们计算信号的FFT(通过调用fft函数),并使用abs函数取FFT结果的绝对值。
我们还将FFT结果的一半(因为FFT结果是对称的,前一半包含了频谱信息)除以信号长度,得到幅度谱(X_mag)。
频率向量(f)通过简单计算得到。
使用上述程序,我们可以计算并绘制任意信号的频谱。
只需修改信号的参数、生成信号的代码和绘图设置,就可以适应不同的应用需求。
除了上述示例程序,MATLAB还提供了许多其他函数和工具,用于更详细的频谱分析,如频谱图的平滑、窗函数的应用、频谱峰值的查找等。
读者可以根据自己的需求进一步研究和探索MATLAB的频谱分析功能。
实验三:用FFT对信号作频谱分析_实验报告一、实验目的:掌握用FFT对信号作频谱分析的方法。
二、实验仪器:1、计算机;2、MATLAB软件。
三、实验原理:FFT即快速傅里叶变换,是一种用来处理数字信号的算法,其将一个信号从时域(即时间域)中转换到了频域中。
傅里叶变换可以将时域上的信号转换到频域上,分析其中的各频率分量,以及各分量的大小、相位等。
由于实验过程较为简单,这里就不展开讲解。
四、实验内容:假设现在有一个包含了多种频率成分的信号,要求对其进行频谱分析。
五、实验步骤:(1)生成信号,此处生成的信号包含了2种频率成分。
```Fs=2000; %采样率T=1/Fs; %采样周期N=1024; %采样点数t=(0:N-1)*T; %时域采样点f1=150; %第一个频率成分f2=600; %第二个频率成分x=sin(2*pi*f1*t)+0.3*sin(2*pi*f2*t); %合成信号```(2)做傅里叶变换,将信号转换到频域。
```Y=fft(x); %做傅里叶变换P2=abs(Y/N); %取模P1=P2(1:N/2+1); %取单边谱P1(2:end-1)=2*P1(2:end-1); %翻倍f=Fs*(0:(N/2))/N; %频率点```(3)画出频谱图并分析。
```figuresubplot(2,1,1);plot(t,x);title('时域波形');xlabel('时间/s');ylabel('幅值/V');subplot(2,1,2);plot(f,P1,'r');title('频域谱图');xlabel('频率/Hz');ylabel('幅值/V');```六、实验结果分析:根据实验结果,可以看出原信号中包含的频率成分明显,且经过傅里叶变换后的频域谱图也反映出了信号中各个频率成分的大小和出现的频率位置。
实验三用FFT对信号作频谱分析_实验报告一、实验目的1.理解离散傅里叶变换(FFT)的原理和应用;2.学会使用FFT对信号进行频谱分析;3.掌握频谱分析的基本方法和实验操作。
二、实验原理离散傅里叶变换(FFT)是一种用来将时域信号转换为频域信号的数学工具。
其基本原理是将连续时间信号进行离散化,然后通过对离散信号进行傅里叶变换得到离散频域信号。
傅里叶变换(Fourier Transform)是一种将时域信号转换为频域信号的方法。
在信号处理中,经常需要对信号的频谱进行分析,以获取信号的频率分量信息。
傅里叶变换提供了一种数学方法,可以将时域信号转换为频域信号,实现频谱分析。
在频谱分析中,我们常常使用快速傅里叶变换(Fast Fourier Transform,FFT)算法进行离散信号的频谱计算。
FFT算法可以高效地计算出离散信号的频谱,由于计算复杂度低,广泛应用于信号处理和频谱分析的领域。
频谱分析的流程一般如下:1.采集或生成待分析的信号;2.对信号进行采样;3.对采样得到的信号进行窗函数处理,以改善频谱的分辨率和抑制信号泄漏;4.使用FFT算法对窗函数处理得到的信号进行傅里叶变换;5.对傅里叶变换得到的频谱进行幅度谱和相位谱分析;6.对频谱进行解释和分析。
三、实验内容实验所需材料和软件及设备:1.信号发生器或任意波形发生器;2.数字示波器;3.计算机。
实验步骤:1.连接信号发生器(或任意波形发生器)和示波器,通过信号发生器发送一个稳定的正弦波信号;2.调节信号频率、幅度和偏置,得到不同的信号;3.使用数字示波器对信号进行采样,得到离散时间信号;4.对采样得到的信号进行窗函数处理;5.对窗函数处理得到的信号进行FFT计算,得到频谱;6.使用软件将频谱进行幅度谱和相位谱的分析和显示。
四、实验结果与分析1.信号频谱分析结果如下图所示:(插入实验结果图)从频谱图中可以看出,信号主要集中在一些频率上,其他频率基本没有,表明信号主要由该频率成分组成。
MATLAB中FFT的使用方法(频谱分析)一.调用方法X=FFT(x);X=FFT(x,N);x=IFFT(X);x=IFFT(X,N)用MATLAB进行谱分析时注意:(1)函数FFT返回值的数据结构具有对称性。
例:N=8;n=0:N-1;xn=[4 3 2 6 7 8 9 0];Xk=fft(xn)→Xk =39.0000 -10.7782 + 6.2929i 0 - 5.0000i 4.7782 - 7.7071i 5.0000 4.7782 + 7.7071i 0 + 5.0000i -10.7782 - 6.2929iXk与xn的维数相同,共有8个元素。
Xk的第一个数对应于直流分量,即频率值为0。
(2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。
在IFFT时已经做了处理。
要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。
二.FFT应用举例例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。
采样频率fs=100Hz,分别绘制N=128、1024点幅频图。
clf;fs=100;N=128; %采样频率和数据点数n=0:N-1;t=n/fs; %时间序列x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求得Fourier变换后的振幅f=n*fs/N; %频率序列subplot(2,2,1),plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=128');grid on;subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=128');grid on;%对信号采样数据为1024点的处理fs=100;N=1024;n=0:N-1;t=n/fs;x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求取Fourier变换的振幅f=n*fs/N;subplot(2,2,3),plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=1024');grid on;subplot(2,2,4)plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=1024');grid on;运行结果:fs=100Hz,Nyquist频率为fs/2=50Hz。
Matlab FFT 谱分析实验报告介绍本实验报告旨在通过使用Matlab进行FFT(快速傅里叶变换)谱分析,详细介绍该方法的步骤和应用。
FFT是一种常用的信号处理技术,可将时域信号转换为频域信号,并提供了对信号频谱特征进行分析的能力。
实验步骤以下是进行FFT谱分析的步骤:1. 导入信号数据首先,我们需要将待分析的信号数据导入Matlab中。
可以使用load函数加载存储信号数据的文件,或者直接在脚本中定义信号数据。
2. 对信号数据进行预处理在进行FFT谱分析之前,通常需要对信号数据进行预处理。
这可能包括去除噪声、滤波等操作。
在本实验中,我们将假设信号数据已经经过了必要的预处理步骤。
3. 执行FFT变换使用fft函数对信号数据执行FFT变换。
该函数将信号从时域转换为频域,并返回频谱数据。
4. 计算频谱幅度通过对FFT变换结果应用幅度函数,可以计算出信号在不同频率下的幅度。
这将揭示信号中包含的主要频率分量。
5. 绘制频谱图通过使用Matlab的绘图功能,可以将频谱数据可视化为频谱图。
频谱图可以帮助我们更好地理解信号的频谱分布情况。
6. 分析结果根据频谱图,我们可以观察信号的主要频率成分以及它们的幅度。
这有助于我们了解信号的频域特征,并可以用于识别信号中的噪声或其他异常。
实验应用FFT谱分析在许多领域中都有广泛的应用。
以下是一些常见的应用领域:1. 信号处理FFT谱分析可用于处理和分析各种类型的信号,例如音频信号、生物医学信号和电力信号等。
通过分析信号的频谱特征,我们可以提取出信号中的重要信息。
2. 通信系统在通信系统中,FFT谱分析可以用于频谱分配、频谱监测和信号调制等方面。
通过分析信号的频谱特征,我们可以更好地设计和优化通信系统。
3. 振动分析FFT谱分析可用于振动分析领域,用于分析和诊断机械系统的振动特征。
通过分析振动信号的频谱,可以检测到机械系统中的故障和异常。
4. 音频处理在音频处理中,FFT谱分析可用于音频信号的频谱分析、音频合成和音频特征提取等方面。
实验三 用FFT 对信号进行频谱分析一 实验目的1 能够熟练掌握快速离散傅立叶变换的原理及应用FFT 进行频谱分析的基本方法; 2了解用FFT 进行频谱分析可能出现的分析误差及其原因;二 实验原理1.用DFT 对非周期序列进行谱分析单位圆上的Z 变换就是序列的傅里叶变换,即()()j j z e X e X z ωω== (3-1)()j X e ω是ω的连续周期函数。
对序列()x n 进行N 点DFT 得到()X k ,则()X k 是在区间[]0,2π上对()j X e ω的N 点等间隔采样,频谱分辨率就是采样间隔2Nπ。
因此序列的傅里叶变换可利用DFT (即FFT )来计算。
用FFT 对序列进行谱分析的误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而非周期序列的频谱是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱,因此N 要适当选择大一些。
2.用DFT 对周期序列进行谱分析已知周期为N 的离散序列)(n x ,它的离散傅里叶级数DFS 分别由式(3-2)和(3-3) 给出:DFS : ∑-=-=12)(1N n kn Nj k e n x N a π, n =0,1,2,…,N -1 (3-2) IDFS : ∑-==102)(N k kn Njk ea n x π, n =0,1,2,…,N -1 (3-3)对于长度为N 的有限长序列x (n )的DFT 对表达式分别由式(3-4)和(3-5)给出: DFT : ∑-=-=102)()(N n kn Njen x k X π , n =0,1,2,…,N -1 (3-4)IDFT : ∑-==12)(1)(N k kn N j e k X N n x π, n =0,1,2,…,N -1 (3-5) FFT 为离散傅里叶变换DFT 的快速算法,对于周期为N 的离散序列x (n )的频谱分析便可由式(3-6)和(3-7)给出:DTFS : 1*(())k a fft x n N=(3-6) IDTFS : ()*()k x n N ifft a = (3-7) 周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT ,得到的离散谱才能代表周期信号的频谱。
实验三 用FFT 对信号进行频谱分析一 实验目的1 能够熟练掌握快速离散傅立叶变换的原理及应用FFT 进行频谱分析的基本方法; 2了解用FFT 进行频谱分析可能出现的分析误差及其原因;二 实验原理1.用DFT 对非周期序列进行谱分析单位圆上的Z 变换就是序列的傅里叶变换,即()()j j z e X e X z ωω== (3-1)()j X e ω是ω的连续周期函数。
对序列()x n 进行N 点DFT 得到()X k ,则()X k 是在区间[]0,2π上对()j X e ω的N 点等间隔采样,频谱分辨率就是采样间隔2Nπ。
因此序列的傅里叶变换可利用DFT (即FFT )来计算。
用FFT 对序列进行谱分析的误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而非周期序列的频谱是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱,因此N 要适当选择大一些。
2.用DFT 对周期序列进行谱分析已知周期为N 的离散序列)(n x ,它的离散傅里叶级数DFS 分别由式(3-2)和(3-3) 给出:DFS : ∑-=-=12)(1N n kn N j k e n x N a π , n =0,1,2,…,N -1 (3-2) IDFS : ∑-==102)(N k kn N j ke a n x π , n =0,1,2,…,N -1 (3-3) 对于长度为N 的有限长序列x (n )的DFT 对表达式分别由式(3-4)和(3-5)给出: DFT : ∑-=-=102)()(N n kn N j e n x k X π , n =0,1,2,…,N -1 (3-4)IDFT : ∑-==102)(1)(N k kn N j e k X N n x π, n =0,1,2,…,N -1 (3-5) FFT 为离散傅里叶变换DFT 的快速算法,对于周期为N 的离散序列x (n )的频谱分析便可由式(3-6)和(3-7)给出:DTFS : 1*(())k a fft x n N= (3-6) IDTFS : ()*()k x n N ifft a = (3-7) 周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT ,得到的离散谱才能代表周期信号的频谱。
3. 用DFT 对模拟周期信号进行谱分析对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
对于模拟周期信号,也应该选取整数倍周期的长度,经采样后形成周期序列,按照周期序列的谱分析进行。
如果不知道信号的周期,可以尽量选择信号的观察时间长一些。
三 实验内容1. 对以下序列进行谱分析:14()()x n R n =2103()84700n n x n nn thers +≤≤⎧⎪=-≤≤⎨⎪⎩3403()34700n n x n n n thers-≤≤⎧⎪=-≤≤⎨⎪⎩ 选择FFT 的变换区间N 为8和16两种情况进行频谱分析。
分别打印其幅频特性曲线,并进行对比、分析和讨论。
2. 对以下周期序列进行谱分析:4()cos()4x n n π= 5()cos()cos()48x n n n ππ=+ 选择FFT 的变换区间N 为8和16两种情况进行频谱分析。
分别打印其幅频特性曲线,并进行对比、分析和讨论。
3. 对模拟周期信号进行谱分析: 6()cos(8)cos(16)cos(20)x t t t t πππ=++选择采样频率64s F Hz ,对变换区间N 分别取16、32、64三种情况进行谱分析。
分别打印其幅频特性曲线,并进行对比、分析和讨论。
四 思考题1. 对于周期序列,如果周期不知道,如何用FFT 进行谱分析?2. 如何选择FFT 的变换区间?(包括非周期信号和周期信号)3. 当N=8时,2()x n 和3()x n 的幅频特性会相同吗?为什么?N=16呢?五 实验报告及要求1. 完成各个实验任务和要求,附上程序清单和有关曲线。
2. 简要回答思考题。
程序代码:%用FFT对信号作频谱分析clear all;close all;%实验(1)x1n=[ones(1,4)]; %产生序列向量R4(n)M=8;xa=1:(M/2);xb=(M/2):-1:1;x2n=[xa,xb]; %产生长度为8的三角波序列x2(n)、x3(n)x3n=[xb,xa];X1k8=fft(x1n,8); %计算x1n的8点DFTX1k16=fft(x1n,16); %计算x1n的16点DFTX2k8=fft(x2n,8); %计算x2n的8点DFTX2k16=fft(x2n,16); %计算x2n的16点DFTX3k8=fft(x3n,8); %计算x3n的8点DFTX3k16=fft(x3n,16); %计算x3n的16点DFT%幅频特性曲线N=8;wk=2/N*(0:N-1);subplot(3,2,1);stem(wk,abs(X1k8),'.'); %绘制8点DFT的幅频特性图title('(1a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,3);stem(wk,abs(X2k8),'.');title('(2a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,5);stem(wk,abs(X3k8),'.');title('(3a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');N=16;wk=2/N*(0:N-1);subplot(3,2,2);stem(wk,abs(X1k16),'.'); %绘制16点DFT的幅频特性图title('(1b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,4);stem(wk,abs(X2k16),'.');title('(2b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,6);stem(wk,abs(X3k16),'.');title('(3b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');%实验2对周期序列作频谱分析clear all;close all;N=8;n=0:N-1; %FFT的变换区间N=8x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k8=fft(x4n); %计算x4n的8点DFTX5k8=fft(x5n); %计算x5n的8点DFTN=16;n=0:N-1; %FFT的变换区间N=16x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k16=fft(x4n); %计算x4n的16点DFTX5k16=fft(x5n); %计算x5n的16点DFTN=8;w1k=2/N*(0:N-1);subplot(2,2,1);stem(w1k,abs(X4k8),'.'); %绘制8点DFT的幅频特性图title('(4a) 8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X4k8))]);subplot(2,2,3);stem(w1k,abs(X5k8),'.'); %绘制8点DFT的幅频特性图title('(5a)8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X5k8))]);N=16;w2k=2/N*(0:N-1);subplot(2,2,2);stem(w2k,abs(X4k16),'.'); %绘制16点DFT的幅频特性图title('(4b) 16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X4k16))]);subplot(2,2,4);stem(w2k,abs(X5k16),'.'); %绘制16点DFT的幅频特性图title('(5b)16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X5k16))]);%实验3对模拟周期信号作谱分析(归一化)Fs=64;T=1/Fs;N=16;n=0:N-1; %FFT的变换区间N=16x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); %对x6(t)16点采样X6k16=fft(x6nT); %计算x6nT的16点DFTTp=N*T;F=1/Tp; %频率分辨率Fk=0:N-1;fk=2*k/N; %产生16点DFT对应的采样点频率(以零频率为中心)subplot(3,1,1);stem(fk,abs(X6k16),'.'); %绘制16点DFT的幅频特性图title('(6a) 16点DFT[x_6(nT)]|');xlabel('\omega/\pi');ylabel('幅度');N=32;n=0:N-1; %FFT的变换区间N=32x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); %对x6(t)32点采样X6k32=fft(x6nT); %计算x6nT的32点DFTTp=N*T;F=1/Tp; %频率分辨率Fk=0:N-1;fk=2*k/N; %产生32点DFT对应的采样点频率(以零频率为中心)subplot(3,1,2);stem(fk,abs(X6k32),'.');%绘制32点DFT的幅频特性图title('(6b) 32点DFT[x_6(nT)]|');xlabel('\omega/\pi');ylabel('幅度');N=64;n=0:N-1; %FFT的变换区间N=64x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); %对x6(t)64点采样X6k64=fft(x6nT); %计算x6nT的64点DFTTp=N*T;F=1/Tp; %频率分辨率Fk=0:N-1;fk=2*k/N; %产生64点DFT对应的采样点频率(以零频率为中心)subplot(3,1,3);stem(fk,abs(X6k64),'.'); %绘制64点DFT的幅频特性图title('(6c) 64点DFT[x_6(nT)]|');xlabel('\omega/\pi');ylabel('幅度');五、思考题及实验体会4.思考题(1)对于周期序列,如果周期不知道,如何用FFT 进行谱分析?(2)如何选择FFT 的变换区间?(包括非周期信号和周期信号)(3)当N=8时,)(2n x 和)(3n x 的幅频特性会相同吗?为什么?N=16 呢?答:(1)、如果)(n x 的周期预先不知道,可截取M 点进行DFT ,即)]([)()()()(n x DFT n X n R n x n x M M M M == 0≤k ≤M-1再将截取长度扩大1倍,截取)]([)()()(2222n x DFT n X n R n x M M M M == 0≤k ≤2M-1比较)(k x M 和 )(2k X M ,如果两者的主谱差别满足分析误差要求,则以)(k x M 或 )(2k X M 近似表示)(n x 的频谱,否则,继续将截取长度加倍,直至前后两次分析所得主谱频率差别满足误差要求。