信号处理仿真及应用实验指导书(最新)

更新时间:2024-05-04 10:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

信号处理仿真及应用实验指导书

实验一 电路的建模与仿真

——MATLAB程序设计

一、实验目的:

1、熟悉MATLAB命令和编辑、运行、调试环境; 2、编写M文件,实现电路仿真。

二、实验原理与方法:仿真RLC电路的响应,要求运用电路分析知识编写M文件,计算电流,并绘制出图形。 二、实验内容及步骤:

方法一:采用函数文件形式进行仿真(参考教材P18例子)

1、如下图所示电路的初始能量为零,t=0时刻,将一个25mA的直流源作用到电路上,其中电容C=0.1F,电感L=1H,电阻R=4?,画出图中电感L支路上电流iL的图形。

I t=0 iC CiL L iR R

列写出关于电感L支路上电流iL的微分方程 2、根据建模分析 3、进行MATLAB仿真建立M文件,运行求解微分方程 4、绘制电感支路电流图形

方法二、采用MATLAB函数dsolve进行仿真

1、运用电路分析知识建立电路模型

如上图所示电路的初始能量为零,t=0时刻,将一个25mA的直流源作用到电路上,其中电容C=25nF,电感L=25mH,电阻R=400?(注意该参数与前面的参数不同)。列写出关于电感L支路上电流iL的微分方程

因为电路初始能量为0,而且电感上的电流不能突变,所以在开关打开瞬间电感上的电流iL(t)?0(t?0),电感上的电压VL(t)?0(t?0),又VL(t)?L*d(iL)/dt,所以:

diLdt(0)?0 (1)

?根据电路图及基尔霍夫电流定律可得:

iL?iR?iC?I (2)

其中,iR,iC的表达式分别如下:

iR?VR,iC?CdVdt (3)

在上式中,V为电阻R两端电压,同时也就是电容两端电压,又有如下式关系:

V?LdiLdt

dVdt?LdiLdt22 (4)

将(3)式与(4)式依次代入(2)式,可得如下表达式:

diLdt22?1diLRCdt?iLLC?ILC

