hslogic_MATLAB实现连续信号的采样与重构仿真

1. 掌握利用MATLAB分析系统频率响应的方法,增加对仿真软件MATLAB的感性认识,学会该软件的操作和使用方法。

2.  掌握利用MATLAB实现连续信号采用与重构的方法,加深理解采样与重构的概念。

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

4. 学习MATLAB中信号表示的基本方法及绘图函数的调用,实现对常用连续时间信号的可视化表示,加深对各种电信号的理解。

5. 加深理解采样对信号的时域和频域特性的影响;验证信号与系统的基本概念、基本理论,掌握信号与系统的分析方法。

6. 加深对采样定理的理解和掌握,以及对信号恢复的必要性;掌握对连续信号在时域的采样与重构的方法。

二. 课程设计的内容及要求

1.课程设计的内容

离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot函数来画出序列波形。命令窗口没打开时,从“Desktop”菜单中选择“Command Window”选项可以打开它。“>>”符号是输入函数的提示符,在提示符后面输入数据和运行函数。

退出MATLAB时,工作空间中的内容随之清除。可以将当前工作中的部分或全部变量保存在一个MAT文件中,它是一种二进制文件,扩展名为.mat。然后可在以后使用它时载入它。

用MATLAB的当前目录浏览器搜索、查看、打开、查找和改变MATLAB路径和文件。在MATLAB桌面上,从“Desktop”菜单中选择“Current Directory”选项,或者在命令窗口键入“filebrowser”,打开当前目录浏览器。使用当前目录浏览器可以完成下面的主要任务:查看和改变路径;创建、重命名、复制和删除路径和文件;打开、运行和查看文件的内容;

由于函数不是严格的带限信号,其带宽可根据一定的精度要求做一近似。根据以下三种情况用MATLAB实现采样信号及重构并求出两者误差,分析三种情况下的结果。

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

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

1实现程序代码

当采样频率小于一个连续的同信号最大频率的2倍,即时,称为临界采样. 修改门信号宽度、采样周期等参数,重新运行程序,观察得到的采样信号时域和频域特性,以及重构信号与误差信号的变化。

Sa(t)的临界采样及重构程序代码;

wm=1;     %升余弦脉冲信号带宽

wc=wm;        %频率

Ts=pi/wm;        %周期

ws=2.4*pi/Ts;      %理想低通截止频率

n=-100:100;          %定义序列的长度是201

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);

subplot(211);

stem(t1,f1);

xlabel('kTs');

ylabel('f(kTs)');

title('sa(t)=sinc(t/pi)的临界采样信号');

subplot(212);

plot(t,fa)

xlabel('t');

ylabel('fa(t)');

title('由sa(t)=sinc(t/pi)的临界采样信号重构sa(t)');

grid;      

2程序运行运行结果图与分析

运行结果分析:为了比较由采样信号恢复后的信号与原信号的误差,可以计算出两信号的绝对误差。当t选取的数据越大,起止的宽度越大。

1实现程序代码

当采样频率大于一个连续的同信号最大频率的2倍,即时,称为过采样.

在不同采样频率的条件下,观察对应采样信号的时域和频域特性,以及重构信号与误差信号的变化。

Sa(t)的过采样及重构程序代码;

wm=1;

wc=1.1*wm;

Ts=1.1*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))));

error=abs(fa-sinc(t/pi));

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)的采样信号');

subplot(312);

plot(t,fa)

xlabel('t');

ylabel('fa(t)');

title('由sa(t)=sinc(t/pi)的过采样信号重构sa(t)');

grid;

subplot(313);

plot(t,error);

xlabel('t');

ylabel('error(t)');

title('过采样信号与原信号的误差error(t)');

2程序运行运行结果图与分析。

运行分析:将原始信号分别修改为抽样函数Sa(t)、正弦信号sin(20*pi*t)+cos(20*pi*t)、指数信号e-2tu(t)时,在不同采样频率的条件下,可以观察到对应采样信号的时域和频域特性,以及重构信号与误差信号的变化。

2.3.3Sa(t)的欠采样及重构

1实现程序代码

当采样频率小于一个连续的同信号最大频率的2倍,即时,称为过采样。利用频域滤波的方法修改实验中的部分程序,完成对采样信号的重构。

Sa(t)的欠采样及重构程序代码;

wm=1;                                            

wc=wm;

Ts=2.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);

subplot(311);

stem(t1,f1);

xlabel('kTs');

ylabel('f(kTs)');

title('sa(t)=sinc(t/pi)的采样信号sa(t)');

subplot(312);

plot(t,fa)

xlabel('t');

ylabel('fa(t)');

title('由sa(t)=sinc(t/pi)的欠采样信号重构sa(t)');

grid;

subplot(313);

plot(t,error);

xlabel('t');

ylabel('error(t)');

title('欠采样信号与原信号的误差error(t)');

2程序运行运行结果图与分析

误差分析:绝对误差error已大为增加,其原因是因采样信号的频谱混叠,使得在区域内的频谱相互“干扰”所致。

2.4设计方案优缺点

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

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

3.程序中的常见函数和功能

程序中的常见函数和功能:abs( )求绝对值;sinc( ) Sa(t)函数;ones( )全1矩阵;plot( )绘图;subplot( ) 绘制子图;stem( ) 绘制离散序列数据图 .

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/108460132
今日推荐