信号系统大作业

  • 格式:doc
  • 大小:101.50 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

引言

本实验要求计算0≤ω<2π上X(e jw)和Y(e jw)在n=64的等分频率点上的值,这由DFT就可以得到。值得指出的是,当DFT得到的X(k)中k取遍1,2,…,N时,在频谱X(e jw)上正好对应了0≤ω<2π。由于n=64并不小,所以还可以考虑由X(k)来近似拟合出X(e jw),这就是能够近似画出在0≤ω≤2π上画出|X(e jw)|和

|Y(e jw)|对ω的图的理论保证。

通过卷积法同样可以求得系统在某个输入下的输出,这一方法可以用来验证使用DFT算法求输出的正确性。在实验的最后还补充了一个关于两种方法在速度上的简单对比,以此说明DFT的FFT算法的优越性(效率高)。

设计中涉及的内容

在离散时间、连续频率的傅里叶变换中,由于卷积性质知道,对系统输出的计算可以通过求x[n]和h[n]的DTFT,将得到的X(e jw)和H(e jw)相乘就可以得到Y(e jw),进而再通过反变换得到y[n]。这就避免了在时域进行繁琐的卷积求解。

在数字信号处理(DSP)中,对于有限长序列存在一种离散时间、离散频率的傅里叶变换,称为DFT(Discrete Fourier Transform)。DFT变换的定义为:

k=1,2,…,N

j=1,2,…,N 其中

可以看出,DFT是对有限长序列频谱的离散化。通过DFT使时域有限长序列与频域有限长序列相对应,从而可在频域用计算机进行信号处理。更重要的是DFT具有两种高效的快速算法FFT(Fast Fourier Transform)。当序列长度为2的整数次幂时,可以采用最快的基2算法,否则采用一般的混合算法。具体的算法可参阅Matlab 6.0或以上版本的Function Reference。

一种更为通俗的解释是,DFT是对频谱采样得到的结果,即DFT所求到的X(k),它只是一组等分频率点上的X(e jw),通过DFT并没有得到整个频谱。这也是它被称为DFT的原因(Discrete)。

三、设计步骤(包括分析、代码和波形)

实验主要涉及LTI系统对信号的加工,需要我们通过卷积、FFT和IFFT来灵活计算系统的单位脉冲响应和输出:

假设一个特定的LTI系统对输入x[n]=(-3/4)n的响应是:

y[n]=2/5(1/2)n u[n]+3/5(-3/4)n u[n]

要求用fft和ifft确定这个系统的单位脉冲响应.

(1).将在区间0≤n≤N-1上x[n]和y[n]的值存入向量x和y中,这里n=64。画出这两个信号,并确信在这个区间以外,它们基本等于零,因此可以放心截断.

(2).用fft计算在区间0≤ω<2π内n=64的等分频率点上的X(e jω)和Y(e jω),并在0≤ω≤2π上画出|X(e jω)|和| Y(e jω)|对ω的图;

(3).在相同的64个频率样本点上计算出H(e jω),用ifft计算在区间0≤n≤N-1内的h[n];

(4).用计算卷积y1=conv(h1,X)验证h[n]是正确的.

(5).给该系统输入信号x[n]=n,-2<=n<=5,使用conv卷积函数,求系统输出。画出输出波形。

下面是第(1)小题的代码。这一部分需要注意的是stem函数,它可以用来画离散信号的波形:

n=0:1:63; %生成序列的横坐标

x=(-3/4).^n; %生成序列x[n],存放于一个下标为[1..64]的一维向量中

y=(2/5)*(1/2).^n+(3/5)*(-3/4).^n; %生成序列y[n],存放于一个下标为[1..64]的一维向量中

subplot(2,1,1);stem(n,x);

xlabel('n');ylabel('x[n]'); %画出x[n]

subplot(2,1,2);stem(n,y);

xlabel('n');ylabel('y[n]'); %画出y[n]

下面的图给出了x[n]和y[n]的波形。

下面是第(2)小题的代码。应该注意到abs和angle函数可以用来分解出复数的模和幅角。另外,plot函数可以将离散序列画成连续曲线:

dftx=fft(x); %求x[n]的DFT

dfty=fft(y); %求y[n]的DFT

%特别注意:DFT算出的只是对连续频谱的64个采样值,而非整个频谱

%但是可以利用这些采样值来近似拟合出频谱,这就是下面的工作了

figure(2); %新开一个Figure窗口

magdftx=abs(dftx); %求x[n]的DFT的模

magdfty=abs(dfty); %求y[n]的DFT的模

subplot(2,1,1);plot(n,magdftx);

%通过plot命令将离散序列近似拟合为连续频谱曲线

xlabel('n');ylabel('x[n] Spectrum Magnitude');

subplot(2,1,2);plot(n,magdfty);

xlabel('n');ylabel('y[n] Spectrum Magnitude');

得到的波形如下图:

在实验原理部分已经提及,横坐标n从0到63的取值正好对应着频谱当中0≤ω<2π上的频率。可以看到,这两个信号中模较大(也可以说是能量较大)的频率分量都集中在高频部分,这同第(1)小题绘制出的信号波形是吻合的。在时域x[0]和y[0]点附近,信号x[n]和y[n]都呈现出高频的振荡。

第(3)小题的工作是紧接着第(2)小题展开的,H(e jw)正是Y(e jw)除以X(e jw)的结果。表示矩阵的对应元素相除。代码如下:

dfth=dfty./dftx; %利用傅里叶变换的卷积性质求得系统频率响应的DFT

h=ifft(dfth); %求h[n]

magdfth=abs(dfth); %求h[n]的DFT的模

angdfth=angle(dfth); %求h[n]的DFT的相位

%为了更加形象,把h[n]和它频谱的模和相位都画出来

figure(3);

subplot(3,1,1);stem(n,h);

xlabel('n');ylabel('h[n]');

subplot(3,1,2);plot(n,magdfth);

xlabel('n');ylabel('h[n] Spectrum Magnitude');

subplot(3,1,3);plot(n,angdfth);

xlabel('n');ylabel('h[n] Spectrum Angle');

得到的波形为: