2012数字信号处理实验讲义- 实验二

2020-04-03 12:45

-- 数字信号处理实验讲义--

实验二 离散傅立叶变换及谱分析

一、 实验目的

1.掌握离散傅里叶变换的计算机实现方法。 2.检验实序列傅里叶变换的性质。 3.掌握计算序列的循环卷积的方法。

4.学习用DFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差,以便在实际中正确应用DFT。 二、 实验内容

1.实现序列的离散傅里叶变换并对结果进行分析。(自己选择序列,要求包括复序列,实序列,实偶序列,实奇序列,虚奇序列)

2.计算序列循环卷积。

3.计算实序列傅里叶变换并检验DFT性质。 4.实现补零序列的傅里叶变换。

6.实现高密度谱和高分辨率谱,并比较二者的不同。 三、 实验报告要求 见各程序要求

%以下为4个扩展函数

N?1% (1)离散傅立叶变换 X(k)?function [Xk]=dft(xn,N) n=[0:1:N-1]; k=[0:1:N-1];

WN=exp(-j*2*pi/N); nk=n'*k;

WNnk=WN.^(nk); Xk=xn*WNnk;

%(2)逆离散傅立叶变换 x(n)?function [xn]=idft(Xk,N) n=[0:1:N-1]; k=[0:1:N-1];

WN=exp(-j*2*pi/N); nk=n'*k;

WNnk=WN.^(-nk); xn=(Xk*WNnk)/N;

% (3) 实序列的分解

?k?0x(n)WN 采用矩阵相乘的方法

nk1NN?1?k?0X(k)WN?nk

% 实序列可分解为共扼对称分量 xec?(1/2)*[x(n)?x((-n))% 和共扼反对称分量 xoc?(1/2)*[x(n)-x((-n))NN] ]

function [xec,xoc]=circevod(x) N=length(x); n=0:(N-1);

xec=0.5*(x+x(mod(-n,N)+1)); %根据上面的公式计算,mod函数为取余 xoc=0.5*(x-x(mod(-n,N)+1));

% (4) 序列的循环移位 y(n)?x((n?m))N function y=cirshftt(x,m,N)

1

-- 数字信号处理实验讲义--

if length(x)>N

error('N mustbe >= the length of x') %要求移位周期大于信号长度 end

x=[x zeros(1,N-length(x))]; n=[0:1:N-1]; n=mod(n-m,N); y=x(n+1);

%例1 本例检验实序列的性质DFT[xec(n)]=Re[X(k)] DFT[xoc(n)]=Im[X(k)]

% 设 x(n)=10*(0.8).^n 0<=n<=10 将x(n)分解为共扼对称及共扼反对称部分 %实验报告要求:(1)将实验结果画出 (2)实验结果说明什么 n=0:10;

x=10*(0.8).^n;

[xec,xoc]=circevod(x);

subplot(2,1,1);stem(n,xec); %画出序列的共扼对称分量 title('Circular -even component')

xlabel('n');ylabel('xec(n)');axis([-0.5,10.5,-1,11])

subplot(2,1,2);stem(n,xoc); %画出序列的共扼反对称分量 title('Circular -odd component')

xlabel('n');ylabel('xoc(n)');axis([-0.5,10.5,-4,4]) figure(2)

X=dft(x,11); %求出序列的DFT

Xec=dft(xec,11); %求序列的共扼对称分量的DFT Xoc=dft(xoc,11); %求序列的共扼反对称分量的DFT

subplot(2,2,1);stem(n,real(X));axis([-0.5,10.5,-5,50])

title('Real{DFT[x(n)]}');xlabel('k'); %画出序列DFT的实部 subplot(2,2,2);stem(n,imag(X));axis([-0.5,10.5,-20,20])

title('Imag{DFT[x(n)]}');xlabel('k'); %画出序列DFT的虚部 subplot(2,2,3);stem(n,Xec);axis([-0.5,10.5,-5,50]) title('DFT[xec(n)]');xlabel('k');

subplot(2,2,4);stem(n,imag(Xoc));axis([-0.5,10.5,-20,20]) title('DFT[xoc(n)]');xlabel('k');

% 例2 本例为计算序列的循环卷积程序

% 运行之前应在命令窗口输入 x1,x2,N 的值

%实验报告要求:自己选择2个序列进行计算,将实验结果写出 if length(x1)>N

error('N must be >= the length of x1') end

if length(x2)>N

error('N must be >= the length of x2') end

x1=[x1 zeros(1,N-length(x1))]; %将x1,x2补0成为N长序列 x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1];

x2=x2(mod(-m,N)+1); %该语句的功能是将序列翻褶,延拓,取主值序列 H=zeros(N,N);

for n=1:1:N %该for循环的功能是得到x2序列的循环移位矩阵

H(n,:)=cirshftt(x2,n-1,N); %和我们手工计算循环卷积得到的表是一致的 end

y=x1*H' %用矩阵相乘的方法得到结果

2

-- 数字信号处理实验讲义--

%例4 本例说明补零序列的离散傅立叶变换

%序列x(n)?R5(n),已给出序列的傅立叶变换程序和将原序列补零到10长序列的DFT %实验报告要求: (1)编写将序列补零到20长后计算DFT的程序 (2)将实验结果画出 (3)实验结果说明什么(即序列补零后进行DFT,频谱有何变化)

n=0:4;

x=[ones(1,5)]; %产生矩形序列 k=0:999;w=(pi/500)*k;

X=x*(exp(-j*pi/500)).^(n'*k); %计算离散时间傅立叶变换 Xe=abs(X); %取模

subplot(3,2,1);stem(n,x);ylabel('x(n)'); %画出矩形序列

subplot(3,2,2);plot(w/pi,Xe);ylabel('|X(ejw)|'); %画出离散时间傅立叶变换 N=10;x=[ones(1,5),zeros(1,N-5)]; %将原序列补零为10长序列 n=0:1:N-1;

X=dft(x,N); %进行DFT magX=abs(X);

k=(0:length(magX)'-1)*N/length(magX);

subplot(3,2,3);stem(n,x);ylabel('x(n)'); %画出补零序列 subplot(3,2,4);stem(k,magX); %画出DFT结果 axis([0,10,0,5]);ylabel('|X(k)|');

%例5 本题说明高密度谱和高分辨率谱之间的区别,高密度谱是信号补零后得到的,虽然谱线相当 %密但是因为信号有效长度不变,所以其分辨率也不变,因此还是很难看出信号的频谱成分。高分辨 %率谱是将信号有效长度加长,因此分辨率提高,可以看出信号的成分。

%有一个序列为x(n)?2cos(0.35?n)?cos(0.5?n) (该序列周期计算可得40) %(1)下面给出有10个有效采样点序列的DFT程序

%(2)请写出将第一问中的10长序列补零到40长,计算其DFT %(3)采样n=0:39,计算有40个有效采样点的序列的DFT

%实验报告要求: (1)请编写将有10个有效采样点的序列补零到40长后计算DFT的程序 (2) 请编写计算有40个有效采样点的序列的DFT的程序 (3) 将实验结果画出并分析实验结果说明什么

M=10; n=0:M-1;

x=2*cos(0.35*pi*n)+cos(0.5*pi*n);

subplot(2,1,1);stem(n,x);title('没有足够采样点的信号'); Y=dft(x,M);

k1=0:M-1;w1=2*pi/M*k1;

subplot(2,1,2);stem(w1/pi,abs(Y));title('信号的频谱');

3


2012数字信号处理实验讲义- 实验二.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:项目测量工作总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: