信号处理模拟仿真课程设计
![信号处理模拟仿真课程设计](https://img.360docs.net/img35/169eaagsuwx0hdaj8arobbs4ix79uac5-51.webp)
![信号处理模拟仿真课程设计](https://img.360docs.net/img35/169eaagsuwx0hdaj8arobbs4ix79uac5-92.webp)
《信号处理模拟仿真》
课程设计
题目:信号处理模拟仿真课程设计
班级:电子信息科学与技术132 学生姓名:庞建奇
学号: 720130026
2016年 6 月 1 日
目录
目录
1 课程设计目的 (3)
2 课程设计要求 (3)
3 课程设计内容 (3)
3.1 MATLAB软件的基础应用 (3)
3.1.2 MATLAB描述常用信号 (5)
3.2 信号处理分析 (8)
3.2.1 信号抽样与调制解调 (8)
3.2.2 信号卷积的MATLAB实现 (12)
3.2.3 用MATLAB测量信号频谱 (15)
3.2.4 基于MALAB的DFT变换 (17)
4 实训心得 (19)
1 课程设计目的
《信号处理模拟仿真》课程实习是对电子信息科学与技术专业的一次实训,其目的在于实现在可视化的交互式实验环境中,以计算机为辅助教学手段,以科技应用软件MATLAB为实验平台,辅助学生完成信号处理中的数值分析,可视化建模及仿真调试,将学生从繁杂的手工运算中解脱出来,把更多的时间和经历放到信号处理的分析方法和理解中来。当前,科学技术的发展趋势高度综合又高度分化,这要求高等院校培养的学生既要具有扎实的专业基础,还要通过工程技术实践,不断提高实验研究能力和分析计算能力,总结归纳能力和解决各种实际问题的能力。因此,做好本课程的实验是学好本课程的重要教学辅助环节。
2 课程设计要求
课程设计的过程是综合运用所学知识的过程。课程设计主要任务是围绕数字信号的频谱分析、特征提取和数字滤波器的设计来安排的。根据设计题目的具体要求,运用MATLAB语言完成题目所规定的任务及功能。设计任务包括:查阅专业资料、工具书或参考文献,了解设计课题的原理及算法、编写程序并在计算机上调试,最后写出完整、规范的课程设计报告书。
实验前,必须首先阅读本实验原理,读懂所给出的全部范例程序。实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。并结合范例程序应该完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序。
3 课程设计内容
3.1 MATLAB软件的基础应用
3.1.1.1 实验名称
MATLAB 程序入门和基础应用
3.1.1.2 实验目的
1.学习Matlab软件的基本使用方法;
2.了解Matlab的数值计算,符号运算,可视化功能;
3.Matlab程序设计入门
3.1.1.3 实验原理
MATLAB它广为流传的原因不仅在于在它的计算功能强大,图形功能丰富、方便,还在于它的编程效率高,扩充能力强;语句简单,易学易用,而不会像其他的那些高级语言一样距人于千里之外。MATLAB如今已经被广泛地应用于各个领域中,是当今世界上最优秀的数值计算软件。在这里我们就对MATLAB做一下简单的介绍。
1.主窗口(Command Windows)
MATLAB主窗口是MATLAB的主要工作界面。主窗口除了嵌入一些子窗口外,还主要包括菜单栏和工具栏。
2.命令窗口(Current Directory)
命令窗口是MATLAB的主要交互窗口,用于输入命令并显示执行结果。
3.工作空间(Workspac)
工作空间是MATLAB用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有的变量,可对变量进行观察、编辑、保存和删除。
4.命令历史窗口(Command History)
命令历史窗口可以内嵌在MATLAB主窗口的右下部,也可以浮动在主窗口上。在默认设置下,历史记录窗口中会自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询如果要清除这些历史记录,可以选择Edit菜单中的Clear Command History命令。
当前目录窗口是指MATLAB运行文件时的工作目录,只有在当前目录或搜索路径下的文件、函数可以被运行或调用。在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。
将用户目录设置成当前目录也可使用cd命令。例如,将用户目录
e:\matlab7\work设置为当前目录,可在命令窗口输入命令:cd
e:\matlab7\work
5.Start按钮
在MATLAB主窗口左下角还有一个Start按钮,单击该按钮会弹出一个菜单,选择其中的命令可以快速访问MATLAB的各种工具和查阅MATLAB包含的各种资源。
用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。
实验中要用的指令:Function plot subplot title axis stem subs subs min max length ones 。
3.1.1.4实训内容及具体步骤
1.打开MATLAB的系统界面,掌握其基本操作和各函数的用法;
2.学习变量的描述方法,掌握几个固定变量:ans(计算机默认赋值变量),i 和j(虚数单位),pi,inf(无穷大),nan(非数)的使用。
注意,定义变量以字母开头,可以由字母、数字和下划线混合组成,区分字母大,小写字符长度不超过63个。
3.学习数值,矩阵,运算符,向量的矩阵运算,数组运算的描述方法。
4.Matlab符号运算功能
(1)符号运算的过程
在符号运算的整个过程中,所有的运算均是以符号进行的,即使以数字形式出现的量也是字符量。做一个对sin(x/2)求导的过程。
5.matlab语言的绘图功能
3.1.2 MATLAB描述常用信号
3.1.2.1 实验名称
MATLAB描述常用信号
3.1.2.2 实验目的
1. 在了解MATLAB这个软件的基本应用之后,学习用MATLAB描述常用信号的方法
2. 掌握连续时间信号和离散时间信号的描述
3. 学会用向量和符号表示法
4. 掌握信号的时域变换方法
3.1.2.3 实验原理
MATLAB强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强有力的工具。在MATLAB中通常有两种方法来表示信号,一种是用向量来
表示信号,另一种则是用符号运算的方法来表示信号。用适当的MATLAB语句表示出信号后,我们就可以利用MATLAB的绘图命令绘制出直观的信号波形。
3.1.2.4连续时间信号
所谓连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。
1.向量表示法
例如对于连续信号f(t)=sin(t),我们可以用如下两个向量来表示:
程序:
t=-10:0.01:10;
f=sin(t);
用上述向量对连续信号表示后,就可以用plot命令来绘出该信号的时域波形。Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。命令如下:程序:
t=-10:0.01:10;
f=sin(t);
plot(t,f);
title('f(t)=sint')
xlabel('t')
axis([-10,10,-1.1,1.1])
2.符号运算表示法
例如对于连续信号f(t)=
/2
t
e ,我们可以用符号表达式表示为:
syms t f
f=sym('exp(-t/2)');
f=exp(-t/2);
ezplot(f,[-6, 6])
然后用ezplot命令绘制其波形:ezplot(f,[-6, 6])
3.1.2.5离散时间信号
一般说来,离散时间信号用f(k)表示,其中变量k为整数,代表离散的采样时间点。
f(k)可表示为:
f(k)={...f(-2),f(-1),f(0),f(1),f(2)…}
↑k=0
在MATLAB中,用一个向量f即可表示一个有限长度的序列。但是,这样的向量并没有包含其对应的时间序号信息。所以,要完整地表示一个离散信号需要用两个向量。
在用MATLAB表示离散序列并将其可视化时,我们要注意以下几点:第一,与连续时间信号不同,离散时间信号无法用符号运算来表示;第二,由于在MATLAB中,矩阵的元素个数是有限的,因此,MATLAB无法表示无限序列;第三,在绘制离散信号波形时,要使用专门绘制离散数据的stem命令,而不是plot命令。如对于上面定义的二向量f和k,可用如下stem命令绘图:stem (k, f),得到对应序列波形图,如图2.1所示。
图2.1 随机序列的波形
同样的,单位阶跃序列,正弦序列,离散时间指数序列等的离散信号我们都可以用类似的方法描述并绘制出图形。
3.1.2.6信号的时域变换
1.连续信号的时域变换
(1)移位
(2)反折
(3)尺度变换
(4)倒相
2.离散时间序列的时域变换
(1)离散序列反折
(2)离散序列的平移
(3)离散序列的倒相
3.1.2.7实训设备
计算机 MATLAB软件
3.1.2.8内容及具体步骤
1.MATLAB中连续信号的向量或符号运算功能来表示
(1)向量表示法
(2)符号运算表示法
2.MATLAB中离散时间信号描述:
一般说来,离散时间信号用f(k)表示,其中变量k为整数,代表离散的采样时间点。
3.阶跃序列,正弦序列,离散时间指数序列等的离散信号我们都可以用类似的方法描述并绘制出图形:
4.续信号的时域变换移位
5.时间序列的时域变换
3.2 信号处理分析
3.2.1 信号抽样与调制解调
3.2.1.1 实训名称
信号抽样与调制解调
3.2.1.2 实训目的
(1)进一步理解信号的抽样及抽样定理;
(2)进一步掌握抽样信号的频谱分析;
(3)掌握和理解信号抽样以及信号重建的原理;
(4)掌握傅里叶变换在信号调制与解调中的应用。
基本要求:一般理解信号重建的物理过程以及内插公式所描述的信号重建原理。理解频率混叠的概念。理解调制与解调的基本概念,理解信号调制过程中的频谱搬移。掌握利用MATLAB 仿真正弦幅度调制与解调的方法。
3.2.1.3 实训原理及方法
1.信号的抽样及抽样定理
抽样(Sampling ),就是从连续时间信号中抽取一系列的信号样本,从而,得到一个离散时间序列(Discrete-time sequence ),这个离散序列经量化(Quantize )后,就成为所谓的数字信号(Digital Signal )。模拟信号经抽样、量化、传输和处理之后,其结果仍然是一个数字信号,为了恢复原始连续时间信号,还需要将数字信号经过所谓的重建(Reconstruction )和平滑滤波(Smoothing )。图3.1展示了信号抽样与信号重建的
整个过程。
上述的实际抽样过程,很容易用简单的数学公式来描述。设连续时间信号用x(t)表示,抽样周期为Ts ,抽样频率为(s ,则已抽样信号的数学表达式为
)()(][s nT t nT x t x n x s ===
例题 设连续时间信号为一个正弦信号 x(t) = cos(0.5πt),抽样周期为Ts = 1/4秒,编程序绘制信号x(t)和已抽样信号x[n]的波形图。
范例程序Sampling 如下:
% Sampling
clear, close all,
t = 0:0.01:10;
subplot(221)
plot(t,x), title('A continuous-time signal x(t)'), xlabel('Time t')
subplot(222)
图3.1 模拟信号的数字处理过程
x
stem(n,xn,'.'), title('The sampled version x[n] of x(t)'),
xlabel('Time index n')
执行该程序后,得到的波形图如图3.5所示。
图3.5 连续时间信号及其抽样后的离散时间序列在这个范例程序中,先将连续时间t进行离散化,使之成为以Ts = 1/4秒的离散时间n,然后,将n代入到信号x(t) 的数学表达式中计算,就完成了抽样过程,且得到了抽样后的离散时间序列x[n]。
2.信号抽样过程中的频谱混叠
为了能够观察到已抽样信号的频谱是否会存在混叠现象,或者混叠程度有多么严重,有必要计算并绘制出已抽样信号的傅里叶变换。
根据式3.5可计算出已抽样信号的频谱。下面给出的范例程序Program4_1就是按照式3.5进行计算的。其中,主要利用了一个for循环程序完成周期延拓运算。
% Program4_1
clear, close all,
tmax = 4; dt = 0.01;
t = 0:dt:tmax;
Ts = 1/10;
ws = 2*pi/Ts;
w0 = 20*pi; dw = 0.1;
w = -w0:dw:w0;
n = 0:1:tmax/Ts;
x = exp(-4*t).*u(t);
xn = exp(-4*n*Ts);
subplot(221)
plot(t,x), title('A continuous-time signal x(t)'),
xlabel('Time t'), axis([0,tmax,0,1]), grid on
X = 0;
plot(w,abs(X))
title('Magnitude spectrum of x[n]'), xlabel('Frequency in
radians/s'),grid on
axis([-60,60,0,1.8*max(abs(Xa))])
3.信号重建
如果满足抽样定理,那么,我们就可以唯一地由已抽样信号x[n] 恢复出原连续时间信号x(t)。在理想情况下,可以将离散时间序列通过一个理想低通滤波器,图4.6给出了理想情况下信号重建的原理示意图。
已抽样信号xp(t)的数学表达式为:∑∞∞--=)
()()(nT t nT x t x p δ,根据系统输
这个公式称为内插公式(Interpolation Formula ),该公式的推导详见教材,请注意复习有关内容。须提请注意的是,这里的内插公式是基于重建滤波器为理想低通滤波器。
3.2.1.4 实训设备
计算机 MATLAB 软件
3.2.1.45 内容及具体步骤
实验前,必须首先阅读本实验原理,了解所给的MATLAB 相关函数,读懂所给出的全部范例程序。实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。并结合范例程序所完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序的编程算法。
)(t x 图3.6 信号重建原理图 )
(t x r ?
实验前,一定要针对下面的实验项目做好相应的实验准备工作,包括事先编写好相应的实验程序等事项。
Q1 给范例程序Program4_1加注释。
Q2 范例程序Program4_1中的连续时间信号x(t) 是什么信号?它的数学表达式为:
Q3 在1/2—1/10之间选择若干个不同Ts值,反复执行执行范例程序Program4_1,保存执行程序所得到的图形。
Q4 请手工计算升余弦信号x(t) = [1+cos(pi*t)].*[u(t+1)-u(t-1)] 的傅里叶变换的数学表达式,手工绘制其幅度频谱图。
计算过程:
Q5 调制与解调仿真实验。设调制信号为单频正弦信号x(t) = sin(t),其角频率为1 rad/s,载波为c(t) = cos(10t),载频为10rad/s。
3.2.2 信号卷积的MATLAB实现
3.2.2.1 实训名称
信号卷积的MATLAB实现
3.2.2.2 实训目的
(1)增加学生对卷积的认识;
(2)了解MATLAB这个软件的一些基础知识;
(3)利用MATLAB计算信号卷积;
(4)验证卷积的一些性质。
3.2.2.3 实训原理
用MATLAB实现卷积我们先必须从信号下手,先把信号用MATLAB语句描述出来,然后再将这些信号带入到我们写好的求卷积的函数当中来计算卷积。在本章中我们将信号分为连续信号和离散序列两种来实现卷积并验证卷积的一些性质。
MATLAB强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强有力的工具。在MATLAB中通常有两种方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示信号。用适当的MATLAB语句表示出信号后,我们就可以利用MATLAB的绘图命令绘制出直观的信号波形。
连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。这些离散的样值就能较好地近似出连续信号。在MATLAB中连续信号可用向量或符号运算功能来表示。
1.移位
对于连续信号f(t),若有常数t0>0,延时信号f(t-t0)是将原信号沿正t 轴方向平移时间t0,而f(t+t0)是将原信号沿负t轴方向移动时间t0。我们可用下面的命令来实现连续信号的平移及其结果可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量,subs命令则将连续信号中的时间变量t 用t-t0替换:
y=subs(f,t,t-t0); ezplot(y)
2.反折
连续信号的反折,是指将信号以纵坐标为轴反折,即将信号f(t)中的自变量t换为-t。实现如下:
y=subs(f,t,-t); ezplot(y)
3.尺度变换