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

实验二  FFT对信号作频谱分析

一、实验目的

学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。

二、实验步骤及内容

1.对以下序列进行谱分析:

x1(n)=R4(n)

x2(n)= 

x3(n)=

选择FFT的变换区间N为8和16两种情况进行频谱分析。分别打印其幅频特性曲线,并进行对比、分析和讨论。

(1

程序:

close all;clear all

x1=[1,1,1,1];               %产生矩形信号R4(n)

x8k=fft(x1,8);                       %求系统8位FFT变换

x16k=fft(x1,16);                     %求系统8位FFT变换

y1=abs(x8k);     %8点幅频特性

y2=abs(x16k);     %16点幅频特性

y21= angle(x8k);     %8点相频特性

y22= angle(x16k);     %16点相频特性

subplot(2,2,1);

stem(y1,'.');     

title('8点幅频特性');

subplot(2,2,2);

stem(y21,'.');

title('8点相频特性');

subplot(2,2,3);

stem(y2,'.');     

title('16点幅频特性');

subplot(2,2,4);

stem(y22,'.');

title('16点相频特性');

grid on;

(2

程序:

close all;clear all

n1=0:3;

x1=n1+1;

n2=4:7;

x2=8-n2;

x=[x1,x2];

x8k=fft(x,8);                       %求系统8位FFT变换

x16k=fft(x,16);                     %求系统8位FFT变换

y1=abs(x8k);     %8点幅频特性

y2=abs(x16k);     %16点幅频特性

y21= angle(x8k);     %8点相频特性

y22= angle(x16k);     %16点相频特性

subplot(2,2,1);

stem(y1,'.');     

title('8点幅频特性');

subplot(2,2,2);

stem(y21,'.');

title('8点相频特性');

subplot(2,2,3);

stem(y2,'.');     

title('16点幅频特性');

subplot(2,2,4);

stem(y22,'.');

title('16点相频特性');

grid on;        %产生矩形信号R4(n)

x8k=fft(x1,8);                       %求系统8位FFT变换

x16k=fft(x1,16);                     %求系统8位FFT变换

y1=abs(x8k);     %8点幅频特性

y2=abs(x16k);     %16点幅频特性

y21= angle(x8k);     %8点相频特性

y22= angle(x16k);     %16点相频特性

subplot(2,2,1);

stem(y1,'.');     

title('8点幅频特性');

subplot(2,2,2);

stem(y21,'.');

title('8点相频特性');

subplot(2,2,3);

stem(y2,'.');     

title('16点幅频特性');

subplot(2,2,4);

stem(y22,'.');

title('16点相频特性');

grid on;

(3

程序:

close all;clear all

n1=0:3;

x1=4-n1;

n2=4:7;

x2=n2-3;

x=[x1,x2];

x8k=fft(x,8);                       %求系统8位FFT变换

x16k=fft(x,16);                     %求系统8位FFT变换

y1=abs(x8k);     %8点幅频特性

y2=abs(x16k);     %16点幅频特性

y21= angle(x8k);     %8点相频特性

y22= angle(x16k);     %16点相频特性

subplot(2,2,1);

stem(y1,'.');     

title('8点幅频特性');

subplot(2,2,2);

stem(y21,'.');

title('8点相频特性');

subplot(2,2,3);

stem(y2,'.');     

title('16点幅频特性');

subplot(2,2,4);

stem(y22,'.');

title('16点相频特性');

grid on;        %产生矩形信号R4(n)

x8k=fft(x1,8);                       %求系统8位FFT变换

x16k=fft(x1,16);                     %求系统8位FFT变换

y1=abs(x8k);     %8点幅频特性

y2=abs(x16k);     %16点幅频特性

y21= angle(x8k);     %8点相频特性

y22= angle(x16k);     %16点相频特性

subplot(2,2,1);

stem(y1,'.');     

title('8点幅频特性');

subplot(2,2,2);

stem(y21,'.');

title('8点相频特性');

subplot(2,2,3);

stem(y2,'.');     

title('16点幅频特性');

subplot(2,2,4);

stem(y22,'.');

title('16点相频特性');

grid on;

讨论:

第一行说明x1(n)=R(n)的8点DFT和16点DFT分别是x1(n)的频谱函数的8点和16点采样;

x3n)=x2((n+3))8R8(n),,则8点DFT相同,当N=16时,x2(n)和x3(n)不满足循环移位,则16点DFT不同。

2.对以下周期序列进行谱分析:x4(n)=cosn,x5(n)=cosn+cosn

选择FFT的变换区间N为8和16两种情况分别对以上序列进行频谱分析。分别打印其幅频特性曲线,并进行对比、分析和讨论。

(1)

程序:

close all;clear all

N=16;

n=0:N-1;

n1=0:N/2-1;

x=cos(pi/4*n);

x8k=fft(x,8);                       %求系统8位FFT变换

x16k=fft(x,16);                     %求系统8位FFT变换

y1=abs(x8k);     %8点幅频特性

y2=abs(x16k);     %16点幅频特性

y21= angle(x8k);     %8点相频特性

y22= angle(x16k);     %16点相频特性

subplot(2,2,1);

stem(n1,y1,'.');     

title('8点幅频特性');

subplot(2,2,2);

stem(n1,y21,'.');

title('8点相频特性');

subplot(2,2,3);

stem(n,y2,'.');     

title('16点幅频特性');

subplot(2,2,4);

stem(n,y22,'.');

title('16点相频特性');

grid on;     

(2)

程序:

close all;clear all

N=16;

n=0:N-1;

n1=0:N/2-1;

x=[cos(pi/4*n)+cos(pi/8*n)];

x8k=fft(x,8);                       %求系统8位FFT变换

x16k=fft(x,16);                     %求系统8位FFT变换

y1=abs(x8k);     %8点幅频特性

y2=abs(x16k);     %16点幅频特性

y21= angle(x8k);     %8点相频特性

y22= angle(x16k);     %16点相频特性

subplot(2,2,1);

stem(n1,y1,'.');      

title('8点幅频特性');

subplot(2,2,2);

stem(n1,y21,'.');

title('8点相频特性');

subplot(2,2,3);

stem(n,y2,'.');     

title('16点幅频特性');

subplot(2,2,4);

stem(n,y22,'.');

title('16点相频特性');

grid on;     

讨论:

x4(n)的周期是8,当N=8和16时,可以得到单一频率的正弦波的频谱,仅在0.25π处有一根单一谱线,x5(n)的周期是16,N=8不是周期的整数倍,频谱不正确,N=16是一个周期,可以得到,仅在0.25π和0.125π处有两根单一谱线。

3.对模拟周期信号进行谱分析:x8(n)=cos8πt+cos16πt+cos20πt

选择采样频率Fs=64Hz,对变换区间N=16,32,64三种情况进行谱分析。分别打印其幅频特性,并进行分析和讨论。

程序代码:

clear all;close all

Fs=64;T=1/Fs;

N=16;n=0:N-1;

x8n=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);    %对x8n16点采样

X8k16=fft(x8n,16);                                  %计算x8n的16点DFT

subplot(3,2,1);stem(n,abs(X8k16),'.');

title('16点幅频特性曲线');xlabel('f(Hz)');ylabel('幅度');

subplot(3,2,2);stem(n,angle(X8k16),'.');

title('16点相频特性曲线');xlabel('f(Hz)');ylabel('相位');

N=32;n=0:N-1;

x8n=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);     %对x8n32点采样

X8k32=fft(x8n,32);                                   %计算x8n的32点DFT

subplot(3,2,3);stem(n,abs(X8k32),'.');

title('32点幅频特性曲线');xlabel('f(Hz)');ylabel('幅度');

subplot(3,2,4);stem(n,angle(X8k32),'.');

title('32点相频特性曲线');xlabel('f(Hz)');ylabel('相位');

N=64;n=0:N-1;

x8n=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);     %对x8n64点采样

X8k64=fft(x8n,64);                                   %计算x8n的64点DFT

subplot(3,2,5);stem(n,abs(X8k64),'.');

title('64点幅频特性曲线');xlabel('f(Hz)');ylabel('幅度');

subplot(3,2,6);stem(n,angle(X8k64),'.');

title('64点相频特性曲线');xlabel('f(Hz)');ylabel('相位');

讨论:

x8n有三个频率,f1=4Hz,f2=8Hz,f3=10Hz,所以周期为T=0.5s。采样频率Fs=64Hz,Ts=1/64s,当N=16时,Tp=16×1/64=0.25s,不是周期的整数倍,则得到的频谱不正确;当N=32时,

Tp=32×1/64=0.5s,是周期的整数倍,得到频谱正确;当N=64时,Tp=64×1/64=1s,是周期的整数倍,得到频谱正确。

三、思考题

(1)、x(n)为周期序列,周期未知,可先截取M点进行DFT,即xM(n)=x(n)RM(n),XM(K)=DFT[xM(n)](0≤k≤M-1),再将截取长度扩大一倍,截取x2M(n)=x(n)R2M(n),

X2M(k)=DFT[x2M(n)](0≤k≤2M-1),比较XM(k)和X2M(k),如果二者的主谱差别满足分析误差要求,则以XM(k)或X2M(k)近似表示x(n)的频谱,否则继续将截取长度加倍,直至前后两次分析所得主谱频率差别满足误差要求。设最后截取长度为iM,则X2M(k0)表示ω=[2π/(iM)]k0点的谱线长度。

(2)、对于非周期信号,有频谱分辨率F,而频谱分辨率直接与FFT的变换区间有关,因为FFT能够实现的频率分辨率是2fc/N,因此N>2fc/F,可以根据此式选择FFT的变换区间。对于周期信号,周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。

 

第二篇:实验用DFT(FFT)对时域离散信号进行频谱分析

实验  用DFT(FFT)对时域离散信号进行频谱分析

1.       实验目的:学习DFT的基本性质及对时域离散信号进行频谱分析的方法

2.       实验内容

给定参考实验信号如下:

    

    

    

     以8为周期进行周期性延托形成的周期序列

(1)       分别以变换区间N=8,16,32 对进行DFT(FFT),画出相应的幅频特性曲线

(2)       分别以变换区间N=8,16 对分别进行DFT(FFT),画出相应的幅频特性曲线

(3)       分别以变换区间N=4,8,16对分别进行DFT(FFT),画出相应的幅频特性曲线

(4)       对进行频谱分析, 请自己选择变换区间,要求画出幅频特性曲线

3.实验报告:

(1)分析讨论:

a. 用实验内容中的(1)分析DFT的变换区间对频域分析的作用,并说明DFT的物理意义

  b. 对于试验内容(2),分析当N=8时,两个信号的幅频特性为什么一样,而N=16时又不一样。

  c. 对于实验内容(3),是一个周期信号,画出它的理论幅度频谱特性。对照理论结果分析该周期信号的变换区间应该如何选取。如果周期信号的周期预先不知道,如何用DFT分析它的频谱。

  d. 对于实验(4),对照理论结果[1]分析实验结果。

(2)根据以上的实验内容和分析讨论,写出自己认为重要的几点结论。

4.实验用MATLAB函数简介

本实验要用到一维快速傅里叶变换函数fft、取模(实数取绝对值)函数abs和求相位函角函数angle、绘图函数plot和stem。这些函数都属于MATLAB基本函数

● fft和ifft:一维快速傅里叶变换和一维快速傅里叶逆变换函数。调用各式如下:

Xk=fft(xn , N) 采用FFT算法计算时域序列向量xn的N点DFT。缺省N时fft函数自动按x的长度计算x的DFT,返回xn的N点DFT向量Xk。当N为2的整数次幂时,fft按基2FFT算法计算,否则用混合基算法。

ifft的调用格式与fft相同。

● abs:求绝对值(复数求摸)。

y=abs(x) 计算实数x的绝对值。当x 为复数时得到x的摸(幅度值)。当x为向量时,计算其每个元素的摸。

● angle:求相角。

ph=angle(x) 计算复向量x的每个元素的相角(rad),返回相位向量ph。Ph值介于 –π和+π之间。

下面的简单程序就可以实现计算矩形序列x1(n)的32点FFT,并画出幅频特性和相频特性曲线。

%ex1.m:几个函数调用举例

x1n=[1 1 1 1 1 1 1 1];

x1k=fft(x1n,32);  %计算32点fft

x1m=abs(x1k);     %计算32点fft的模

ph1=angle(x1k);   %计算32点fft的相位

k=0:31;             %以下为绘图部分

subplot(2,1,1);stem(k,x1m,'.');grid on

xlabel('k');ylabel('幅度')

subplot(2,1,2);stem(k,ph1,'.');grid on

xlabel('k');ylabel('相位')

运行结果如图10.5所示。

                图10.5 矩形序列的32点DFT

相关推荐