应用FFT实现信号频谱分析(杭电)

应用FFT实现信号频谱分析(杭电)
应用FFT实现信号频谱分析(杭电)

信号、系统与信号处理实验Ⅱ

实验报告

实验名称:应用FFT实现信号频谱分析

一、实验目的

1、能够熟练掌握快速离散傅里叶变换FFT的原理及应用FFT进行频谱分析的基本方法。

2、对离散傅里叶变换的主要性质及FFT在数字信号处理中的重要作用有进一步的了解。

二、实验内容与要求

(2)编写一个调用FFT 函数的通用程序,可计算下列三种序列的离散频谱。

指数序列:v1(n) = 0.9^n*u(n);

周期为N 的余弦序列:v2(n) = cos(2*pi*n/N),且0≤n≤N-1

复合函数序列:v3(n) = 0.9sin(2*pi*n/N) + 0.6sin(2*pi*n*3/N)

(3)计算实指数序列v1(n)的N点离散频谱V1(k),记录N为不同的2的幂次方时的V1(k)

值,并与理论值 V1(e^jwk )进行分析比较。

(4)计算周期为N 的余弦序列v2(n)的N 点FFT、2N 点FFT 及(N+2)点FFT,记录结果并

作为分析说明。

(5)已知信号x(t) = 0.15sin(2*pi*f1*t)+sin(2*pi*f2*t)-0.1sin(2*pi*f3*t),其中

f1 = 1Hz, f2 =2Hz,f3= 3Hz,取样频率为32Hz。编程实现:

① 32 点FFT,画出其幅度谱。

② 64 点FFT,画出其幅度谱,比较两者间的差异,思考实际频率与离散频谱图中

横坐标k的对应关系。

三、实验程序与结果

指数序列:v1(n) = 0.9^n*u(n);v1(n)的N点离散频谱V1(k),记录N为不同的2的幂次方时的V1(k)值,并与理论值 V1(e^jwk )进行分析比较。

clear all

N=16;

N1=16;

N2=32;

N3=64;

n=0:N-1;

xn=0.9.^n;

XK1=fft(xn,N1);

magXK1=abs(XK1);

phaXK1=angle(XK1);

XK2=fft(xn,N2); magXK2=abs(XK2); phaXK2=angle(XK2); XK3=fft(xn,N3); magXK3=abs(XK3); phaXK3=angle(XK3);

subplot(4,1,1);

plot(n,xn);

xlabel('n');

ylabel('x(n)');

title('x(n) ');

subplot(4,1,2);

k=0:length(magXK1)-1; stem(k,magXK1); xlabel('k');

ylabel('|X(k)|');

title('X(k) N1 = 16'); subplot(4,1,3);

k=0:length(magXK2)-1; stem(k,magXK2); xlabel('k');

ylabel('|X(k)|');

title('X(k) N2 = 32'); subplot(4,1,4);

k=0:length(magXK3)-1; stem(k,magXK3); xlabel('k');

ylabel('|X(k)|');

title('X(k) N3 = 64');

5

10

15

n

x (n )

k

|X (k )|

X (k) N1 = 16

5

10

15

20

25

30

35

k

|X (k )|

X (k) N2 = 32

10

20

30

40

50

60

70

k

|X (k )|

X (k) N3 = 64

周期为N 的余弦序列:v2(n) = cos(2*pi*n/N),且0≤n ≤N-1;计算周期为N 的余弦序列v2(n)的N 点FFT 、2N 点FFT 及(N+2)点FFT,记录结果并作为分析说明。

clear all N=20; N1=20; N2=40; N3=22; n = 0:N-1;

xn =cos(2*pi*n/N);

XK1=fft(xn,N1); magXK1=abs(XK1); phaXK1=angle(XK1); XK2=fft(xn,N2); magXK2=abs(XK2); phaXK2=angle(XK2); XK3=fft(xn,N3); magXK3=abs(XK3); phaXK3=angle(XK3);

subplot(4,1,1);

plot(n,xn); xlabel('n'); ylabel('x(n)'); title('x(n) '); subplot(4,1,2);

k=0:length(magXK1)-1; stem(k,magXK1); xlabel('k');

ylabel('|X(k)|'); title('X(k) N = 20'); subplot(4,1,3);

k=0:length(magXK2)-1; stem(k,magXK2); xlabel('k');

ylabel('|X(k)|'); title('X(k) N = 40'); subplot(4,1,4);

k=0:length(magXK3)-1; stem(k,magXK3); xlabel('k');

ylabel('|X(k)|'); title('X(k) N = 22');

n

x (n )

k

|X (k )|

k

|X (k )|

X (k) N = 40

k

|X (k )|

X (k) N = 22

复合函数序列:v3(n) = 0.9sin(2*pi*n/N) + 0.6sin(2*pi*n*3/N)。 clear all N = 40; n = 0:N-1;

xn = 0.9*sin(2*pi.*n/N)+0.6*sin(2*pi*n*3/N); XK = fft(xn,N); magXK = abs(XK); phaXK = angle(XK); subplot(1,2,1); stem(n,xn); xlabel('n'); ylabel('x(n)'); title('x(n) N =40'); subplot(1,2,2);

k = 0:length(magXK)-1; stem(k,magXK); xlabel('k');

ylabel('|X(k)|'); title('X(k) N =40');

n

x (n )

