利用MATLAB实现SA信号的抽样与重构讲解

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

中文摘要 (I)
1 概论 (2)
1.1 MATLAB的介绍 (2)
1.2 课程设计的目的和要求 (3)
2 MATLAB实现连续信号采样与重构的理论基础 (4)
2.1 连续时间信号 (4)
2.2 信号的采样 (4)
2.3 信号的重构 (6)
3 MATLAB实现Sa信号的抽样与重构仿真程序分析 (8)
3.1 Sa信号的临界采样及重构 (9)
3.1.1 程序实现及运行结果图 (9)
3.1.2 程序分析 (11)
3.2 Sa信号的过抽样及重构 (11)
3.2.1 程序实现及运行结果图 (11)
3.2.2 程序分析 (14)
3.3 Sa信号的欠抽样及重构 (14)
3.3.1 程序实现及运行结果图 (14)
3.3.2 程序分析 (17)
4 总结 (18)
参考文献 (19)
1.1 MATLAB的介绍
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple、MathCAD并称为四大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

在新的版本中也加入了对C,FORTRAN,C++,JA V A的支持。

可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

MATLAB由一系列工具组成。

这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。

包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。

随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。

而且新版本的MATLAB 提供了完整的联机查询、帮助系统,极大的方便了用户的使用。

简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

本文基于Matlab 强大功能来分析Sa 信号的抽样与重构,由于Sa 信号易于生成,分析方便,故在许多实际应用与仿真中(如数字通信系统等)运用较为广泛。

对于连续时间信号的处理,往往将它转换为相应的离散信号(或数字信号),并进行加工和处理,然后再将处
理后的离散信号转换为连续时间信号。

而抽样定理为连续信号与离散时间信号的相互转换提供了理论依据。

1.2 课程设计的目的和要求
本次课程设计应用MATLAB实现连续信号的采样与重构仿真。

了解MATLAB软件,学习应用MATLAB软件的仿真技术。

它主要侧重于某些理论知识的灵活运用,以及一些关键命令的掌握,理解,分析等。

初步掌握线性系统的设计方法,培养独立工作能力。

加深理解采样与重构的概念,掌握利用MATLAB分析系统频率响应的方法和掌握利用MATLAB实现连续信号采用与重构的方法。

计算在临界采样、过采样、欠采样三种不同条件下重构信号的误差,并由此总结采样频率对信号重构误差的影响。

离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot 函数来画出序列波形。

命令窗口没打开时,从“Desktop”菜单中选择“Command Window”选项可以打开它。

“>>”符号是输入函数的提示符,在提示符后面输入数据和运行函数。

退出MATLAB时,工作空间中的内容随之清除。

可以将当前工作中的部分或全部变量保存在一个MAT文件中,它是一种二进制文件,扩展名为.mat。

然后可在以后使用它时载入它。

用MATLAB的当前目录浏览器搜索、查看、打开、查找和改变MATLAB路径和文件。

在MATLAB桌面上,从“Desktop”菜单中选择“Current Directory”选项,或者在命令窗口键入“filebrowser”,打开当前目录浏览器。

使用当前目录浏览器可以完成下面的主要任务:查看和改变路径;创建、重命名、复制和删除路径和文件;打开、运行和查看文件的内容;
可根据一定的精度要求做一近似。

由于函数)
(t
Sa不是严格的带限信号,其带宽
m
根据以下三种情况用MATLAB实现采样信号及重构并求出两者误差,分析三种情况下的结果。

(1))
Sa的临界采样及重构:w m=1,w c=w m,Ts=Pi/w m;
(t
(2))
Sa的过采样及重构:w m=1,w c=1.1*w m,,Ts=0.7*Pi/w m。

(t
(3))
Sa的欠采样及重构:,w m=1,w c=w m,,Ts=1.5*Pi/w m。

