实验三--用FFT对信号进行频谱分析及MATLAB程序

合集下载

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三用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详解

MATLAB信号频谱分析FFT详解

MATLAB信号频谱分析FFT详解FFT(快速傅里叶变换)是一种常用的信号频谱分析方法,它可以将信号从时域转换到频域,以便更好地分析信号中不同频率成分的特征。

在MATLAB中,使用fft函数可以方便地进行信号频谱分析。

首先,我们先介绍一下傅里叶变换的基本概念。

傅里叶变换是一种将信号分解成不同频率成分的技术。

对于任意一个周期信号x(t),其傅里叶变换X(f)可以表示为:X(f) = ∫(x(t)e^(-j2πft))dt其中,X(f)表示信号在频率域上的幅度和相位信息,f表示频率。

傅里叶变换可以将信号从时域转换到频域,以便更好地分析信号的频率特征。

而FFT(快速傅里叶变换)是一种计算傅里叶变换的高效算法,它通过分治法将傅里叶变换的计算复杂度从O(N^2)降低到O(NlogN),提高了计算效率。

在MATLAB中,fft函数可以方便地计算信号的傅里叶变换。

使用FFT进行信号频谱分析的步骤如下:1. 构造信号:首先,我们需要构造一个信号用于分析。

可以使用MATLAB中的一些函数生成各种信号,比如sin、cos、square等。

2. 采样信号:信号通常是连续的,为了进行FFT分析,我们需要将信号离散化,即进行采样。

使用MATLAB中的linspace函数可以生成一定长度的离散信号。

3. 计算FFT:使用MATLAB中的fft函数可以方便地计算信号的FFT。

fft函数的输入参数是离散信号的向量,返回结果是信号在频率域上的复数值。

4. 频率换算:信号在频域上的复数值其实是以采样频率为单位的。

为了更好地观察频率成分,我们通常将其转换为以Hz为单位的频率。

可以使用MATLAB中的linspace函数生成一个对应频率的向量。

5. 幅度谱计算:频域上的复数值可以由实部和虚部表示,我们一般更关注其幅度,即信号的相对强度。

可以使用abs函数计算出频域上的幅度谱。

6. 相位谱计算:除了幅度谱,信号在频域上的相位信息也是重要的。

FFT实践及频谱分析实践报告

FFT实践及频谱分析实践报告

FFT实验一.内容1. 用Matlab产生正弦波,矩形波,以及白信号,并显示各自时域波形图;2. 进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选;3. 做出上述三种信号的均方根图谱,以及对数均方根图谱;4. 用IFFT傅里叶反变换恢复信号,并显示恢复的正弦信号时域波形图;5.滤波器的设计。

(一).编写程序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);figure(1);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,sq);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);%作矩形波的时域波形xlabel('t');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);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);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;4.巴特沃斯高通数字滤波器Fs=5000;wp=2000*2/Fs;ws=1500*2/Fs;Rp=1;Rs=20;Nn=128;[N,Wn]=buttord(wp,ws,Rp,Rs);[b,a]=butter(N,Wn,'high');freqz(b,a,Nn,Fs)(二).程序执行后得到的图像①正弦波②矩形波③白噪声④巴特沃斯高通滤波器四.结论1. FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。

数字信号处理上机实验答案(第三版,第十章)[自己整理完善的]

数字信号处理上机实验答案(第三版,第十章)[自己整理完善的]

第十章 上机实验数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。

上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。

本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。

实验一 系统响应及系统稳定性。

实验二 时域采样与频域采样。

实验三 用FFT 对信号作频谱分析。

实验四 IIR 数字滤波器设计及软件实现。

实验五 FIR 数字滤波器设计与软件实现实验六 应用实验——数字信号处理在双音多频拨号系统中的应用任课教师根据教学进度,安排学生上机进行实验。

建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR 数字滤波器设计及软件实现在。

学习完第六章进行;实验五在学习完第七章后进行。

实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。

10.1 实验一: 系统响应及系统稳定性1.实验目的(1)掌握 求系统响应的方法。

