数字信号处理课程设计 ——指数衰减正弦信号的采样与恢复

  • 格式:doc
  • 大小:845.50 KB
  • 文档页数:11

数字信号处理课程设计

——指数衰减正弦信号的采样与恢复

1理论分析

1.1 连续时间信号

连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点以外,信号都有确定的值与之对应。严格来说,MATLAB并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。

在一定条件下,一个连续时间信号完全可以用该信号在等时间间隔上的瞬时值来表示,并且可以用这些样本值把信号完全恢复过来。这样,抽样定理为连续时间信号与离散时间信号的相互转换提供了理论依据。通过观察采样信号的频谱,发现它只是原信号频谱的线性重复搬移,只要给它乘以一个门函数,就可以在频域恢复原信号的频谱,在时域是否也能恢复原信号时,利用频域时域的对称关系,得到了信号。

1.2采样定理

模拟信号经过 (A/D) 变换转换为数字信号的过程称为采样,信号采样后其频谱产生了周期延拓,每隔一个采样频率 fs,重复出现一次。为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成分的两倍,这称之为采样定理。

时域采样定理从采样信号恢复原信号必需满足两个条件:

(1) 必须是带限信号,其频谱函数在 > 各处为零;(对信号的要求,即只有带限信号才能适用采样定理。)

(2) 取样频率不能过低,必须 >2 (或 >2)。(对取样频率的要求,即取样频率要足够大,采得的样值要足够多,才能恢复原信号。)

如图1.1所示,给出了信号采样原理图

图1.1 信号采样原理图

由图1可见,)()()(ttftfsTs,其中,冲激采样信号)(tsT的表达式为:nsTnTtts)()(

其傅立叶变换为nssn)(,其中

ssT2

设)(jF,)(jFs分别为)(tf,)(tfs的傅立叶变换,由傅立叶变换的频域卷积定理,可得

nssnsssnjFTnjFjF)]([1)(*)(21)(

若设)(tf是带限信号,带宽为m, )(tf经过采样后的频谱)(jFs就是将)(jF在频率轴上搬移至,,,,,02nsss处(幅度为原频谱的sT1倍)。因此,当ms2时,频谱不发生混叠;而当ms2时,频谱发生混叠。

一个理想采样器可以看成是一个载波为理想单位脉冲序列)(tT的幅值调制器,即理想采样器的输出信号)(*te,是连续输入信号)(te调制在载波)(tT上的结果,如图2所示。

图1.2 信号的采样

用数学表达式描述上述调制过程,则有)()()(*tteteT理想单位脉冲序列)(tT可以表示为0)()(nTnTtt

其中)(nTt是出现在时刻nTt,强度为1的单位脉冲。由于

的数值仅在采样瞬时才有意义,同时,假设

00)(tte

所以)(*te又可表示为 *0()()()netenTtnT 1.3 信号重构 )(te)(te 设信号)(tf被采样后形成的采样信号为)(tfs,信号的重构是指由)(tfs经过

插处理后,恢复出原来信号)(tf的过程,又称为信号恢复。

若设)(tf是带限信号,带宽为m,经采样后的频谱为)(jFs。设采样频率ms2,则由式(9)知)(jFs是以s为周期的谱线。现选取一个频率特性

ccsTjH0)((其中截止频率c满足2scm)

的理想低通滤波器与)(jFs相乘,得到的频谱即为原信号的频谱)(jF。

)()()(jHjFjFs与之对应的时域表达式为 )(*)()(tfthtfs

而 nssnssnTtnTfnTttftf)()()()()(

)()]([)(1tSaTjHFthccs

将)(th及)(tfs代入得

nscscsccssnTtSanTfTtSaTtftf)]([)()(*)()(

此式即为用)(snTf求解)(tf的表达式,是利用MATLAB实现信号重构的基本关系式,抽样函数)(tSac在此起着内插函数的作用。

例:设tttSatfsin)()(,其)(jF为:

101)(jF

即)(tf的带宽为1m,为了由)(tf的采样信号)(tfs不失真地重构)(tf,由时域采样定理知采样间隔

msT,取7.0sT(过采样)

利用MATLAB的抽样函数

tttSinc)sin()(

来表示)(tSa,有)/()(tSinctSa。据此可知:

nscscsccssnTtSincnTfTtSaTtftf)]([)()(*)()(

通过以上分析,得到如下的时域采样定理:一个带宽为wm的带限信号f(t),可唯一地由它的均匀取样信号fs(nTs)确定,其中,取样间隔Ts

连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点以外,信号都有确定的值与之对应。严格来说,MATLAB并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。时域对连续时间信号进行采样,是给它乘以一个采样脉冲序列,就可以得到采样点上的样本值,信号被采样前后的频域变化,可以通过时域频域的对应关系求得采样信号的频谱。

在一定条件下,一个连续时间信号完全可以用该信号在等时间间隔上的瞬时值来表示,并且可以用这些样本值把信号完全恢复过来。这样,抽样定理为连续时间信号与离散时间信号的相互转换提供了理论依据。通过观察采样信号的频谱,发现它只是原信号频谱的线性重复搬移,只要给它乘以一个门函数,就可以在频域恢复原信号的频谱,在时域是否也能恢复原信号时,利用频域时域的对称关系,得到了信号。

优点:MATLAB在绘图方面提供了相当高级的函数序及程序界面,即使用户没有丰富的程序设计经验,也能够快速地得到自己想要的结果,熟练的使用MATLAB的程序员或研究人员能缩短研究开发时间,从而提高竞争力,MATLAB和其他高级语言有良好的接口,可以方便地实现与其他语言的混合编程,从而进一步扩宽MATLAB的应用潜力。

缺点:MATLAB占用内存空间很大,并且会因硬盘分区是NTFS格式还是FAT格式而有差异。

4程序设计

4.1步骤框图

4.2程序代码

4.2.1.连续时间信号x(t)

clc

clear all

close all

n=0:50 % 定义序列的长度是50

A=input('请入A的值A:') % 设置信号的有关参数

a=input('请入a的值a:')

w0=input('请入w0的值w0:')

T1=0.005

T2=0.0025

T3=0.001

T0=0.001

x=A*exp(-a*n*T0).*sin(w0*n*T0)

y1=A*exp(-a*n*T1).*sin(w0*n*T1)

y2=A*exp(-a*n*T2).*sin(w0*n*T2)

y3=A*exp(-a*n*T3).*sin(w0*n*T3)

close all

subplot(2,1,1)

stem(n,x,'.') % 绘制x(n)的图形

grid on

title('离散时间信号')

subplot(2,1,2)

plot(n,x)

grid on

title('连续时间信号')

4.2.2 200Hz/400Hz/1000Hz频率抽样信号函数x(n) figure(2)

subplot(3,1,1)

stem(n,y1,'.')

grid on

title('200Hz连续采样信号序列')

subplot(3,1,2)

stem(n,y2,'.')

grid on

title('400Hz连续时间信号')

subplot(3,1,3)

stem(n,y3,'.')

grid on

title('1000Hz连续时间信号')

4.2.3由采样序列x(n)恢复出连续时间信号x(t)

clc

clear all

close all

A=input('please input the A:')

a=input('please input the a:')

W0=input('please input the W0:')

fs=input('please input the fs:')

n=0:49

T=1/fs

t0=10/a

Dt=1/(5*a)

t=0:Dt:t0

xa=A*exp(-a*t).*sin(W0*t)

K1=50

k1=0:1:K1

W1max=2*pi*500

W1=W1max*k1/K1

w1=W1/pi

Xa=xa*exp(-j*t'*W1) x=A*exp(-a*n*T).*sin(W0*n*T)

figure (1)

subplot(3,1,1)

plot(t*1000,xa)

title('连续时间信号x(t)')

axis([0 50 -200 400])

grid

subplot(3,1,2)

stem(x,'.')

grid

xlabel('n')

ylabel('x(n)')

title('采样序列x(n)')

axis([0 50 -200 400])

x1=spline(n*T,x,t)

grid

xlabel('t:毫秒')

ylabel('x(t)')

subplot(3,1,3)

plot(t*1000,x1)

axis([0 50 -200 400])

title('由x(n)恢复x1(t)')

grid

xlabel('t:毫秒')

ylabel('x1(t)')

axis([0 50 -200 400])

error=max(abs(x1-xa))

5运行结果与分析

1.连续时间信号x(t)图形