(t
2 MATLAB 实现连续信号采样与重构的理论基础
2.1 连续时间信号
连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点以外,信号都有确定的值与之对应。

严格来说,MATLAB 并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。

当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。

在一定条件下,一个连续时间信号完全可以用该信号在等时间间隔上的瞬时值来表示,并且可以用这些样本值把信号完全恢复过来。

这样,抽样定理为连续时间信号与离散时间信号的相互转换提供了理论依据。

通过观察采样信号的频谱,发现它只是原信号频谱的线性重复搬移,只要给它乘以一个门函数,就可以在频域恢复原信号的频谱,在时域是否也能恢复原信号时,利用频域时域的对称关系,得到了信号。

2.2 信号的采样
模拟信号经过 (A/D) 变换转换为数字信号的过程称为采样,信号采样后其频谱产生了周期延拓,每隔一个采样频率 fs ,重复出现一次。

为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成分的两倍,这称之为采样定理。

时域采样定理从采样信号)(t fs 恢复原信号)(t f 必需满足两个条件:
(1) )(t f 必须是带限信号,其频谱函数在 m ωω>各处为零;(对信号的要求,即
只有带限信号才能适用采样定理。


(2) 取样频率不能过低,必须 m s ωω2>(或 fm fs 2>)。

(对取样频率的要求,即取样频率要足够大,采得的样值要足够多,才能恢复原信号。

) 如图1所示,给出了信号采样原理图
图2-1 信号采样原理图
由图2-1可见,)()()(t t f t f s T s δ⋅=,其中,冲激采样信号)(t s T δ的
表达式
为: ∑∞
-∞
=-=
n s
T nT t t s )()(δδ
其傅立叶变换为∑∞
-∞=-n s s n )(ωωδω,其中s
s T π
ω2=。

设)(ωj F ,
)(ωj F s 分别为)(t f ,)(t f s 的傅立叶变换,由傅立叶变换的频域卷积定理,可得
∑∑∞
-∞
=∞
-∞
=-=
-=n s
s n s s s n j F T n j F j F )]([1
)(*)(21)(ωωωωδωωπω
若设)(t f 是带限信号,带宽为m ω, )(t f 经过采样后的频谱)(ωj F s 就是将)(ωj F 在频率轴上搬移至 ,,,,,02ns s s ωωω±±±处(幅度为原频谱的s T 1倍)。

因此,当m s ωω2≥时,频谱不发生混叠;而当m s ωω2<时,频谱发生混叠。

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

图2-2 信号的采样
用数学表达式描述上述调制过程,则有 )()()(*t t e t e T δ=
理想单位脉冲序列)(t T δ可以表示为 ∑∞
=-=0)()(n T nT t t δδ
其中)(nT t -δ是出现在时刻nT t =,强度为1的单位脉冲。

由于 的数值仅在采样瞬时才有意义,同时,假设
00)(<∀=t t e
)
(t e
所以)(*
t e 又可表示为 *
()()()
n e t e nT t nT δ∞
==-∑
2.3 信号的重构
设信号)(t f 被采样后形成的采样信号为)(t f s ,信号的重构是指由)(t f s 经过内插处理后,恢复出原来信号)(t f 的过程,又称为信号恢复。

若设)(t f 是带限信号,带宽为m ω,经采样后的频谱为)(ωj F s 。

设采样频率m s ωω2≥,
则由式(9)知)(ωj F s 是以s ω为周期的谱线。

现选取一个频率特性⎪⎩⎪⎨
⎧><=c
c
s
T j H ω
ωωωω0
)((其中截止频率c ω满足2
s
c m ω
ωω≤≤)的理想低通滤波器与)(ωj F s 相乘,得到的频谱即
为原信号的频谱)(ωj F 。

)()()(ωωωj H j F j F s =与之对应的时域表达式为 )(*)()(t f t h t f s =
而 ∑∑∞
-∞
=∞-∞
=-=-=n s s n s s nT t nT f nT t t f t f )()()()()(δδ
)()]([)(1t Sa T j H F t h c
c
s
ωπ
ω
ω==- 将)(t h 及)(t f s 代入得
∑∞
-∞
=-==n s
c
s
c
s
c
c
s
s
nT t Sa nT f T t Sa T t f t f )]([)()(*)()(ωπ
ω
ωπω
此式即为用)(s nT f 求解)(t f 的表达式,是利用MATLAB 实现信号重构的基本关系式,抽样函数)(t Sa c ω在此起着内插函数的作用。

例:设t
t
t Sa t f sin )()(=
=,其)(ωj F 为: ⎪⎩⎪⎨
⎧><=1
1)(ωωπ
ωj F
即)(t f 的带宽为1=m ω,为了由)(t f 的采样信号)(t f s 不失真地重构)(t f ,由时域采样定理知采样间隔πω
π
=<
m
s T ,取π7.0=s
T (过采样)。

利用MATLAB 的抽样函数t
t t Sinc ππ)
sin()(=
来表示)(t Sa ,有)/()(πt Sinc t Sa =。

据此可知: ∑∞-∞=-==n s c
s
c s c c s s nT t Sinc nT f T t Sa T t f t f )]([)()()()(π
ωπωωπω 通过以上分析,得到如下的时域采样定理:一个带宽为w m 的带限信号f(t),可唯一地由它的均匀取样信号fs(nTs)确定,其中,取样间隔Ts<π/w m, 该取样间隔又称为奈奎斯特间隔。

根据时域卷积定理,求出信号重构的数学表达式为:
)]
([)()](][)()([)(*)()]([*)]([)(nTs t wc Sa nTs f wc Ts wct Sa wc
Ts
nTs t nTs f t h t fs jw H ift jw Fs ift t f n n -=-===∑∑∞-∞
=∞
-∞=ππ
δ
式中的抽样函数Sa(w c t)起着内插函数的作用,信号的恢复可以视为将抽样函数进行不同时刻移位后加权求和的结果,其加权的权值为采样信号在相应时刻的定义值。

利用
MATLAB 中的抽样函数t
t t c ππ)sin()(sin =来表示Sa(t),有)/(sin )(πt c t Sa =,
)/(sin )(πwct c wct Sa =,于是,信号重构的内插公式也可表示:
)]([
sin )()]
(
[*)]()([)(nTs t wc
c nTs f Tswc
t wc
Sa wc
Ts
nTs t nTs f t f n n -=
-=∑
∑∞
-∞
=∞
-∞

π
π
π
δ
3 MATLAB实现Sa信号的抽样与重构仿真程序分析sa(t)=sinc(t/pi)原信号的程序与运行波形图。

1、程序代码:
wm=1;
wc=wm;
Ts=pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-20:Dt:20;
t1=-20:0.5:20;
f1=sinc(t1/pi);
subplot(211);
plot(t1,f1)
xlabel('kTs');
ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)信号');
grid;
y=fft(f1);
GF=abs(y);
h=(0:length(y)-1)'*fs/length(y);
subplot(212);
plot(h,GF);
xlabel('频率(Hz)');
ylabel('幅值');
grid;
2、运行结果图:
图3-1 Sa信号运行结果图
3.1 Sa信号的临界采样及重构
3.1.1 程序实现及运行结果图
1、Sa信号的临界采样信号程序实现及运行图:
程序代码:
wm=1;
wc=wm;
Ts=pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-20:Dt:20;
t1=-20:0.5:20;
f1=sinc(t1/pi);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的临界采样信号');
Grid
运行图:
图3-1-1 临界采样信号
2、临界采样信号的重构程序实现及运行图:
程序代码:
wm=1;
wc=wm;
Ts=pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-20:Dt:20;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); t1=-20:0.5:20;
f1=sinc(t1/pi);
stem(t1,f1);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的临界采样信号重构sa(t)');
运行图:
图3-1-2 临界采样信号重构
3.1.2 程序分析
Sa(t)=sinc(t/pi) %利用sinc 函数生成函数Sa(t)
Pi %圆周率
n=-100:100; %时域采样点
t=--20:Dt:20 %产生一个时间采样序列
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))) %信号重构
sinc(t1/pi) %绘制f1的非的非零样值向量
plot(t,fa) %绘制fa 的图形
stem(t1,f1) %绘制一个二维杆图
图3-1-2所表示的是临界采样信号的重构,其中m s ωω2=,其重构信号可以近乎完整的恢复为原信号,其误差可忽略不计。

