数字信号处理课程设计报告书

  • 格式:doc
  • 大小:311.50 KB
  • 文档页数:15

《数字信号处理》

课程设计报告

基于matlab的时域采样理论研究及实现

专 业: 通信工程

班 级: 通信11级

组 次: 第3组

及学号:汪志发(2011013842)

及学号:桂勇(2011013821)

组 员 承 担 任 务

汪志发

负责编写程序和写课程设计报告

桂勇

负责搜集有关资料

任务表述简单;

目 录

一、设计目的………………………………………………………………………2

二、设计任务………………………………………………………………………2

三、设计原理………………………………………………………………………2

3.1时域采样定理 ………………………………………………………………2

3.2设计原理图 …………………………………………………………………2

3.3信号的时域采样与频谱分析 …………………………………………………2

3.4采样信号的恢复(插函数法) ……………………………………………4

四、设计过程………………………………………………………………………4

4.1 MATLAB源程序………………………………………………………………4

4.2程序运行结果 ………………………………………………………………7

4.3数据分析……………………………………………………………………11

4.4结论 ………………………………………………………………………11

五、收获与体会 …………………………………………………………………11

六、参考文献 ……………………………………………………………………13

基于matlab的时域采样理论研究及实现

一、设计目的

本次课程设计应用MATLAB验证时域采样定理。了解MATLAB软件,学习应用MATLAB软件的仿真技术。它主要侧重于某些理论知识的灵活运用,以及一些关键命令的掌握,理解,分析等。初步掌握线性系统的设计方法,培养独立工作能力。加深理解时域采样定理的概念。

二、设计任务

掌握利用MATLAB分析系统频率响应的方法和掌握利用MATLAB实现连续信号采样、频谱分析和采样信号恢复的方法。计算在临界采样、过采样、欠采样三种不同条件下恢复信号的误差,并由此总结采样频率对信号恢复产生误差的影响,从而验证时域采样定理。

三、设计原理

3.1时域采样定理

1、对连续信号进行等间隔采样形成采样信号,采样信号的频谱是原连续信号的频谱以采样频率为周期进行周期性的延拓形成的。

2、设连续信号的的最高频率为maxF,如果采样频率max2FFs,那么采样信号可以唯一的恢复出原连续信号,否则max2FFs会造成采样信号中的频谱混叠现象,不可能无失真地恢复原连续信号。

3.2设计原理图

3.3信号的时域采样与频谱分析

