实验四  离散时间系统的频域分析
1.实验目的
  1)理解和加深傅里叶变换的概念及其性质。
2)离散时间傅里叶变换(DTFT)的计算和基本性质。
3matlab求傅里叶变换)离散傅里叶变换(DFT)的计算和基本性质。
2.实验原理
    对离散时间信号进行频域分析,首先要对其进行傅里叶变换,通过得到的频谱函数进行分析。
离散时间傅里叶变换(DTFTDiscrete-time Fourier Transform)是傅立叶变换的一种。它将以离散时间nT(其中T为采样间隔)作为变量的函数(离散时间信号)f(nT)变换到连续的频域,即产生这个离散时间信号的连续频谱,其频谱是连续周期的。
设连续时间信号f(t)的采样信号为:,并且其傅里叶变换为:
这就是采样序列f(nT)的DTFT::,为了方便,通常将采样间隔T归一化,则有:,该式即为信号f(n)的离散时间傅里叶变换。其逆变换为:
离散傅里叶变换(DFT Discrete-time Fourier Transform)是对离散周期信号的一种傅里叶变换,对于长度为有限长信号,则相当于对其周期延拓进行变换。在频域上,DFT的离散谱是对DTFT连续谱的等间隔采样。
长度为N的有限长信号x(n),其N点离散傅里叶变换为:
X(k)的离散傅里叶逆变换为:
DTFT是对任意序列的傅里叶分析,它的频谱是一个连续函数;而DFT是把有限长序列作为周期序列的一个周期,对有限长序列的傅里叶分析,DFT的特点是无论在时域还是频域都是有限长序列。
3.实验内容及其步骤
1)复习傅里叶变换的定义及其性质,加深理解。
2)熟悉离散时间傅里叶变换的概念及其性质。
参考一:计算离散时间傅里叶变换,并绘制图形。
已知有限长序列x(n)={1,2,3,4,5}
n=-1:3;x=1:5;k=0:500;w=(pi/500)*k;X=x*(exp(-j*2*pi/500)).^(n'*k);
magX=abs(X);angX=angle(X);realX=real(X);imagX=imag(X);
subplot(2,2,1);plot(w/pi,magX);grid;
xlabel('');ylabel('模值 ');title('模值部分');
subplot(2,2,2);plot(w/pi,angX);grid;
xlabel('pi为单位');ylabel('弧度');title('相角部分');
subplot(2,2,3);plot(w/pi,realX);grid;
xlabel('');ylabel('实部');title('实部部分');
subplot(2,2,4);plot(w/pi,imagX);grid;
xlabel('pi为单位');ylabel('虚部');title('虚部部分');
参考二:计算离散时间傅里叶变换。% Evaluation of the DTFT
clf;
% Compute the frequency samples of the DTFT
w = -4*pi:8*pi/511:4*pi;      num = [2 1];den = [1 -0.6];
h = freqz(num, den, w);        % Plot the DTFT
subplot(2,1,1)                plot(w/pi,real(h));grid
title('Real part of H(e^{j\omega})')
xlabel('\omega /\pi');          ylabel('Amplitude');
subplot(2,1,2)                plot(w/pi,imag(h));grid
title('Imaginary part of H(e^{j\omega})')
xlabel('\omega /\pi');          ylabel('Amplitude');
pause
subplot(2,1,1)                plot(w/pi,abs(h));grid
title('Magnitude Spectrum |H(e^{j\omega})|')
xlabel('\omega /\pi');          ylabel('Amplitude');
subplot(2,1,2)                plot(w/pi,angle(h));grid
title('Phase Spectrum arg[H(e^{j\omega})]')
xlabel('\omega /\pi');          ylabel('Phase in radians');
3)熟悉离散傅里叶变换的概念及其性质
参考一:x(n)=sin(n*pi/8)+sin(n*pi/4)是一个N=16的序列,计算其傅里叶变换。
N=16;n=0:N-1;xn=sin(n*pi/8)+sin(n*pi/4);k=0:1:N-1;
WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;
subplot(2,1,1);stem(n,xn);subplot(2,1,2);stem(k,abs(Xk));
参考二:计算x(n)=8*(0.4).^n,n属于[0,20)的圆周移位
N=20;m=10;n=0:1:N-1;x=8*(0.4).^n;
n1=mod((n+m),N);xm=x(n1+1);subplot(2,1,1);stem(n,x);
title('original sequence');xlabel('n');ylabel('x(n)');
subplot(2,1,2);stem(n,xm);
title('circular shift equence');xlabel('n');ylabel('x((n+10))mod 20');
4.实验用MATLAB函数介绍
在实验过程中,MATLAB函数命令plot, figure, stem, subplot, axis, grid on, xlabel, ylabel, title, clc, mod, freqz等在不同的情况下具体表述也有所不同,应该在实验中仔细体会其不同的含义。
5.思考题
1)理解离散时间系统的频域分析,掌握和加深对傅立叶变换及其性质的理解。
2)计算一个N=12的序列x(n)=cos(n*pi/6)的离散时间傅里叶变换。
3 x1(n)=(0.8).^n,其中n属于[0,10]x2(n)=(0.6).^n,并且n属于[0,18]的圆周卷积(N=20)。先构造一个计算圆周卷积的函数进行计算。
6.实验报告要求
1)明确实验目的以及实验的原理。
  2)通过实验内容分析离散时间信号的性质。
  3)完成思考题的内容,对实验结果及其波形图进行分析对比,总结主要结论。