3.2 Sa 信号的过抽样及重构
3.2.1 程序实现及运行结果图
1、过采样信号及重构程序实现和运行图
程序代码:
wc=1.1*wm;
Ts=0.7*pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-10:Dt:10;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); t1=-10:0.5:10;
f1=sinc(t1/pi);
subplot(311);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的采样信号');
y=fft(f);
GF=abs(y);
h=(0:length(y)-1)'*fs/length(y);
subplot(312);
plot(h,GF);
xlabel('频率(Hz)');
ylabel('幅值');
grid;
subplot(313);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的过采样信号重构sa(t)');
grid;
运行图:
图3-2-1 过采样信号及重构
2、误差分析程序实现及运行图:
程序代码:
wm=1;
wc=1.1*wm;
Ts=0.7*pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-20:Dt:20;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); error=abs(fa-sinc(t/pi));
t1=-20:0.5:20;
f1=sinc(t1/pi);
stem(t1,f1);
plot(t,error);
xlabel('t');
ylabel('error(t)');
title('过采样信号与原信号的误差error(t)');
运行图:
图3-2-2 误差分析图
3.2.2 程序分析
Sa(t)=sinc(t/pi) %利用sinc 函数生成函数Sa(t)
error=abs(fa-sinc(t/pi)); %求重构信号与原信号误差
f1=sinc(t1/pi); %f1的非零样值向量
xlabel('t') %横坐标轴
ylabel('fa(t)') %纵坐标轴
title('由sa(t)=sinc(t/pi)的欠采样信号重构sa(t)') %书写图名
图3-2-1中,m s ωω2>时,此时为对原信号的过采样与重构,由图3-2-2中可以看出,两信号的绝对误差error 已在10-6 数量级,说明重构信号的精度已经很高。