x(n) N =40

k

|X (k )|

已知信号x(t) = 0.15sin(2*pi*f1*t)+sin(2*pi*f2*t)-0.1sin(2*pi*f3*t),其中f1=1Hz,f2=2Hz,f3=3Hz,取样频率为32Hz 。① 32 点FFT ,画出其幅度谱。② 64 点FFT ,画出其幅度谱,比较两者间的差异,思考实际频率与离散频谱图中横坐标k 的对应关系。

clear all N=32; N1=32; N2=64; n=0:N-1;

t=n/N;

xn=0.15*sin(2*pi*t)+sin(4*pi*t)-0.1*sin(6*pi*t); XK1=fft(xn,N1); magXK1=abs(XK1); phaXK1=angle(XK1); XK2=fft(xn,N2); magXK2=abs(XK2); phaXK2=angle(XK2); subplot(3,1,1); stem(n,xn); xlabel('n'); ylabel('x(n)'); title('x(n)'); subplot(3,1,2);

k=0:length(magXK1)-1; stem(k,magXK1); xlabel('k');

ylabel('|X(k)|'); title('X(k) 32'); subplot(3,1,3);

k=0:length(magXK2)-1; stem(k,magXK2); xlabel('k');

ylabel('|X(k)|'); title('X(k) 64');

051015

20253035

n x (n )

x(n)

k |X (k )|

X (k) 32

k

|X (k )|

X (k) 64

四、仿真结果分析

从上面32点FFT的频谱图中,可以看到6条谱线,其中后三条为前面对称的,即真正的分量有三个,对应原信号的三个频率。可以看出当频域取样点数增加后,可以使得原来看不见的频谱分量变得可以看得到。若对序列后面补零,也能看到之前看不到的频谱分量。可以通过增加抽样点数N,选择合适的窗函数来加以解决频谱混叠和频率泄漏。

五、实验问题解答与体会

1、利用DFT对连续信号进行傅里叶分析可能造成哪些误差以及造成这些误差的原因?

在运用DFT进行频谱分析的时候可能有三种误差:

(1)混淆现象:序列的频谱是采样信号频谱的周期延拓,当采样速率不满足Nyquist 定理,经过采样就会发生频谱混淆。

(2)泄露现象:实际中的信号序列往往很长,甚至是无线长序列。用截短的序列使用较短的DFT来对信号进行频谱分析。这种截短等价于给原始信号序列乘以一个矩

形窗函数,而矩形窗函数的频谱不是有限带宽的,从而它和原信号的频谱进行卷积以后会扩展原信号的频谱。

(3)栅栏效应:因为DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数。这样就产生了栅栏效应。

2、实验心得与体会

通过本次实验,我理解了快速离散傅里叶变换FFT的原理及应用FFT进行频谱分析的基本方法。而且对离散傅里叶变换的主要性质及FFT在数字信号处理中的重要作用有进一步的了解。

实验一利用DFT分析信号频谱

实验一利用DFT 分析信号频谱 一、 实验目的 1. 加深对DFT 原理的理解。 2. 应用DFT 分析信号的频谱。 3. 深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。 二、 实验设备与环境 计算机、MATLAB^件环境。 三、 实验基础理论 1. DFT 与DTFT 的关系 方法二:实际在MATLAB 十算中,上述插值运算不见得是最好的办法。 由于DFT 是DTFT 的取 样值,其相邻两个频率样本点的间距为 —,所以如果我们增加数据的长度 N,使得到的 N DFT 谱线就更加精细,其包络就越接近 DTFT 的结果,这样就可以利用 DFT 计算DTFT 如果 没有更多的数据,可以通过补零来增加数据长度。 3、利用DFT 分析连续时间函数 利用DFT 分析连续时间函数是,主要有两个处理:①抽样,②截断 对连续时间信号x a (t) 一时间T 进行抽样,截取长度为 M 则 址 ML X a (N)「-x a (t)e4dt 二「x a (nT)e jnT n=0 再进行频域抽样可得 M 4 —j 竺 n 送,T' X a (nT)e N =TX M (k) NT n =0 因此,利用DFT 分析连续时间信号的步骤如下: (1 )、确定时间间隔,抽样得到离散时间序列 x(n). (2) 、选择合适的窗函数和合适长度 M 得到M 点离散序列x M DFT 实际上是 DTFT 在单位圆上以 的抽样,数学公式表示为: N-1 _j 空 k X(k) = X(z)| 耳八 x(n)e N z” N n=0 (2 — 1) 2、利用 DFT 求DTFT 方法一:利用下列公式: 2rk X(e j )二、X(k)( ) k=0 N k= 0,1,..N - 1 (2 — 2) Sn(N ,/2) Nsin(,/2) .N A e 2为内插函数 (2— 3) (2—4) X a (r 1)|

用MATLAB进行FFT频谱分析

用MATLAB 进行FFT 频谱分析 假设一信号: ()()292.7/2cos 1.0996.2/2sin 1.06.0+++=t t R ππ 画出其频谱图。 分析: 首先,连续周期信号截断对频谱的影响。 DFT 变换频谱泄漏的根本原因是信号的截断。即时域加窗,对应为频域卷积,因此,窗函数的主瓣宽度等就会影响到频谱。 实验表明,连续周期信号截断时持续时间与信号周期呈整数倍关系时,利用DFT 变换可以得到精确的模拟信号频谱。举一个简单的例子: ()ππ2.0100cos +=t Y 其周期为0.02。截断时不同的持续时间影响如图一.1:(对应程序shiyan1ex1.m ) 图 错误!文档中没有指定样式的文字。.1 140.0160.0180.02 截断时,时间间期为周期整数倍,频谱图 0.0250.03 0100200300400500600 7008009001000 20 40 60 80 100 截断时,时间间期不为周期整数倍,频谱图

其次,采样频率的确定。 根据Shannon 采样定理,采样带限信号采样频率为截止频率的两倍以上,给定信号的采样频率应>1/7.92,取16。 再次,DFT 算法包括时域采样和频域采样两步,频域采样长度M 和时域采样长度N 的关系要符合M ≧N 时,从频谱X(k)才可完全重建原信号。 实验中信号R 经采样后的离散信号不是周期信号,但是它又是一个无限长的信号,因此处理时时域窗函数尽量取得宽一些已接近实际信号。 实验结果如图一.2:其中,0点位置的冲激项为直流分量0.6造成(对应程序为shiyan1.m ) 图 错误!文档中没有指定样式的文字。.2 ?ARMA (Auto Recursive Moving Average )模型: 将平稳随机信号x(n)看作是零均值,方差为σu 2的白噪声u(n)经过线性非移变系统H(z)后的输出,模型的传递函数为 020406080100120140160180200 0.4 0.50.60.7 0.800.050.10.150.20.250.30.350.40.450.5 50100 150

对正弦信号的采样频谱分析.doc

H a r b i n I n s t i t u t e o f T e c h n o l o g y 课程设计 课程名称:课程设计2 设计题目:对正弦信号的抽样频谱分析院系:电子与信息工程学院 班级:0805203 设计者:褚天琦 学号:1080520314 指导教师:郑薇 设计时间:2011-10-15 哈尔滨工业大学

一、题目要求: 给定采样频率fs,两个正弦信号相加,两信号幅度不同、频率不同。要求给定正弦信号频率的选择与采样频率成整数关系和非整数关系两种情况,信号持续时间选择多种情况分别进行频谱分析。 二、题目原理与分析: 本题目要对正弦信号进行抽样,并使用fft对采样信号进行频谱分析。因此首先对连续正弦信号进行离散处理。实际操作中通过对连续信号间隔相同的抽样周期取值来达到离散化的目的。根据抽样定理,如果信号带宽小于奈奎斯特频率(即采样频率的二分之一),那么此时这些离散的采样点能够完全表示原信号。高于或处于奈奎斯特频率的频率分量会导致混叠现象。设抽样周期为TS(抽样角频率为ωS),则 可见抽样后的频谱是原信号频谱的周期性重复,当信号带宽小于奈奎斯特频率的二分之一时不会产生频谱混叠现象。 因此,我们对采样频率的选择采取fs>2fo,fs=2fo,fs<2fo三种情况进行分析。对信号采样后,使用fft函数对其进行频谱分析。为了使频谱图像更加清楚,更能准确反映实际情况并接近理想情况,我们采用512点fft。取512点fft不仅可以加快计算速度,而且可以使频谱图更加精确。若取的点数较少,则会造成频谱较大的失真。 三、实验程序: 本实验采用matlab编写程序,实验中取原信号为 ft=sin(2πfXt)+2sin(10πfXt),取频率f=1kHz,实验程序如下: f=1000;fs=20000;Um=1; N=512;T=1/fs; t=0:1/fs:0.01; ft=Um*sin(2*pi*f*t)+2*Um*sin(10*pi*f*t); subplot(3,1,1); plot(t,ft);grid on; axis([0 0.01 1.1*min(ft) 1.1*max(ft)]); xlabel('t'),ylabel('ft'); title('抽样信号的连续形式'); subplot(3,1,2); stem(t,ft);grid on; axis([0 0.01 1.1*min(ft) 1.1*max(ft)]); xlabel('t'),ylabel('ft');

数字信号课程设计 应用FFT对信号进行频谱分析

实验二应用FFT对信号进行频谱分析 一、实验目的 1.加深对离散信号的DTFT和DFT的及其相互关系的理解。 2.在理论学习的基础上,通过本次实验,加深对快速傅立叶变换 的理解,熟悉FFT算法及其程序的编写。 3.熟悉应用FFT对典型信号进行频谱分析的方法。 4.了解应用FFT进行信号频谱分析过程中可能出现的问题,以便 在实际中正确应用FFT。 二、实验原理与方法 一个连续信号x a(t)的频谱可以用他的傅立叶变换表示为: = 如果对该信号进行理想采样,可以得到采样序列:x(n)=X a(nT) 同样可以对该序列进行Z变换,其中T为采样周期:X(z)= 当Z=e jω的时候,我们就得到了序列的傅立叶变换:X(e j ω)= 其中称为数字频率,它和模拟域频率的关系为: 式中的f s是采样频率,上式说明数字频率是模拟频率对采样频率 f s的归一化。同模拟域的情况相似,数字频率代表了序列值变化的 速率,而序列的傅里叶变换为序列的频谱。序列的傅里叶变换和对应的采样信号频率具有下式的对应关系。 X(e jω)= 即序列的频谱是采样信号频谱的周期延拓。从上式可以看出,只要分析采样序列的频谱,就可以得到相应的连续信号频谱,就可以得到相应的连续信号的频谱。注意:这里的信号必须是带限信号,采样也必须满足Nyquist定理。 在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。无限长的序列也往往可以用有限长序列来逼近。对于有限长的序列我们可以使用离散傅里叶变换(DFT),这一变换可以很好地反映序列的频域特性,并且容易利用快速算法在计算机上实现当序列的长度是N时,我们定义离散傅里叶变化为:X(k)=DFT[x(n)]= 其中,它的反变换定义为: x(n)=IDFT[X(k)]= 令Z=,则有:==DFT[x(n)] 可以得到,是Z平面单位圆上幅角为 的点,就是将单位圆进行N等分以后第K个点。所以,X(k)是Z变换在单位圆上的等距采样,或者说是序列福利叶变换的等距

用FFT对信号作频谱分析 实验报告

实验报告 实验三:用FFT 对信号作频谱分析 一、 实验目的与要求 学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT 。 二、 实验原理 用FFT 对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是2π/N ,因此要求2π/N 小于等于D 。可以根据此式选择FFT 的变换区间N 。误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱,因此N 要适当选择大一些。 三、 实验步骤及内容(含结果分析) (1)对以下序列进行FFT 分析: x 1(n)=R 4(n) x 2(n)= x 3(n)= 选择FFT 的变换区间N 为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。 【实验结果如下】: n+1 0≤n ≤3 8-n 4≤n ≤7 0 其它n 4-n 0≤n ≤3 n-3 4≤n ≤7 0 其它 n

实验结果图形与理论分析相符。(2)对以下周期序列进行谱分析: x4(n)=cos[(π/4)*n]

x5(n)= cos[(π/4)*n]+ cos[(π/8)*n] 选择FFT的变换区间N为8和16两种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。 【实验结果如下】: (3)对模拟周期信号进行频谱分析: x6(n)= cos(8πt)+ cos(16πt)+ cos(20πt) 选择采样频率Fs=64Hz,FFT的变换区间N为16、32、64三种情况进行频谱分析,分别打印出幅频特性曲线,并进行讨论、分析与比较。 【实验结果如下】:

DFT在信号频谱分析中的应用

DFT在信号频谱分析中的应用 目录 Ⅰ.设计题目 (1) Ⅱ.设计目的 (1) Ⅲ.设计原理 (1) Ⅳ.实现方法 (1) Ⅴ.设计内容及结果 (5) Ⅵ.改进及建议 (11) Ⅶ.思考题及解答 (14) Ⅷ.设计体会及心得 (15) Ⅸ.参考文献 (16)

Ⅰ.设计题目 DFT 在信号频谱分析中的应用 Ⅱ.设计目的 掌握离散傅里叶变换的有关性质,利用Matlab 实现DFT 变换。了解DFT 应用,用DFT 对序列进行频谱分析,了解DFT 算法存在的问题及改进方法。学习并掌握FFT 的应用。 Ⅲ.设计原理 所谓信号的频谱分析就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为分析离散信号和系统的有力工具。 工程实际中,经常遇到的连续信号Xa(t),其频谱函数Xa(jW)也是连续函数。数字计算机难于处理,因而我们采用DFT 来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。 Ⅳ.实现方法 离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。 快速傅里叶变换(FFT )并不是一种新的变换,它是离散傅里叶变换的一种快速算法,并且主要是基于这样的思路而发展起来的:(1)把长度为N 的序列的DFT 逐次分解成长度较短的序列的DFT 来计算。(2)利用WN(nk)的周期性和对称性,在DFT 运算中适当的分类,以提高运算速度。(对称性nk N nk N W W N -=+2 ,

MATLAB关于FFT频谱分析的程序

MATLAB关于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); 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,ln);

信号的频谱分析及MATLAB实现