2、进行MATLAB仿真建立M文件,运行求解微分方程 desolve:求解微分方程符号的一般指令,其通用格式为: r?dsol(v'e1e,q2e?,?q?','con1d,c?o?2n?,d

v其中,eq1,eq2,?分别代表按序排列的不同微分方程,cond1、cond2分别代表微分方程式的初始条件,v代表微分方程中的独立变量(其默认独立变量为t)。此外指令中用到字母D,代表与独立变量有关的微分,例如:DiL代表式子:d(iL)/dt;如D后面跟有数字n,则代表进行n次微分,没有则为默认的一次微分。

3、绘制电感支路电流图形

ezplot:作图指令,专门用于函数作图,通用格式为:ezplot(f,[min,max]) 其中,f代表函数,[min,max]代表函数中变量的范围。

在此例中t的范围很小,是为了观察iL在电路加上电流I的瞬间的变换情况。 三、实验思考:

1、基尔霍夫电流定律 2、命令行与M文件的区别

实验二 正弦稳态电路仿真

—— SIMULINK实现

一、实验目的:熟悉SIMULINK常用模块。建立含受控源的电路模型并进行仿真。 二、实验原理:仿真正弦稳态电路 三、实验内容及步骤:

1根据电路图建立SIMULINK电路模型

如图所示电路,已知C1=0.5F,R2=R3=2?,L4=1H,Us=10cost,Is(t)=5cos2t,求b,d两点间的电压

2建立SIMULINK电路模型

新建一个名为sy02.mdl的仿真模型文件,需要选用以下模块并设置其参数

a C1 + Us b R2 c VC Voltage Source模块:位于SimPowerSystems节点下的Electrical Sources模块库内,代表一个理想交流电压源

AC Current Source 模块:位于SimPowerSystems节点下的Electrical Sources模块库内,代表一个理想交流电压源。

Voltage Measurement 模块:位于SimPowerSystems节点下的Measurements模块库内,用于测量所在支路的电压值。

Scope 模块:位于Simulink节点下的Sink模块库内,用于显示输出图形,功能相当于一个示波器。

Series RLC Branch模块:基本电路

为了观察运行仿真后的输出结果,还应将模型编辑窗口菜单栏中“Simulation/ Simulation Parameters?项”的“Solver选项卡”中所含的“Start time参数”设置为0,“Stop time 参数”设置为20,这样可以使得仿真时间从0s到20s

此外还需要双击“Scope”模块图标,在弹出的“示波器”显示图框中单击parameters图标,将打开的对话框“Data history”页中的“Limit data points to last”选中,将其参数改为50000。这是为了“示波器”保存足够的显示数据。应注意的是该参数值的设置越大所占用的内存越大,会影响到仿真的速度,所以选择参数时应适当,够用即可。

上述工作进行完毕后,运行该模型,得到Scope的输出图形。 四、实验思考:

Simulink仿真的直观性 五、可用的MATLAB函数

R3 d Is L4 实验三 组合逻辑电路仿真

一、实验目的:应用SIMULINK实现编、移码器和加法器的仿真。 二、实验原理:

组合逻辑电路是相对于时序逻辑电路而言的,组合逻辑电路在结构上由各种逻辑门构成,它不包含记忆功能器件,其一般结构框图如下所示:

X1 X2 X3 X4 … 组合逻辑电路 …F1 F2 F3 F4 组合逻辑电路的特点是,在任何给定时刻的输出值仅与该时刻电路的输入值有关,而与过去的输入状态无关。目前,常用的组合电路有半加器、全加器、比较器、编码器、译码器、数据选择器、数据分配器、奇偶校验器等。

编码器是指用选定的一组0、1序列来标识特定对象的过程,执行编码功能的电路称为编码器,结构框图如图所示:

设编码器有n个输入端X0,X1,...Xn?1,有m个输出端Z0,Z1,...Zm?1。为了不使输出发生混乱而产生错误,规定在任何给定时间内,n个输入端中只有一个输入出现,其余n-1个输入均不得出现。为使输入与输出建立一一对应的关系,即一个被编码的对象具有一个特定的代码,输出的位数应满足:

m?log2 (该式中,m应取满足该式的最大整数)

n X0 X1 … 编码器 Z0 Z1 … Xn-1 数字系统是以二进制进行运算的,所以常常需要将用的十进制表示法与二进制表示法相互进行转换,编码器就起到了十分关键的作用。 三、实验内容及步骤:

利用SIMULINK模块进行一个3位二进制编码器的仿真。 1、系统分析

3位二进制编码器,8/3线二进制编码器,其输入端有8个,输出端有3个。 真值表如下图所示:

X0 Zm-1 X1 X2 X3 X4 X5 X6 X7 Z0 Z1 Z2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 根据真值表可以直接写出逻辑表达式:

Z2?X4?X5?X6?X7,Z1?X2?X3?X6?X7,Z0?X1?X3?X5?X7

2、模型搭建

首先建立一个名为sy03.mdl的文件,根据以上分析结果,可知需要选用以下模块: *Pulse Generator(脉冲序列发生器)模块:

位于Simulink节点下的Source库中,用于产生所需的原始脉冲脉冲序列。复制8个Pulse Generator模块进入sy03.mdl文件中,将它们分别命名为X0,X1,...X7。分别双击各个模块,对其参数进行调整。

在Pulse Generator打开的的参数对话框界面中进行相应的设置,在Pulse type选项中有Time based(默认选项)和Sample based两项。

如果选中Time based项,模块按照时间参数输出脉冲序列;

如果选中Sample based项,模块将根据设定的采样频率及其他相关参数输出序列。 在此选择Sample based项。

对“Block Parameters”对话框进行设置:

“Amplitude”文本框:用于设定调整脉冲输出幅度;

“Period(number of samples)”文本框:用于设定按照采样时间长度确定产生的脉冲序列周期;

“Pulse width(number of samples)”文本框:用于设定按照采样时间长度确定产生的脉冲序列周期;

“Phase delay (number of samples)”文本框:用于设定每一个脉冲持续的时间长短(即电平为1的时间,以采样时间为单位);

“Sample time’文本框:该文本框用于确定采样时间,单位是s(秒); *Logical Operator(逻辑操作)模块

位于Simulink节点下的Math Operations模块库中,用于实现逻辑表达式的运算 Logical Operator模块参数调整 * Scope(示波器)模块

位于Simulink节点下的Sinks模块库中,本例用到3个示波器。 设置示波器参数后单击Scope模块,可以看到Z2,Z1,Z0的输出波形。 四、实验思考:

本次实验利用Simulink已有模块完成数字电路的编码器仿真,应该注意Logical Operator模块和Pulse Generator模块等数字电路仿真常用模块的参数调整方法,以及它们如何相互搭配使用。 五、可用的MATLAB函数

实验四 时序逻辑电路仿真

一、实验目的:应用SIMULINK实现时序逻辑电路的仿真

二、实验原理:

时序逻辑电路与组合逻辑电路最大的区别在于,研究时刻的输出不仅取决于研究时刻的输入,而且还依赖于研究时刻以前的输入。因此,从电路结构来看,时序电路一定要包含存储器件,它的作用就是用来“记忆”研究时刻以前的输入情况。

基本触发器:

在MATLAB的Simulink中有专门的触发器模块,它们都位于Simulink Extras节点下的Flip Flop模块库中。有RS触发器,JK触发器,D触发器等模块。

寄存器用于存储一组二进制代码,它被广泛应用于各类数字系统和数字计算机中。一个基本RS触发器可以用于寄存1位二进码信息,而将n个基本RS触发器连接在一起,就可以构成一个n位二进制并行寄存器。所谓并行寄存器就是能够同时存储几个数据源的寄存器。我们在Simulink中利用RS触发器(即S-R Flip-Flop模块)搭建并行寄存器。

并行寄存器由两大部分组成,触发器和控制电路。触发器选用两个S-R Flip-Flop模块,而控制电路主要由门电路构成。

仿真时序逻辑电路 三、实验内容及步骤::

首先新建一个Simulink模型文件,将其命名为sy04.mdl。

拷贝2个S-R Flip-Flop模块到所建的文件中,以此搭建并行寄存器模型的触发器。分别将这2个S-R Flip-Flop模块的参数Initial condition(state of Q)均设置为0。

对RS触发器模块的分析,当S、R端同时等于1时,S-R Flip-Flop模块处于无效的状态,因此必须利用控制电路对S、R端的输入信号进行进行控制,以防止无效状态的出现。此外,在输入电路中还必须添加时钟电路控制,以使寄存器发挥作用。

分析该电路:当Clock信号输入为1时,输入端的输入信号并不起作用,此时连接S端和连接R端的输出都是0,因此S-R Flip-Flop保持前一时刻的状态;当Clock信号输入为0时,连接S端和连接R端的输出信号都取决于输入端的输入信号;而对于禁止状态,即对S-R Flip-Flop模块的R、S端均输出是1,是不可能由该控制电路产生的。

根据以上分析,以下控制电路完全能满足搭建并行寄存器对控制电路功能的需要,由此搭建二位并行寄存器Simulink模型图

接S端 NOR 接R端 NOR 接输入信号

Clock

图4-1并行寄存器控制

电路

根据以上电路图建立二位并行寄存器SIMULINK电路模型,注意其参数设置,输入信号源为Pulse Generator模块,它们的参数设置如表所示: 模块名称 Pulse type Amplitude Period Pulse width Phase delay Sample time D0 D1 Sample based Sample based 1 1 3 3 1 1 0 0 1 0.25 其目的只是为了产生2个不同的输入信号,从而对2位并行寄存器不同寄存位进行比较,Clock模块是时钟序列产生模块,在此将其Period参数设置为2,以此产生一个周期为2s的时钟信号。此外还需要将Scope模块的Number of axes参数设置为5,以显示时钟(Clock)信号、D0、D1、Q0(S-R模块Q端输出)、Q2(S-R模块Q端输出)的波形。

保存该模型后运行,双击Scope模块,可以看到二位并行寄存器的波形。时钟在高电平时,触发器输出维持在时钟下跳前的值,对于D0、D1输入的变化没有任何反应;而当时钟信号在低电平时,输入信号全部送到了输出端。

此外,对比两个输入信号D0、D1和2个输出信号Q0、Q1可以看出,2个触发器完全独立工作,互不影响,这是并行寄存器的特点。如果需要设计更多位的并行寄存器,只要添加相应格式的触发器及配套控制电路即可。 四、实验思考:

思考如何实现三位并行寄存器。 五、可用的MATLAB函数

Smulink模块: S-R Flip-Flop模块 NOR门

Clock时钟模块 Scope示波器模块 输入信号源D0、D1

实验五 IIR、FIR滤波器的设计

一、实验目的:应用交互式滤波器设计工具FDATool设计IIR、FIR滤波器 二、实验原理:

数字滤波器的设计是数字信号处理技术的又一个核心问题,除了众多的滤波器设计函数之外,Signal Processing Toolbox还提供一个带交互式界面的滤波器设计工具—FDATool。用户可以通过对话框的方式给出滤波器设计要求,然后使用FDATool对滤波器进行直接设计。对于设计完成的滤波器,在FDATool中可以对其进行分析,绘制幅频曲线、相位响应、零极点图等,并且将设计结果保存到工作空间中,同时,也可将其保存为mat文件、文本文件,或者直接生成C语言的头文件等。如果用户安装了Filter Design Toolbox,在FDATool中还可以考察滤波器量化对滤波器性能造成的影响;如果用户安装了DSP Blockset,则可以将设计出的滤波器通过Smulink中的模块加以仿真。

启动方式,有如下两种:

1)在“Command Window”窗口中键入命令: >>fdatool