3.3 Sa 信号的欠抽样及重构
3.3.1 程序实现及运行结果图
1、欠采样信号及重构程序实现和运行图
程序代码:
wm=1;
Ts=1.5*pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-10:Dt:10;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); t1=-10:0.5:10;
f1=sinc(t1/pi);
subplot(311);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的采样信号');
y=fft(f);
GF=abs(y);
h=(0:length(y)-1)'*fs/length(y);
subplot(312);
plot(h,GF);
xlabel('频率(Hz)');
ylabel('幅值');
grid;
subplot(313);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的欠采样信号重构sa(t)');
grid;
图3-3-1 欠采样信号及重构
2、误差分析程序实现及运行图:
程序代码:
wm=1;
wc=wm;
Ts=1.5*pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-20:Dt:20;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); error=abs(fa-sinc(t/pi));
t1=-20:0.5:20;
f1=sinc(t1/pi);
stem(t1,f1);
plot(t,error);
xlabel('t');
ylabel('error(t)');
title('欠采样信号与原信号的误差error(t)');
运行图:
图3-3-2 误差分析图
3.3.2 程序分析
Sa(t)=sinc(t/pi) %利用sinc 函数生成函数Sa(t)
error=abs(fa-sinc(t/pi)); %求重构信号与原信号误差
f1=sinc(t1/pi); %f1的非零样值向量
图3-3-1中m s ωω2<,为原信号的欠采样信号,因为它的取样频率不符合奈奎斯特频率,那么频移后的各相临频谱会发生相互重叠,这样就无法将他们分开,因而也不能再恢复原信号。

频谱重叠的现象被称为混叠现象。

4 总结
通过此次的课程设计使我对MATLAB有了更深的理解,同时对信号的抽样与重构仿真的掌握。

在设计过程中,老师给我们提供了一些参考资料,但这远远不够,重要的还是我们自己要查阅更多的资料和了解跟多的相关内容。

MATLAB课程设计我不仅学到了很多知识,还有学习方法。

仅凭我在信号与系统实验课上所学的那点知识显然是不够的。

所以为了做好这次的课程设计,我查阅了很多资料,并上网搜索了许多与此有关的知识,这个过程中我也学会了好多,通过浏览MATLAB论坛,看到了好多有关学习MATLAB的方法。

在这次课程设计中使我对信号的抽样与重构仿真也有了深一步的掌握,也学会了MATLAB中信号表示的基本方法及一些绘图函数的简单调用。

当刚开始使用MATLAB也让我有些不适应,摸索了一段时间,从而我对MATLAB函数程序有了稍微多点的了解,提高了我独立完成实验的能力,让我在自己寻找材料和学习应用新软件,程序语言方面有了提高,为以后的设计打下基础。

因为只有一个星期的时间,对于MATLAB的知识还仅仅只是了解,并没有完全地掌握。

我也明白作为一项工具,MATLAB还有许多需要我去学习去了解,并不是一时的了解就可以的,要学会去深究。

通过一个星期的课程设计,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中也遇到了很多问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

这次课程设计终于顺利完成,在设计中遇到的运行和调试问题,最后在同学的互相帮助下,终于游逆而解。

在以后的学习过程中我要不断的学习,不断丰富自己的知识。

参考文献
[1] 吴大正. 信号与线性系统分析[M].北京:高等教育出版社,2005.08
[2] 甘俊英. 基于MATLAB的信号与系统实验指导[M].北京:清华大学出版社,2007.08
[3]陈后金,信号与系统[M]北京:高等教育出版社,2007.12
[4]贺超英,MATLAB应用与实验教程[M]北京:电子工业出版社,2010.01
[5] 郭健. Matlab在Sa信号抽样与重构中的应用[J].微计算机信息,2011.04.
[6] /。

相关文档
最新文档