第23卷第3期湖南理工学院学报(自然科学版)Vol.23 No.3 2010年9月 Journal of Hunan Institute of Science and Technology (Natural Sciences) Sep. 2010信号的频谱分析及MATLAB实现 张登奇, 杨慧银 (湖南理工学院信息与通信工程学院, 湖南岳阳 414006) 摘 要: DFT是在时域和频域上都已离散的傅里叶变换, 适于数值计算且有快速算法, 是利用计算机实现信号频谱分析的常用数学工具. 文章介绍了利用DFT分析信号频谱的基本流程, 重点阐述了频谱分析过程中误差形成的原因及减小分析误差的主要措施, 实例列举了MATLAB环境下频谱分析的实现程序. 通过与理论分析的对比, 解释了利用DFT分析信号频谱时存在的频谱混叠、频谱泄漏及栅栏效应, 并提出了相应的改进方法. 关键词: MA TLAB; 频谱分析; 离散傅里叶变换; 频谱混叠; 频谱泄漏; 栅栏效应 中图分类号: TN911.6 文献标识码: A 文章编号: 1672-5298(2010)03-0029-05 Analysis of Signal Spectrum and Realization Based on MATLAB ZHANG Deng-qi, YANG Hui-yin (College of Information and Communication Engineering, Hunan Institute of Science and Technology, Yueyang 414006, China) Abstract:DFT is a Fourier Transform which is discrete both in time-domain and frequency-domain, it fits numerical calculation and has fast algorithm, so it is a common mathematical tool which can realize signal spectrum analysis with computer. This paper introduces the basic process of signal spectrum analysis with DFT, emphasizes the causes of error producing in spectrum analysis process and the main ways to decrease the analysis error, and lists the programs of spectrum analysis based on MATLAB. Through the comparison with the theory analysis, the problems of spectrum aliasing, spectrum leakage and picket fence effect are explained when using DFT to analyze signal spectrum, and the corresponding solution is presented. Key words:MATLAB; spectrum analysis; DFT; spectrum aliasing; spectrum leakage; picket fence effect 引言 信号的频谱分析就是利用傅里叶分析的方法, 求出与时域描述相对应的频域描述, 从中找出信号频谱的变化规律, 以达到特征提取的目的[1]. 不同信号的傅里叶分析理论与方法, 在有关专业书中都有介绍, 但实际的待分析信号一般没有解析式, 直接利用公式进行傅里叶分析非常困难. DFT是一种时域和频域均离散化的傅里叶变换, 适合数值计算且有快速算法, 是分析信号的有力工具. 本文以连续时间信号为例, 介绍利用DFT分析信号频谱的基本流程, 重点阐述频谱分析过程中可能存在的误差, 实例列出MATLAB 环境下频谱分析的实现程序. 1 分析流程 实际信号一般没有解析表达式, 不能直接利用傅里叶分析公式计算频谱, 虽然可以采用数值积分方法进行频谱分析, 但因数据量大、速度慢而无应用价值. DFT在时域和频域均实现了离散化, 适合数值计算且有快速算法, 是利用计算机分析信号频谱的首选工具. 由于DFT要求信号时域离散且数量有限, 如果是时域连续信号则必须先进行时域采样, 即使是离散信号, 如果序列很长或采样点数太多, 计算机存储和DFT计算都很困难, 通常采用加窗方法截取部分数据进行DFT运算. 对于有限长序列, 因其频谱是连续的, DFT只能描述其有限个频点数据, 故存在所谓栅栏效应. 总之, 用DFT分析实际信号的频谱, 其结果必然是近似的. 即使是对所有离散信号进行DFT变换, 也只能用有限个频谱数据近似表示连续频 收稿日期: 2010-06-09 作者简介: 张登奇(1968? ), 男, 湖南临湘人, 硕士, 湖南理工学院信息与通信工程学院副教授. 主要研究方向: 信号与信息处理

信号的频谱分析

姓名冯浩学号222017322092029 班级电气2班 专业电气工程及其自动化实验日期2019年6月10日实验学时 3 一.实验名称 信号的频谱分析 二.实验目的 1.熟悉快速傅里叶变换的fft函数的调用; 2.熟悉频谱分析仿真的方法; 3.验证时域抽样定理。 三.实验原理(略) 四.仿真实验练习 1.显示海明窗函数时域波形与频谱,与矩形窗比较。 海明窗函数与矩形窗函数比较脚本程序: N=51; w=hamming(N); %长度为51的海明窗 W=fft(w,256); %作256点的快速傅里叶变换 subplot(221);stem([0:N-1],w);title(‘海明窗函数’) subplot(222);plot([-128:127],abs(fftshift(W))); %将零频点移到频谱中 %间并取幅值为正 title(‘海明窗频谱’) w=boxcar(N); %长度为51的矩形窗 W=fft(w,256); subplot(223);stem([0:N-1],w); title(‘矩形窗函数’) Subplot(224);plot([-128:127],abs(fftshift(W)));title(‘矩形窗频谱’)

2.编写函数,分析抽样函数的频谱,并分析在不同采样频率、不同采样时间区间、不同加窗函数情况下的频谱与理论函数的区别。 函数编写: function X = SY2(T,t0,t1,window) if winodw==[] %输入参数没有说明加窗类型时默认使用矩形窗 window=1; end t=t0:T:t1; x=sinc(100*t); N=length(x); switch window case 1 w=boxcar(N); %矩形窗 case 2 w=hamming(N); %海明窗 case 3 w=hanning(N); %汉宁窗 end x=x'.*w; %转置后相乘 X=fft(x); end ①不同的采样频率脚本程序: clc t0=-1; t1=1; T=[0.001 0.005 0.01 0.05]; %取不同采样时间(间隔) for i=1:4 X=hs(T(i),t0,t1); N=length(X); w=(0:N-1)*5/N; %频率区间为5 subplot(5,1,i);plot(w,abs(X)) ylabel({num2str(T(i))}) %y坐标标题为采样时间 end 图片显示如下

实验五 用FFT对信号做频谱分析(数字信号实验)

备注:(1)、按照要求独立完成实验内容。 (2)、实验结束后,把电子版实验报告按要求格式改名,由实验教师批阅记录后;实验室 统一刻盘留档。 实验五 用FFT 对信号做频谱分析 一、实验目的 学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT 。 二、实验原理 用FFT 对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是 ,因此要求 。可以根据此式选择FFT 的变换区间N 。误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时离散谱的包络才能逼近于连续谱,因此N 要适当选择大一些。 周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT ,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。 对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。 三、实验内容(包括代码与产生的图形及分析讨论) 1. 对以下序列进行谱分析: 1423()() 1,03 ()8,47 0, 4,03()3, 470, x n R n n n x n n n n n n x n n n n =+≤≤?? =-≤≤???-≤≤?? =-≤≤???