2)单击FDATool功能选择按钮,将打开FDATool的滤波器设计分析界面(即启动后的默认界面)。

将启动滤波器设计工具FDATool,总体来说,这个工具应该是直观易用的,应该在掌握基础知识的基础上,配合帮助文档,才能很快的熟悉该工具。

FDATool工具的主界面如下所示:

图 5-1交互式信号处理工具—FDATool 三、实验内容及步骤: 实验内容:

1、利用模拟滤波器原型设计IIR滤波器

设计一模拟低通Butterworth滤波器,要求:

通带截止频率: fp =5000Hz 带内最大衰减:Rp =3dB 阻带截止频率: fs =10000Hz 带内最小衰减:Rs =30dB 采样频率为100000 Hz。

2、利用设计的滤波器进行信号滤波处理,同时观测滤波前后的信号频谱。 实验步骤:

1、打开FDATool的滤波器设计及分析界面,如上所示。

2、在滤波器设计参数指定区域中,将滤波器(Filter Type)设置为低通(Lowdpass);设计方法(Design Method)设置为IIR类中的Butterworth滤波器;滤波器阶数设置为最小阶(Minimum Order),这样FDATool会根据用户指定的具体指标设计一个具有最小阶的低通Butterworth滤波器。

3、指定所需设计的滤波器的截止频率(Frequency Specification)。首先,需要给出频率单位(Units),可以是模拟频率(包括Hz、kHz、MHz、GHz几种单位),采用这种方式给出频率指标需要给出采样频率(Fs);也可以采用归一化频率的方式来给出滤波器要求的