(2)掌握时域离散系统的时域特性。

(3)分析、观察及检验系统的稳定性。

2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。

已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。

在计算机上适合用递推法求差分方程的解,最简单的方法是采用MA TLAB 语言的工具箱函数filter 函数。

也可以用MATLAB 语言的工具箱函数conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。

系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。

重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。

系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。

或者系统的单位脉冲响应满足绝对可和的条件。

matlab 信号 频谱分析实验报告

matlab 信号 频谱分析实验报告

matlab 信号频谱分析实验报告《Matlab 信号频谱分析实验报告》实验目的:通过Matlab软件对信号进行频谱分析,了解信号的频谱特性,并掌握频谱分析的基本方法。

实验原理:信号的频谱分析是指将信号在频域上进行分析,得到信号的频谱特性。

频谱分析可以帮助我们了解信号的频率成分,频率分布情况,以及信号的频谱密度等信息。

在Matlab中,可以使用fft函数对信号进行频谱分析,得到信号的频谱图像。

实验步骤:1. 生成信号:首先在Matlab中生成一个信号,可以是正弦信号、方波信号或者任意复杂的信号。

2. 采样信号:对生成的信号进行采样,得到离散的信号序列。

3. 频谱分析:使用fft函数对采样的信号进行频谱分析,得到信号的频谱特性。

4. 绘制频谱图像:将频谱分析得到的结果绘制成频谱图像,观察信号的频谱分布情况。

实验结果分析:通过频谱分析,我们可以得到信号的频谱图像,从图像中可以清晰地看出信号的频率成分,频率分布情况,以及信号的频谱密度等信息。

通过对信号频谱图像的观察和分析,可以更好地了解信号的频谱特性,为后续的信号处理和分析提供参考。

实验结论:通过本次实验,我们成功使用Matlab对信号进行了频谱分析,得到了信号的频谱特性,并且掌握了频谱分析的基本方法。

频谱分析是信号处理和分析的重要工具,对于理解信号的频率特性和频率分布情况具有重要意义。

希望通过本次实验,能够对信号的频谱分析有更深入的了解,并且能够在实际工程中应用到相关领域。

通过本次实验,我们对Matlab信号频谱分析有了更深入的了解,对信号处理和分析有了更深入的认识,也为我们今后的学习和工作提供了更多的帮助。

希望通过不断地实践和学习,能够更加深入地掌握信号频谱分析的相关知识,为实际工程应用提供更多的帮助。

利用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泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。

数字信号处理第三版用MATLAB上机实验

数字信号处理第三版用MATLAB上机实验

实验二:时域采样与频域采样一、时域采样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谱分析实验报告引言谱分析是一种常用的信号处理技术,用于研究信号的频率成分和能量分布。

傅里叶变换是一种常见的谱分析方法,而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. 方波信号的频谱图呈现出多个峰值,每个峰值对应一个谐波成分。

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

实验三--用FFT对信号进行频谱分析及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 Nj k e n x N a π,n =0,1,2,…,N -1 (3-2)IDFS :∑-==102)(N k kn Nj k ea n x π ,n =0,1,2,…,N -1 (3-3)对于长度为N 的有限长序列x (n )的DFT 对表达式分别由式(3-4)和(3-5)给出:DFT :∑-=-=102)()(N n kn Nj en x k X π ,n =0,1,2,…,N -1 (3-4)IDFT :∑-==12)(1)(N k kn Nj 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 πππ=++选择采样频率64sFHz=,对变换区间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点DFT X1k16=fft(x1n,16); %计算x1n的16点DFT X2k8=fft(x2n,8); %计算x2n的8点DFT X2k16=fft(x2n,16); %计算x2n的16点DFT X3k8=fft(x3n,8); %计算x3n的8点DFT X3k16=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点DFT X5k8=fft(x5n); %计算x5n的8点DFT N=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点DFT X5k16=fft(x5n); %计算x5n的16点DFT N=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 的频谱,否则,继续将截取长度加倍,直至前后两次分析所得主谱频率差别满足误差要求。

相关文档
最新文档