对一个连续信号af(t)进行理想采样的过程可以用下式表示

)()()(^tstftfaa (1)

其中)(^tfa为)(tfa的理想采样,s(t)为周期脉冲信号,即 )(tfa)()(ttsST)(tfs连续信号取样脉冲信号抽样信号)(jH)(0tf理想低通滤波器恢复信号 nnTtts)()( (2)

)(^tfa的傅里叶变换)(^jFa为

msaamjFTjF)]([1)(^ (3)

上式表明,)(^jFa为)(jFa的周期延拓,其延拓周期为采样角频率(s=2π/T)。只有满足采样定理时,才不会发生频率混叠失真。

在计算机上用高级语言编程,直接按照(3)式计算)(^tfa的频谱)(^jFa很不方便,下面导出用序列的傅里叶变换来计算)(^jFa的公式。

将(2)式代入(1)式,并进行傅里叶变换,

nTjnatjnatjnaaenTfdtenTttfdtenTttfjF)()()(])()([)(^ (4)

式中的af (nT)就是采样后的序列f(n),即:f(n)=af (nT),f(n)的傅里叶变换为 nnjjenfeF)()( (5)

比较(5)和(4)可知 TjaeFjF)()(^ (6)

说明两者之间只在频率度量上差一个常数因子T。实验过程中应注意这一差别

离散信号和系统在时域均可以用序列来表示,序列图形给人以形象直观的印象,它可以加深我们对信号和系统的时域特征的理解。本实验还将观察分析几种信号及系统的时域特性。

为了观察分析各种序列的频域特性,通常对F(je)在[0,2π]上进行M点采样来观察分析。对长度为N的有限长序列f(n),有

10)()(NnnjjkkemfeF (7)

其中1,...,1,0,2MkkMk 通常M应取的大一些,以便观察谱的细节变化。取模)(kjeF可绘出幅频特性曲线。

3.4采样信号的恢复(插函数法)

设信号)(tf被采样后形成的采样信号为)(tfs,信号的重构是指由)(tfs经过插处理后,恢复出原来信号)(tf的过程。又称为信号恢复。

信号恢复的时域表达式

)(*)()(tfthtfs (8)

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

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

将)(th及)(tfs代入式(8)得:

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

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

插公式表明模拟信号)(tf等于各采样点函数)(snTf乘以对应插函数的总和,即只要采样频率高于信号频率的两倍,模拟信号就可用它的采样信号代表,而不会丢失任何信息。这种理想低通滤波器的模拟信号完全等于模拟信号)(tf,是一种无失真的恢复。

四、设计过程

1、画出连续时间信号的时域波形及其幅频特性曲线,信号为

f(x)= sin(2*pi*60*t)+cos(2*pi*25*t)+cos(2*pi*30*t);

2、 对信号进行采样,得到采样序列 ,画出采样频率分别为80Hz,120 Hz,150 Hz时的采样序列波形;

4.1 MATLAB源程序为:

%实现采样频谱分析绘图函数

function fz=caiyang(fy,fs)

%第一个输入变量是原信号函数,信号函数fy以字符串的格式输入 %第二个输入变量是采样频率

fs0=10000; tp=0.1;

t=[-tp:1/fs0:tp];

k1=0:999; k2=-999:-1;

m1=length(k1); m2=length(k2);

f=[fs0*k2/m2,fs0*k1/m1]; %设置原信号的频率数组

w=[-2*pi*k2/m2,2*pi*k1/m1];

fx1=eval(fy);

FX1=fx1*exp(-j*[1:length(fx1)]'*w);

%求原信号的离散时间傅里叶变换

figure

% 画原信号波形

subplot(2,1,1),plot(t,fx1,'r')

title('原信号'), xlabel('时间t (s)')

axis([min(t),max(t),min(fx1),max(fx1)]) % 画原信号幅度频谱

subplot(2,1,2),plot(f,abs(FX1),'r')

title('原信号幅度频谱') , xlabel('频率f (Hz)')

axis([-100,100,0,max(abs(FX1))+5]) % 对信号进行采样

Ts=1/fs; %采样周期

t1=-tp:Ts:tp; %采样时间序列

f1=[fs*k2/m2,fs*k1/m1]; %设置采样信号的频率数组

t=t1; %变量替换

fz=eval(fy); %获取采样序列

FZ=fz*exp(-j*[1:length(fz)]'*w);

%采样信号的离散时间傅里叶变换

figure

% 画采样序列波形

subplot(2,1,1),stem(t,fz,'.'),

title('取样信号') , xlabel('时间t (s)')

line([min(t),max(t)],[0,0])

% 画采样信号幅度频谱 subplot(2,1,2),plot(f1,abs(FZ),'m')

title('取样信号幅度频谱') , xlabel('频率f (Hz)')

%信号的恢复及频谱函数

function fh=huifu(fz,fs)

%第一个输入变量是采样序列

%第二个输入变量是得到采样序列所用的采样频率

T=1/fs; dt=T/10; tp=0.1;

t=-tp:dt:tp; n=-tp/T:tp/T;

TMN=ones(length(n),1)*t-n'*T*ones(1,length(t));

fh=fz*sinc(fs*TMN); % 由采样信号恢复原信号

k1=0:999; k2=-999:-1;

m1=length(k1); m2=length(k2);

w=[-2*pi*k2/m2,2*pi*k1/m1];

FH=fh*exp(-j*[1:length(fh)]'*w);

% 恢复后的信号的离散时间傅里叶变换

figure

% 画恢复后的信号的波形

subplot(2,1,1),plot(t,fh,'g'),

st1=sprintf('由取样频率fs=%d',fs);

st2='恢复后的信号';

st=[st1,st2]; title(st) , xlabel('时间t (s)')

axis([min(t),max(t),min(fh),max(fh)])