频率指标(这里采用第一种方式)。

4、最后,需要指定滤波器允许的通带和阻带波动,允许的波动值仍然以常用的dB的方式给出(Units);

5、在完成以上设置后,将在FDATool界面上的“Filter Specifications”区域以图形的方式清楚的显示出用户所要求的滤波器的理想频响的性状,每个设计指标也在图中进行了清楚的标注。

6、单击“Design Filter”按钮,MATLAB将自动按照设定的指标要求进行滤波器设计。设计完成后,原来界面上的“Filter Specifications”区域变成了一个名为“Magnitude Response”区域,其中绘出了设计出的滤波器的幅频响应曲线。

7、分析该Butterworth滤波器,包括滤波器阶数、幅频响应、相频响应(以上三项必做)、群延迟、冲激响应、阶跃响应、零极点图、滤波器传递函数的系数。如果用户需要了解滤波器响应图形中每一个点的情况,可以直接单击该点,系统会弹出一个小方框显示该点信息。在图形的任意位置单击鼠标右键,用户还可以改变分析参数设置(Analysis Parameters)或者采样频率设置(Sampling Frequency)。

更改滤波器的相应参数,如过渡带宽度、阻带最小衰减,观测滤波器阶数、幅频响应的变化。

8、将设计好的Butterworth滤波器实现-数字滤波器的实现 1)转换滤波器的实现结构