选择FFT 的变换区间N 为8和16 两种情况进行频谱分析。分别打印其幅频特性曲线, 并进行对比、分析和讨论。 解:(1))(1n x 代码如下: x1n=[ones(1,4)]; X1k8=fft(x1n,8); X1k16=fft(x1n,16); subplot(2,1,1);mstem(X1k8); title('(1a) 8μ?DFT[x_1(n)]');xlabel('|?/|D');ylabel('·ù?è'); axis([0,2,0,1.2*max(abs(X1k8))]) subplot(2,1,2);mstem(X1k16); title('(1b)16μ?DFT[x_1(n)]');xlabel('|?/|D');ylabel('·ù?è'); axis([0,2,0,1.2*max(abs(X1k16))]) 图形如下: ω/π 幅度 (1a) 8点DFT[x 1(n)] ω/π 幅度 (1b)16点DFT[x 1(n)] (2))(2n x 代码如下: M=8;xa=1:(M/2); xb=(M/2):-1:1; x2n=[xa,xb];

实验二连续时间信号的频域分析

实验二 连续时间信号的频域分析 一、实验目的 1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法; 2、观察截短傅里叶级数而产生的“Gibbs 现象”,了解其特点以及产生的原因; 3、掌握连续时间傅里叶变换的分析方法及其物理意义; 4、掌握各种典型的连续时间非周期信号的频谱特征以及傅里叶变换的主要性质; 5、学习掌握利用Matlab 语言编写计算CTFS 、CTFT 和DTFT 的仿真程序,并能利用这些程序对一些典型信号进行频谱分析,验证CTFT 、DTFT 的若干重要性质。 基本要求:掌握并深刻理傅里叶变换的物理意义,掌握信号的傅里叶变换的计算方法,掌握利用Matlab 编程完成相关的傅里叶变换的计算。 二、原理说明 1、连续时间周期信号的傅里叶级数CTFS 分析 任何一个周期为T 1的正弦周期信号,只要满足狄利克利条件,就可以展开成傅里叶级数。 三角傅里叶级数为: ∑∞ =++=1 000)]sin()cos([)(k k k t k b t k a a t x ωω 2.1 或: ∑∞=++=1 00)cos()(k k k t k c a t x ?ω 2.2 其中1 02T πω=,称为信号的基本频率(Fundamental frequency ),k k b a a ,和,0分别是信号)(t x 的直流分量、 余弦分量幅度和正弦分量幅度,k k c ?、为合并同频率项之后各正弦谐波分量的幅度和初相位,它们都是频率0ωk 的函数,绘制出它们与0ωk 之间的图像,称为信号的频谱图(简称“频谱”),k c -0ωk 图像为幅度谱,k ?-0ωk 图像为相位谱。 三角形式傅里叶级数表明,如果一个周期信号x(t),满足狄里克利条件,就可以被看作是由很多不同频率的互为谐波关系(harmonically related )的正弦信号所组成,其中每一个不同频率的正弦信号称为正弦谐波分量 (Sinusoid component),其幅度(amplitude )为k c 。也可以反过来理解三角傅里叶级数:用无限多个正弦谐波分量可以合成一个任意的非正弦周期信号。 指数形式的傅里叶级数为:

信号的频谱分析

实验三信号的频谱分析 方波信号的分解与合成实验 一、任务与目的 1. 了解方波的傅立叶级数展开和频谱特性。 2. 掌握方波信号在时域上进行分解与合成的方法。 3. 掌握方波谐波分量的幅值和相位对信号合成的影响。 二、原理(条件) PC机一台,TD-SAS系列教学实验系统一套。 1. 信号的傅立叶级数展开与频谱分析 信号的时域特性和频域特性是对信号的两种不同的描述方式。对于一个时域的周期信号f(t),只要满足狄利克莱条件,就可以将其展开成傅立叶级数: 如果将式中同频率项合并,可以写成如下形式: 从式中可以看出,信号f(t)是由直流分量和许多余弦(或正弦)分量组成。其中第一项A0/2是常数项,它是周期信号中所包含的直流分量;式中第二项A1cos(Ωt+φ1)称为基波,它的角频率与原周期信号相同,A1是基波振幅,φ1是基波初相角;式中第三项A2cos(Ωt+φ2)称为二次谐波,它的频率是基波的二倍,A2是基波振幅,φ2是基波初相角。依此类推,还有三次、四次等高次谐波分量。 2. 方波信号的频谱 将方波信号展开成傅立叶级数为: n=1,3,5… 此公式说明,方波信号中只含有一、三、五等奇次谐波分量,并且其各奇次谐波分量的幅值逐渐减小,初相角为零。图3-1-1为一个周期方波信号的组成情况,由图可见,当它包含的分量越多时,波形越接近于原来的方波信号,还可以看出频率较低的谐波分量振幅较大,它们组成方波的主体,而频率较高的谐波分量振幅较小,它们主要影响波形的细节。

(a)基波(b)基波+三次谐波 (c)基波+三次谐波+五次谐波 (d)基波+三次谐波+五次谐波+七次谐波 (e)基波+三次谐波+五次谐波+七次谐波+九次谐波 图3-1-1方波的合成 3. 方波信号的分解 方波信号的分解的基本工作原理是采用多个带通滤波器,把它们的中心频率分别调到被测信号的各个频率分量上,当被测信号同时加到多路滤波器上,中心频率与信号所包含的某次谐波分量频率一致的滤波器便有输出。在被测信号发生的实际时间内可以同时测得信号所包含的各频率分量。本实验便是采用此方法,实验中共有5路滤波器,分别对应方波的一、三、五、七、九次分量。 4. 信号的合成 本实验将分解出的1路基波分量和4路谐波分量通过一个加法器,合成为原输入的方波信号,信号合成电路图如图3-1-2所示。 图3-1-2 三、内容与步骤 本实验在方波信号的分解与合成单元完成。 1. 使信号发生器输出频率为100Hz、幅值为4V的方波信号,接入IN端。 2. 用示波器同时测量IN和OUT1端,调节该通路所对应的幅值调节电位器,使该通路输出方波的基波分量,基波分量的幅值为方波信号幅值的4/π倍,频率于方波相同并且没有相位差.(注意:出厂时波形调节电位器已调到最佳位置,其波形基本不失真,基本没有相位差。若实验中发现存在波形失真或有相位差的现象,请适当调节波形调节电位器,使波形恢复正常。) 3. 用同样的方法分别在OUT3、OUT5、OUT7、OUT9端得到方波的三、五、七、九此谐波分量(注意其他谐波分量各参数应当满足式3-1-1所示)。 4. 完成信号的分解后,先后将OUT1与IN1、OUT3与IN2、OUT5与IN3、OUT7与IN4、OUT9与IN5连接起来,即进行谐波叠加(信号合成),分别测量(1)基波与三次谐波;(2)基波、三次谐波与五次谐波;(3)基波、三次谐波、五次谐波与七次谐波;(4)基波、三次谐波、五次谐波、七次谐波与九次谐波合成后的波形。并分别保

DFT信号频谱分析

一,实验名称: DFT 的频谱分析 二,实验目的: 1. 加深对 DFT 原理的理解,熟悉DFT 的性质。 2. 掌握离散傅里叶变换的有关性质,利用Matlab 实现DFT 变换 3. 深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法 三,实验原理: 所谓信号的频谱分析就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为分析离散信号和系统的有力工具。工程实际中,经常遇到的连续信号Xa(t),其频谱函数Xa(jW)也是连续函数。数字计算机难于处理,因而我们采用DFT 来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。 离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的 傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。快速傅里叶变换(FFT )并不是一种新的变换,它是离散傅里叶变换的一种快速算法,并且主要是基于这样的思路而发展起来的:(1)把长度为N 的序列的DFT 逐次分解成长度较短的序列的DFT 来计算。(2)利用WN(nk)的周期性和对称性,在DFT 运算中适当的分类,以提高运算速度。(对称性 nk N nk N W W N -=+2 ,12 -=N N W ;周期性nk N nk N nrN N k rN n N W W W W ---==)(,r 为任意整数

,1=nrN N W ) 离散傅里叶变换的推导: 离散傅里叶级数定义为 nk j N k p p e k x N n x N 21 )(1 )(π∑-== (1-1) 将上式两端乘以nm j N e π2-并对n 在0~N-1 求和可得 ?? ??? ?==∑∑∑∑∑-=---=-=-=---=-1 )(1 1 0101 )(1 0N 2 N 2N 2 )()(1)(N n m k n j N N k p N n N k m k n j p N n nm j p e k X e k X N e n x πππ 因为 { m k 1m k 0)(N )(1 ) (N 2 N 2N 2-1-1N 11=≠---=-==∑m k j m k j N n m k n j e e e N πππ 所以∑∑-=-=--=1 10 )()()(N 2N k p N n nm j p m k k X e n x δπ 这样∑-=-=10 N 2)()(N n nm j p p e n x m X π用k 代替m 得 ∑-=-=10 N 2)()(N n nk j p P e n x k X π (1-2) 令N 2πj N e W -=,则(1-2)成为DFS []∑-===10 )()()(N n nk N p p p W n x k X n x (1-3) (1-1)成为 IDFS [] ∑-=-= =1 )(1 )()(N n nk N p p p W k X N n x k X (1-4) 式(1-3)、(1-4)式构成周期序列傅里叶级数变换关系。其中 )()(k X n x p p 、都是周期为N 的周期序列,DFS[·]表示离散傅里叶级数 正变换,IDFS[·]表示离散傅里叶级数反变换。习惯上,对于长为N 的周期序列,把0≤n ≤N-1区间称为主值区,把)1(~)0(-N x x p p 称为)(n x p 的主值序列,同样也称)1(~)0(-N X X p p 为)(k X p 的主值序列。由于 )()()(n R n x n x N p =,对于周期序列)(n x p 仅有N 个独立样值,对于任何一 个周期进行研究就可以得到它的全部信息。在主值区研究)(n x p 与)(n x 是等价的,因此在主值区计算DFS 和DFT 是相等的,所以DFT 计算公式形式与DFS 基本相同。其关系为

FFT详细分析

MATLAB中FFT的使用方法 2009-08-22 11:00 说明:以下资源来源于《数字信号处理的MATLAB实现》万永革主编 一.调用方法 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.2929i Xk与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; 运行结果:

周期信号的频谱分析

信号与系统 实验报告 实验三周期信号的频谱分析 实验报告评分:_______ 实验三周期信号的频谱分析 实验目的: 1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法; 2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;

3、掌握各种典型的连续时间非周期信号的频谱特征。 实验内容: (1)Q3-1 编写程序Q3_1,绘制下面的信号的波形图: 其中,0 = 0.5π,要求将一个图形窗口分割成四个子图,分别绘制cos( 0t)、cos(3 0t)、cos(5 0t)和x(t) 的波形图,给图形加title,网格线和x坐标标签,并且程序能够接受从键盘输入的和式中的项数。 程序如下: clear,%Clear all variables close all,%Close all figure windows dt = 0.00001; %Specify the step of time variable t = -2:dt:4; %Specify the interval of time w0=0.5*pi; x1=cos(w0.*t); x2=cos(3*w0.*t); x3=cos(5*w0.*t); N=input('Type in the number of the harmonic components N='); x=0; for q=1:N; x=x+(sin(q*(pi/2)).*cos(q*w0*t))/q; end subplot(221) plot(t,x1)%Plot x1 axis([-2 4 -2 2]); grid on, title('signal cos(w0.*t)') subplot(222) plot(t,x2)%Plot x2 axis([-2 4 -2 2]); grid on, title('signal cos(3*w0.*t))') subplot(223) plot(t,x3)%Plot x3 axis([-2 4 -2 2])

应用FFT实现信号频谱分析

电信类课程试验报告

2.2 clear all N=100; n=0:N-1; xn=cos(2*pi*n/N); XK=fft(xn,N); magXK=abs(XK); phaXK=angle(XK); subplot(1,2,1); plot(n,xn); xlabel('n');ylabel('x(n)'); title('x(n)N=100') subplot(1,2,2) k=0:length(magXK)-1; title('x(n)N=100') subplot(1,2,2) k=0:length(magXK)-1; k=k*(2/100) stem(k,magXK,'.'); xlabel('k');ylabel('|X(k)|');

2.3复合函数 clear all N=100; n=0:N-1; xn=0.9*sin(2*pi*n/N)+0.6*sin(2*pi*n/(N/3)); XK=fft(xn,N); magXK=abs(XK); phaXK=angle(XK); subplot(1,2,1); plot(n,xn); xlabel('n');ylabel('x(n)'); title('x(n)N=100') subplot(1,2,2) k=0:length(magXK)-1; title('x(n)N=100') subplot(1,2,2) k=0:length(magXK)-1; k=k*(2/100) stem(k,magXK,'.'); xlabel('k');ylabel('|X(k)|'); title('X(k)N=100');

用FFT对信号作频谱分析Matlab程序.doc

对以下序列进行FFT 分析 x 1(n)=R 4(n) x 2(n)= x 3(n)= x1n=[ones(1,4)]; %产生R4(n)序列向量 X1k8=fft(x1n,8); %计算x1n 的8点DFT X1k16=fft(x1n,16); %计算x1n 的16点DFT %以下绘制幅频特性曲线 N=8; f=2/N*(0:N-1); (不懂) figure(1); subplot(1,2,1);stem(f,abs(X1k8),'r','.'); %绘制8点DFT 的幅频特性图,abs 求得Fourier 变换后的振幅 title('(1a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度'); N=16; f=2/N*(0:N-1); subplot(1,2,2);stem(f,abs(X1k16),'.'); %绘制8点DFT 的幅频特性图 title('(1b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度'); %x2n 和 x3n M=8;xa=1:(M/2); xb=(M/2):-1:1; %从M/2到1每次递减1 x2n=[xa,xb]; %产生长度为8的三角波序列x2(n) x3n=[xb,xa]; n+1 0≤n ≤3 8-n 4≤n ≤7 0 其它n 4-n 0≤n ≤3 n-3 4≤n ≤7 0 其它 n

X2k8=fft(x2n,8); X2k16=fft(x2n,16); X3k8=fft(x3n,8); X3k16=fft(x3n,16); figure(2); N=8; f=2/N*(0:N-1); subplot(2,2,1);stem(f,abs(X2k8),'r','.'); %绘制8点DFT的幅频特性图title('(2a) 8点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,3);stem(f,abs(X3k8),'r','.'); %绘制8点DFT的幅频特性图title('(3a) 8点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度'); N=16; f=2/N*(0:N-1); subplot(2,2,2);stem(f,abs(X2k16),'.'); %绘制8点DFT的幅频特性图title('(2b) 16点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X3k16),'.'); %绘制8点DFT的幅频特性图title('(3b) 16点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度'); %x4n 和 x5n N=8;n=0:N-1; x4n=cos(pi*n/4); x5n=cos(pi*n/4)+cos(pi*n/8); X4k8=fft(x4n,8); X4k16=fft(x4n,16); X5k8=fft(x5n,8); X5k16=fft(x5n,16); figure(3); N=8; f=2/N*(0:N-1); subplot(2,2,1);stem(f,abs(X4k8),'r','.'); %绘制8点DFT的幅频特性图title('(4a) 8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,3);stem(f,abs(X5k8),'r','.'); %绘制8点DFT的幅频特性图title('(5a) 8点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度'); N=16; f=2/N*(0:N-1); subplot(2,2,2);stem(f,abs(X4k16),'.'); %绘制8点DFT的幅频特性图title('(4b) 16点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X5k16),'.'); %绘制8点DFT的幅频特性图title('(5b) 16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度'); %x8n Fs=64; T=1/Fs;

相关文档
最新文档