实验三:离散时间信号的频域分析
一.实验目的
1.在学习了离散时间信号的时域分析的基础上,对这些信号在频域上进行分析,从而进一步研究它们的性质。
2.熟悉离散时间序列的3种表示方法:离散时间傅立叶变换(DTFT),离散傅立叶变换(DFT)和Z变换。
二.实验相关知识准备
1.用到的MATLAB命令
运算符和特殊字符:
<  >  .*    ^    .^ 
语言构造与调试:
error  function  pause
基本函数:
    angle  conj  rem
数据分析和傅立叶变换函数:
    fft  ifft  max  min
工具箱:
    freqz  impz  residuez  zplane
三.实验内容
1.离散傅立叶变换
在MATLAB中,使用fft可以很容易地计算有限长序列x[n]的离散傅立叶变换。此函数有两种形式:
y=fft(x)
y=fft(x,n) 求出时域信号x的离散傅立叶变换
n为规定的点数,n的默认值为所给x的长度。当n取2的整数幂时变换的速度最快。通常取大于又最靠近x的幂次。(即一般在使用fft函数前用n=2^nextpow2(length(x))得到最合适的n)。
当x的长度小于n时,fft函数在x的尾部补0,以构成长为n点数据。
当x的长度大于n时,fft函数将序列x截断,取前n点。
一般情况下,fft求出的函数多为复数,可用abs及angle分别求其幅度和相位。
注意:栅栏效应,截断效应(频谱泄露和谱间干扰),混叠失真
例3-1: fft函数最通常的应用是计算信号的频谱。考虑一个由100hz和200hz正弦信号构成的信号,受零均值随机信号的干扰,数据采样频率为1000hz。通过fft函数来分析其信号频率成分。
t=0:0.001:1;%采样周期为0.001s,即采样频率为1000hz
x=sin(2*pi*100*t)+sin(2*pi*200*t)+1.5*rand(1,length(t));%产生受噪声污染的正弦波信号
subplot(2,1,1);
plot(x(1:50));%画出时域内的信号
y=fft(x,512);%对x进行512点的fft
f=1000*(0:256)/512;%设置频率轴(横轴)坐标,1000为采样频率
subplot(2,1,2);
plot(f,y(1:257));%画出频域内的信号
 
实验内容3-2:频谱泄漏和谱间干扰
假设现有含有三种频率成分的信号x(t)=cos(200πt)+sin(100πt)+cos(50πt)
  用DFT分析x(t)的频谱结构。选择不同的截取长度,观察DFT进行频谱分析十存在的截断效应。试用加窗的方法减少谱间干扰。请分析截取长度对频谱泄漏和频率分辨率的影响,分析不同窗函数对谱间干扰的影响。
提示:截断效应使谱分辨率(能分开的两根谱线间的最小间距)降低,并产生谱间干扰;频谱混叠失真使折叠频率(fs/2)附近的频谱产生较大的失真。理论和实践都已证明,加大截取长度可提高频率分辨率;选择合适的窗函数可降低谱间干扰;而频谱混叠失真要通过提高采样频率fs和预滤波来改善。
解:取采样频率fs=400Hz,采样信号序列x(n)= x(t)w(n), n=0,1…….N-1;
N为采样点数,N=fs*T,T为截取时间长度,w(n)为窗函数。
实验取三种长度T1=0.04s,T2=4*0.04s,T3=8*0.04s
窗函数分别用矩形窗函数w(n)=RN(n),Hamming 窗。
clear;close all
fs=400; T=1/fs;    %采样频率为400
Tp=0.04;N=Tp*fs;  %采样点数
N1=[N,4*N,8*N];    %设定三种截取长度供调用
st=['|X1(jf)|';'|X4(jf)|';'|X8(jf)|'];%设定三种标注语句供调用
%矩形窗截断
for m=1:3
  n=1:N1(m);
  xn=cos(200*pi*n*T)+sin(100*pi*n*T)+cos(50*pi*n*T);%产生采样序列
  Xk=fft(xn,4096) %4096点DFT,用FFT实现
  fk=[0:4095]/4096/T;
  subplot(3,2,2*m-1)
  plot(fk,abs(Xk)/max(abs(Xk)));
  ylabel(st(m,:));
  if m==1 title('矩形窗截取');end
end;
%加hamming窗改善谱间干扰
for m=1:3
  n=1:N1(m);
  wn=hamming(N1(m));%调用函数hamming产生N长hamming窗序列wn
  xn=(cos(200*pi*n*T)+sin(100*pi*n*T)+cos(50*pi*n*T)).*wn';%产生采样序列
  Xk=fft(xn,4096) %4096点DFT,用FFT实现
  fk=[0:4095]/4096/T;
  subplot(3,2,2*m)
  plot(fk,abs(Xk)/max(abs(Xk)));
  ylabel(st(m,:));
  if m==1 title('hamming窗截取');end
字符串截取第几行
end;
2.一维逆快速傅立叶变换
y=ifft(x)
y=ifft(x,n)
实验内容3-3:频域采样定理的验证
(1)产生一个三角波序列x(n)
(2)对M=40,计算x(n)的64点DFT,并图示x(n)和X(k)=DFT[x(n)],k=0,1,…,63。
(3)对(2)中所得X(k)在[0,2pi]上进行32点抽样得
X1(k)=X(2k),  k=0,1,…,31。并图示。
  (4)求X1(k)的32点IDFT,并图示。即x1(n)=IDFT[X1(k)],  k=0,1,…,31
(5)采用周期延拓的方法绘出的波形,评述与x(n)的关系,并根据频域采样理论加以解释。
clear;close all
M=40;N=64;n=0:M;
xa=0:floor(M/2);xb=ceil(M/2)-1:-1:0;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。