在实现滤波器之前,需要先考虑滤波器的实现结构。执行主菜单“Edit”/“Convert Structure”命令可以对滤波器实现结构进行转换,从而用户可以在弹出的窗口中选择滤波器实现结构转换到何种方式。

2)导出滤波器设计参数

执行主菜单“File”/“Export”命令,就可以将设计好的滤波器参数导出。 3)将设计好的滤波器实现为一个Smulink模块

如果用户已经安装了DSP Blockset,FDATool功能选择按钮中将出现一个功能选择按钮,单击该按钮后,FDATool界面下半方的滤波器设计参数指定区域将变为滤波器实现的参数指定区域,对各项参数进行设置后,即可以将设计好的滤波器实现为一个Simulink模块。

9、通过Simulink产生出两个正弦波的合成信号(频率分别为4KHz和13KHz),通过频谱分析仪分别观测滤波前后信号频谱的变化(频谱分析仪的参数设置参看教材P69)。

10、更改滤波器的设计参数(阻带最小衰减),重复步骤9,观测滤波后13KHz信号滤波器后频谱峰值的变化(该项为选做项目)。 四、实验思考:

尝试FDATool的其它功能,导入滤波器、滤波器量化、滤波器变换。对FDATool的功能基本熟悉。

实验六 通信系统设计

一、实验目的:

应用SIMULINK仿真技术,实现通信系统设计。在实际的系统设计中,系统往往为混合系统(系统中既有连续信号,又有离散信号)。 二、实验原理:

混合系统仿真技术的一般知识:

在对混合系统进行仿真分析时,必须考虑系统中连续信号与离散信号采样时间之间的匹配问题。Smulink中的变步长连续求解器充分考虑了上述问题。因此在对混合系统进行仿真分析时,应该使用变步长连续求解器。

由于混合系统中信号类型不一,使用同样的样式表示信号不利于用户对系统模型的理解。Smulink仿真环境提供的Sample time colors功能可以很好的将不同类型、不同采样时间的信号用不同的颜色表示出来,从而可以使用户对混合系统中的信号有清晰的了解。

用户只需选择Format菜单中的Sample time colors命令便可实现这一功能。其中黑色的信号表示连续信号,其它颜色的信号表示离散信号;并且不同的颜色表示采样时间的不同,其中红色的信号表示其采样速率时间最快,绿色次之,而黄色表示含多速率的系统或信号。

在实际的通信系统中,所有的信道都存在着不同程度的信道噪音,均使信道所传递的信号受到一定的损失。 三、实验内容及步骤:

1、通信系统的物理模型与数学描述:

1)通信系统的信源:

单位振幅值与单位频率的低频率锯齿波信号源。 2)通信系统的调制与解调:

通信系统的调制信号为正弦连续信号(幅值为1,频率为100Hz),解调信号为正弦离散信号(幅值为1,频率为100Hz,采样时间为0.005s),并且采用双边带抑制载波调制与解调。由于高频信号更容易受到噪音的干扰,而使信号出现较大的失真,故这里正弦信号的频率选择为100Hz,而非无损信道通信系统中所采用的1000Hz。

3)通信信道:

...?3(1)通信信道动态方程为10?9y?10y?

y?u,其中u为信道输入,y为信道输

出。显然,此信道为一线性信道,信道传递函数描述如下:

Y(s)U(s)?110?9s?102?3s?1(2)信道噪音:

信道受到服从高斯正态分布的随机加性噪音的干扰,噪音均值为0,方差为0.01。 (3)信道延迟:

信道经过缓冲区为1024的延迟

4)数字滤波器:数字滤波器的差分方程为:

y(n)-1.6y(n-1)+0.7y(n-2)=0.04u(n)+0.08u(n-1)+0.04u(n-2)

此数字滤波器为线性系统,使用滤波器形式对其进行描述如下:

Y(Z)U(Z)?0.04?0.08z1?1.6z?1?1?0.04z?2?2?0.7z

2、建立通信系统模型:

按照通信系统的物理与数学模型建立系统模型。在建立系统模型之前,首先给出建立系统模型所需要的系统模块,如下所述:

1)Sources模块库中的Sine Wave 模块:作为高频载波信号与解调信号。 2)Sources模块库中的Signal Generator模块:产生低频锯齿波信号。 3)Math 模块库中的Product模块:用于信号进行调制与解调。 4)Continuous模块库中Transfer Fcn模块:描述通信信道。 5)Sources 模块库中的Random Number模块:产生信道噪音。 6)Continuous模块库中的Transport Delay 模块:产生信道延迟。 7)Discrete模块库中的Discrete Filter模块:描述数字滤波器。 8)Subsystems模块库中的Subsystem模块:封装系统中不同部分。 9) Sinks模块库的Scope模块:显示输出。

然后建立系统模型,并将信号幅值调制、通信信道、幅值解调封装到单独的子系统中。 建议:在建立混合系统或复杂系统模型时,最好使用子系技术将实现不同功能的模块组进行封装,并对子系统进行简单的注释说明。这非常有利于用户对系统的理解与维护。

系统模块参数设置与仿真参数设置

在建立系统模型之后,需要按照系统的要求设置系统模块与仿真参数。 3、模块参数设置与仿真参数设置 1) 信号调制子系统参数

(1)正弦载波Sine Wave模块:频率Frequency为100Hz,幅值为1

(2)锯齿信号Signal Generator模块:波形Wave form为sawtooth(锯齿波) 2) 通信信道子系统参数

(1)随机信号Random Number模块:均值Mean为0,方差Variance为0.01。 (2)信道延迟Transfer Delay模块:初始缓冲区Initial buffer size 为1024。 (3)信道传递函数Transfer Fen模块:分子Numerator为[1],分母Denominator为[1e-9 1e-3]。 3) 信号解调子系统参数

正弦解调信号Sine Wave1模块:频率Frequency为100Hz,幅值为1,采样时间Sample time为0.005s。 4) 数字滤波器参数

数字滤波器Discrete Filter模块参数:分子Numerator为[0.04 0.08 0.04],分母Denominator为[1 -1.6 0.7]、采样时间Sample time为0.005s。 5) 系统仿真参数

(1)系统仿真时间:从0至10s。 (2)仿真求解器:变步长连续求解器。 (3)绝对误差:1e-6。 (4)最大仿真步长:0.01。 4 系统仿真与分析

在对系统模块参数与系统仿真参数设置后,接下来对系统进行仿真分析。为了对通信系统的整体性能有一个直观的认识,将系统仿真结果(即通信系统的输出信号)与原始的锯齿波信号(即通信系统所要传递的信号)进行比较。

四、实验思考:

分析实验结果,可以看到由于通信信道的延迟以及加性随机噪音的干扰,使得通信系统的输出信号比原始锯齿波信号的起始时间慢1s,而且存在一定的失真,但只要失真小于一定的阈值,便不会对锯齿波信号的使用造成太大的影响。 五、可用的MATLAB函数

进行自定义的Simulink模块封装,包括信号调制子系统、通信信道子系统、信号解调子系统。

本文来源:https://www.bwwdw.com/article/8hhg.html

Top