思考题
1)理解离散时间系统的频域分析,掌握和加深对傅立叶变换及其性质的理解。
傅里叶变换能将满足一定条件的某个函数表示成三角函数或者它们的积分的线性组合。其基本性质有线性性质,频移性质,微分关系,卷积特性。
2)计算一个N=12的序列x(n)=cos(n*pi/6)的离散时间傅里叶变换。
>> N=12;n=0:N-1;xn=cos(n*pi/6);k=0:1:N-1;
Xk=fft(xn,N);
subplot(2,1,1);stem(n,xn);subplot(2,1,2);stem(k,abs(Xk));
>> N=12;n=0:N-1;xn=cos(n*pi/6);k=0:1:N-1;
WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;
subplot(2,1,1);stem(n,xn);subplot(2,1,2);stem(k,abs(Xk));
3 x1(n)=(0.8).^n,其中n属于[0,10]x2(n)=(0.6).^n,并且n属于[0,18]的圆周卷积(N=20)。先构造一个计算圆周卷积的函数进行计算。
function y=circonvt(x1,x2,N)
    if(length(x1)>N)
        error('N should bigger than or equal to the length of x1!')
    end
    if(length(x2)>N)
        error('N should bigger than or equal to the length of x2!')
    end
    x1={x1,zeros(1,N-length(x1))};
    x2={x2,zeros(1,N-length(x2))};
    m=[0:1:N-1];
    H=zeros(N,N);
    for n=1:1:N
        H(n,:)=cirshftt(x2,n-1,N);
    end
y=x1*H';
function y=cirshftt(x,m,N)
if(length(x)>N)
    error('N should bigger than or equal to the length of x2')
end
x=[x,zeros(1,N-length(x))];
n=[0:1:N-1];
n=mod(n-m,N);
y=x(n+1);
>> n1=0:10;x1=0.8.^n1;
n2=0:18;x2=0.6.^n2;N=20;
>> circonvt(x1,x2,N);
Warning: Concatenation involves an empty array with incorrect number of rows.
> In cirshftt at 5
  In circonvt at 13
??? Error using ==> horzcat
In [] concatenation the number of dimensions for each component must match.
Error in ==> cirshftt at 5
x=[x,zeros(1,N-length(x))];
Error in ==> circonvt at 13
        H(n,:)=cirshftt(x2,n-1,N);

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