
课程名称: 数字信号处理实验
专业班级:
姓 名:
学 号:
| 实验名称 | 数字信号处理 | ||
| 实验地点 | 实验时间 | ||
| 实验成绩 | |||
| 实验目的及任务 理解信号变换的基本概念 理解离散傅立叶变换的基本概念 掌握快速傅立叶变换的应用方法 掌握离散余弦变换的应用方法 掌握Z变换的应用方法 了解Chip z变换的基本概念 掌握Hilbeit变换的初步应用 了解倒谱变换的基本概念 实验内容与步骤 信号变换概述 信号是数字信号处理领域中最基本、最重要的概念。而数字信号变换技术,又是对信号进行处理操作的最基本的有效途径之一。因此,数字信号变换技术,便成为数字信号处理领域中专业人员所必须要张我的一项最基本的技能。 简单地说,数字信号变换技术就是为了处理操作上的方便和可能,通过数学变换,将一个域内的信号变换映射倒另一个域内的信号的方法。常用的数字信号变换主要有:傅立叶变换、离散余弦变换(DCT)、Z变换、Chirp z变换、Hilbert变换等。这些变换,都有着各自的理论和其应用背景。 MATLAB中的工具箱对这几种典型的变换,都提供了相对应的、具体的应用函数。这可以使得工程人员大大节省无谓的工作量,从而将主要精力放到新技术的创新和研发上面。下面将对这几种变换的含义和应用进行具体的介绍。 离散傅立叶变换 傅立叶变换是信号分析和处理的重要工具。有限长序列作为离散信号的一种,在数字信号处理种占有着极其重要的位置。对于有限长序列,离散傅立叶变换不仅在理论上有着重要的意义,而且有快速计算的方法-快速傅立叶变换。所以在各种数字信号处理的运算方法中,越来越起到核心的作用。 下面,就对离散傅立叶变换及其MATLAB函数应用,结合实际工程实例做说明 5.3.1 傅立叶变换的几种形式 1、非周期连续时间信号的傅立叶变换 非周期连续时间信号的傅立叶变换可以表示为 = 逆变换为 在这里,是模拟角频率。可以看到,时域的连续函数造成频域的非周期谱,时域的非周期性造成频域的连续谱。 结论:非周期连续时间函数对应于一非周期连续频域变换函数。 2、周期连续时间信号的傅立叶变换 周期为的周期性连续时间信号傅立叶变换是离散频域函数,可表示为 逆变换为 这就是经常称之为傅立叶级数的变换形式。在这里,也是模拟角频率。可以看到,时域的连续函数造成频率域的非周期谱,频域函数的离散造成时域函数的周期性。 结论:周期连续时间函数对应于一非周期离散频域变换函数。 3、非周期离散时间信号的傅立叶变换可以表示为 逆变换为 在这里,是数字频率,它和模拟角频率的关系为。可以看到,时域的取样对应于频域的周期延拓,而时域函数的非周期性造成频域的离散谱。 结论:非周期离散时间函数对应于一周期连续频域变换函数。 4、周期离散时间信号的傅立叶变换 周期离散时间信号的傅立叶变换-离散傅立叶变换,可以表示为 逆变换为 可以看到,时域的取样对应于频域的周期延拓,而时域函数的周期性造成频域的离散谱。 结论:周期离散时间函数对应于一周期离散频域变换函数。 5.3.2 离散傅立叶变换 离散傅立叶级数变换是周期序列,仍不便于计算机计算。但离散傅立叶级数虽是周期序列,却只有个的数值,所以它的许多特性可以通过有限长序列延拓来得到。对于一个长度为的有限长序列,也即只在个点上有非零值,其余皆为零,即 把序列以为周期进行周期延拓得到周期序列,则有 所以,有限长序列的离散傅立叶变换(DFT)为 逆变换为 若将DFT变换的定义写成矩阵形式,则得到 X=A﹒x,其中DFT变换矩阵A为 Dftmtx 函数:用来计算DFT变换矩阵A的函数 调用方式 A=dftmta(n):返回n×n的DFT变换矩阵A。若x为给定长度的行向量,则y=x*A,返回x的DFT变换y。 Ai=conj(dftmtx(n))/n;返回n×n的IDFT变换矩阵Ai。 DFT的性质 两个序列和都是N点有限长序列,设 线性 式中a,b为任意常数。 圆周移位 一个有限长序列的圆周移位定义 式中,表示的周期延拓序列的移位 有限长序列圆周移位后的DFT为 3、圆周卷积 假设 则有 用表示圆周卷积,则上式可化简为 4.共轭对称性 令的共轭复数序列为,则
用和分别表示序列的实部和虚部,即
用和分别表示实部和虚部序列的,即
而且可以证明得到
通常称为的共轭偶部,为的共轭奇部。所以说,对于时域、频域的对应关系来说,序列实部对应于的共轭偶部,序列的虚部对应于的共轭奇部。 5.序列乘积
6.DFT形式下的帕塞瓦尔定理
由于MATLAB软件本身的特点,序列或向量元素下标从1开始记录,而不是从0开始。因此,上述两式在MATLAB中相应的表达式为
而下面所讨论使用的快速傅立叶变换并不是与不同的另外一种变换,而是为减少计算次数的一种快速有效的算法。这种快速算法,主要是利用了下面两个特性使长序列的分解为更小点数的所实现的。 5.4 快速傅立叶变换(FFT) 在信号处理中,DFT的计算具有举足轻重的地位,信号的相关、滤波、谱估计等都要通过DFT来实现。然而,当很大的时候,求一个点的DFT要完成次复数乘法和次复数加法,其计算量相当大。1965年J.W.Cooley和J.W.Tukey巧妙地利用因子的周期性和对称性,构造了一个DFT快速算法,即快速傅立叶变换(FFT)。 通过前面的知识,已经知道有限列长为的序列的变换为
其逆变换为
| |||
| 上机练习: 1.试用Mablab求其有限长序列与的圆周卷积,(N=20),并画出其结果图。 Circonvt函数 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!') x1=[x1,zeros(1,N-length(x1))] x2=[x2,zeros(1,N-length(x2))] m=[0:1:N-1] for n=1:1:N end y=x1*H' Command window: >> n1=0:1:10; n2=0:1:18; N=20; n=0:1:N-1; x1=(0.8).^n1; x2=(0.6).^n2; Y=circonv(x1,x2,N); stem(n,Y),grid on xlabel('n'); title('y(n)=x1(n)*x2(n)') 2.复指数信号的离散傅里叶变换。其中 ,n=[0,10] 用Matlab求这一有限时宽的序列的傅里叶变换。 M文件: N=6; n=0:1:10; xn=0.9.*((exp(j*pi/3)).^n); k=0:1:10; nk=n'*k; WN=exp(-2*j*pi/N); WNnk=WN.^nk; Xk=xn*WNnk; subplot(211),grid on; stem(n,xn); xlabel('n'); title('0.9.*((exp(j*pi/3)).^n)') subplot(212),grid on; stem(k,abs(Xk)); xlabel('n'); title('Xk'); | |||
| 心得体会: | |||
