实验二 用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)对时域离散信号进行频谱分析
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
实验三用FFT对信号作频谱分析实验报告一实验目的与要求学习用FFT对连续信号和时域离散信号进行谱分析的方法了解可能出现的分析误差及…
计算机科学与工程学院数字信号处理实验报告3计算机科学与工程学院数字信号处理实验报告2计算机科学与工程学院数字信号处理实验报告3计算…
实验一报告用FFT对信号作频谱分析一实验目的学习用FFT对连续信号和时域离散信号进行频谱分析的方法了解可能出现的分析误差及其原因以…
用FFT对信号作频谱分析实验报告1实验目的与原理1进一步加深DFT算法原理和基本性质的理解因为FFT只是DFT的一种快速算法所以F…
实验三用FFT对信号作频谱分析1实验目的学习用FFT对连续信号和时域离散信号进行谱分析的方法了解可能出现的分析误差及其原因以便正确…
实验三用FFT对信号作频谱分析实验报告一实验目的与要求学习用FFT对连续信号和时域离散信号进行谱分析的方法了解可能出现的分析误差及…
计算机科学与工程学院数字信号处理实验报告3计算机科学与工程学院数字信号处理实验报告2计算机科学与工程学院数字信号处理实验报告3计算…
实验一报告用FFT对信号作频谱分析一实验目的学习用FFT对连续信号和时域离散信号进行频谱分析的方法了解可能出现的分析误差及其原因以…
用FFT对信号作频谱分析实验报告1实验目的与原理1进一步加深DFT算法原理和基本性质的理解因为FFT只是DFT的一种快速算法所以F…
实验三用FFT对信号作频谱分析1实验目的学习用FFT对连续信号和时域离散信号进行谱分析的方法了解可能出现的分析误差及其原因以便正确…