利用MATLAB实现SA信号的抽样与重构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利⽤MATLAB实现SA信号的抽样与重构
中⽂摘要................................................. 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 e
所以)(*
t e ⼜可表⽰为 *
()()()
n e t e n T t n T δ
∞
==-∑
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] /doc/64080ed4d5bbfd0a795673e3.html /。