信号处理仿真及应用实验指导书最新.docx
《信号处理仿真及应用实验指导书最新.docx》由会员分享,可在线阅读,更多相关《信号处理仿真及应用实验指导书最新.docx(15页珍藏版)》请在冰豆网上搜索。
信号处理仿真及应用实验指导书最新
信号处理仿真及应用实验指导书
实验一电路的建模与仿真
——MATLAB程序设计
一、实验目的:
1、熟悉MATLAB命令和编辑、运行、调试环境;
2、编写M文件,实现电路仿真。
二、实验原理与方法:
仿真RLC电路的响应,要求运用电路分析知识编写M文件,计算电流,并绘制出图形。
二、实验内容及步骤:
方法一:
采用函数文件形式进行仿真(参考教材P18例子)
1、如下图所示电路的初始能量为零,t=0时刻,将一个25mA的直流源作用到电路上,其中电容C=0.1F,电感L=1H,电阻R=4
,画出图中电感L支路上电流iL的图形。
列写出关于电感L支路上电流iL的微分方程
2、根据建模分析
3、进行MATLAB仿真建立M文件,运行求解微分方程
4、绘制电感支路电流图形
方法二、采用MATLAB函数dsolve进行仿真
1、运用电路分析知识建立电路模型
如上图所示电路的初始能量为零,t=0时刻,将一个25mA的直流源作用到电路上,其中电容C=25nF,电感L=25mH,电阻R=400
(注意该参数与前面的参数不同)。
列写出关于电感L支路上电流iL的微分方程
因为电路初始能量为0,而且电感上的电流不能突变,所以在开关打开瞬间电感上的电流
电感上的电压
又
所以:
(1)
根据电路图及基尔霍夫电流定律可得:
(2)
其中,
的表达式分别如下:
,
(3)
在上式中,
为电阻
两端电压,同时也就是电容两端电压,又有如下式关系:
(4)
将(3)式与(4)式依次代入
(2)式,可得如下表达式:
2、进行MATLAB仿真建立M文件,运行求解微分方程
desolve:
求解微分方程符号的一般指令,其通用格式为:
其中,eq1,eq2,…分别代表按序排列的不同微分方程,cond1、cond2分别代表微分方程式的初始条件,v代表微分方程中的独立变量(其默认独立变量为t)。
此外指令中用到字母D,代表与独立变量有关的微分,例如:
DiL代表式子:
;如D后面跟有数字n,则代表进行n次微分,没有则为默认的一次微分。
3、绘制电感支路电流图形
ezplot:
作图指令,专门用于函数作图,通用格式为:
其中,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的仿真模型文件,需要选用以下模块并设置其参数
VCVoltageSource模块:
位于SimPowerSystems节点下的ElectricalSources模块库内,代表一个理想交流电压源
ACCurrentSource模块:
位于SimPowerSystems节点下的ElectricalSources模块库内,代表一个理想交流电压源。
VoltageMeasurement模块:
位于SimPowerSystems节点下的Measurements模块库内,用于测量所在支路的电压值。
Scope模块:
位于Simulink节点下的Sink模块库内,用于显示输出图形,功能相当于一个示波器。
SeriesRLCBranch模块:
基本电路
为了观察运行仿真后的输出结果,还应将模型编辑窗口菜单栏中“Simulation/SimulationParameters…项”的“Solver选项卡”中所含的“Starttime参数”设置为0,“Stoptime参数”设置为20,这样可以使得仿真时间从0s到20s
此外还需要双击“Scope”模块图标,在弹出的“示波器”显示图框中单击parameters图标,将打开的对话框“Datahistory”页中的“Limitdatapointstolast”选中,将其参数改为50000。
这是为了“示波器”保存足够的显示数据。
应注意的是该参数值的设置越大所占用的内存越大,会影响到仿真的速度,所以选择参数时应适当,够用即可。
上述工作进行完毕后,运行该模型,得到Scope的输出图形。
四、实验思考:
Simulink仿真的直观性
五、可用的MATLAB函数
实验三组合逻辑电路仿真
一、实验目的:
应用SIMULINK实现编、移码器和加法器的仿真。
二、实验原理:
组合逻辑电路是相对于时序逻辑电路而言的,组合逻辑电路在结构上由各种逻辑门构成,它不包含记忆功能器件,其一般结构框图如下所示:
组合逻辑电路的特点是,在任何给定时刻的输出值仅与该时刻电路的输入值有关,而与过去的输入状态无关。
目前,常用的组合电路有半加器、全加器、比较器、编码器、译码器、数据选择器、数据分配器、奇偶校验器等。
编码器是指用选定的一组0、1序列来标识特定对象的过程,执行编码功能的电路称为编码器,结构框图如图所示:
设编码器有n个输入端
,有m个输出端
。
为了不使输出发生混乱而产生错误,规定在任何给定时间内,n个输入端中只有一个输入出现,其余n-1个输入均不得出现。
为使输入与输出建立一一对应的关系,即一个被编码的对象具有一个特定的代码,输出的位数应满足:
(该式中,m应取满足该式的最大整数)
数字系统是以二进制进行运算的,所以常常需要将用的十进制表示法与二进制表示法相互进行转换,编码器就起到了十分关键的作用。
三、实验内容及步骤:
利用SIMULINK模块进行一个3位二进制编码器的仿真。
1、系统分析
3位二进制编码器,8/3线二进制编码器,其输入端有8个,输出端有3个。
真值表如下图所示:
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
1
0
1
0
0
0
0
0
0
1
0
0
1
1
0
0
0
0
0
0
0
1
1
1
1
根据真值表可以直接写出逻辑表达式:
2、模型搭建
首先建立一个名为sy03.mdl的文件,根据以上分析结果,可知需要选用以下模块:
*PulseGenerator(脉冲序列发生器)模块:
位于Simulink节点下的Source库中,用于产生所需的原始脉冲脉冲序列。
复制8个PulseGenerator模块进入sy03.mdl文件中,将它们分别命名为
。
分别双击各个模块,对其参数进行调整。
在PulseGenerator打开的的参数对话框界面中进行相应的设置,在Pulsetype选项中有Timebased(默认选项)和Samplebased两项。
如果选中Timebased项,模块按照时间参数输出脉冲序列;
如果选中Samplebased项,模块将根据设定的采样频率及其他相关参数输出序列。
在此选择Samplebased项。
对“BlockParameters”对话框进行设置:
“Amplitude”文本框:
用于设定调整脉冲输出幅度;
“Period(numberofsamples)”文本框:
用于设定按照采样时间长度确定产生的脉冲序列周期;
“Pulsewidth(numberofsamples)”文本框:
用于设定按照采样时间长度确定产生的脉冲序列周期;
“Phasedelay(numberofsamples)”文本框:
用于设定每一个脉冲持续的时间长短(即电平为1的时间,以采样时间为单位);
“Sampletime’文本框:
该文本框用于确定采样时间,单位是s(秒);
*LogicalOperator(逻辑操作)模块
位于Simulink节点下的MathOperations模块库中,用于实现逻辑表达式的运算
LogicalOperator模块参数调整
*Scope(示波器)模块
位于Simulink节点下的Sinks模块库中,本例用到3个示波器。
设置示波器参数后单击Scope模块,可以看到Z2,Z1,Z0的输出波形。
四、实验思考:
本次实验利用Simulink已有模块完成数字电路的编码器仿真,应该注意LogicalOperator模块和PulseGenerator模块等数字电路仿真常用模块的参数调整方法,以及它们如何相互搭配使用。
五、可用的MATLAB函数
实验四时序逻辑电路仿真
一、实验目的:
应用SIMULINK实现时序逻辑电路的仿真
二、实验原理:
时序逻辑电路与组合逻辑电路最大的区别在于,研究时刻的输出不仅取决于研究时刻的输入,而且还依赖于研究时刻以前的输入。
因此,从电路结构来看,时序电路一定要包含存储器件,它的作用就是用来“记忆”研究时刻以前的输入情况。
基本触发器:
在MATLAB的Simulink中有专门的触发器模块,它们都位于SimulinkExtras节点下的FlipFlop模块库中。
有RS触发器,JK触发器,D触发器等模块。
寄存器用于存储一组二进制代码,它被广泛应用于各类数字系统和数字计算机中。
一个基本RS触发器可以用于寄存1位二进码信息,而将n个基本RS触发器连接在一起,就可以构成一个n位二进制并行寄存器。
所谓并行寄存器就是能够同时存储几个数据源的寄存器。
我们在Simulink中利用RS触发器(即S-RFlip-Flop模块)搭建并行寄存器。
并行寄存器由两大部分组成,触发器和控制电路。
触发器选用两个S-RFlip-Flop模块,而控制电路主要由门电路构成。
仿真时序逻辑电路
三、实验内容及步骤:
:
首先新建一个Simulink模型文件,将其命名为sy04.mdl。
拷贝2个S-RFlip-Flop模块到所建的文件中,以此搭建并行寄存器模型的触发器。
分别将这2个S-RFlip-Flop模块的参数Initialcondition(stateofQ)均设置为0。
对RS触发器模块的分析,当S、R端同时等于1时,S-RFlip-Flop模块处于无效的状态,因此必须利用控制电路对S、R端的输入信号进行进行控制,以防止无效状态的出现。
此外,在输入电路中还必须添加时钟电路控制,以使寄存器发挥作用。
分析该电路:
当Clock信号输入为1时,输入端的输入信号并不起作用,此时连接S端和连接R端的输出都是0,因此S-RFlip-Flop保持前一时刻的状态;当Clock信号输入为0时,连接S端和连接R端的输出信号都取决于输入端的输入信号;而对于禁止状态,即对S-RFlip-Flop模块的R、S端均输出是1,是不可能由该控制电路产生的。
根据以上分析,以下控制电路完全能满足搭建并行寄存器对控制电路功能的需要,由此搭建二位并行寄存器Simulink模型图
根据以上电路图建立二位并行寄存器SIMULINK电路模型,注意其参数设置,输入信号源为PulseGenerator模块,它们的参数设置如表所示:
模块名称
Pulsetype
Amplitude
Period
Pulsewidth
Phasedelay
Sampletime
D0
Samplebased
1
3
1
0
1
D1
Samplebased
1
3
1
0
0.25
其目的只是为了产生2个不同的输入信号,从而对2位并行寄存器不同寄存位进行比较,Clock模块是时钟序列产生模块,在此将其Period参数设置为2,以此产生一个周期为2s的时钟信号。
此外还需要将Scope模块的Numberofaxes参数设置为5,以显示时钟(Clock)信号、D0、D1、Q0(S-R模块Q端输出)、Q2(S-R模块Q端输出)的波形。
保存该模型后运行,双击Scope模块,可以看到二位并行寄存器的波形。
时钟在高电平时,触发器输出维持在时钟下跳前的值,对于D0、D1输入的变化没有任何反应;而当时钟信号在低电平时,输入信号全部送到了输出端。
此外,对比两个输入信号D0、D1和2个输出信号Q0、Q1可以看出,2个触发器完全独立工作,互不影响,这是并行寄存器的特点。
如果需要设计更多位的并行寄存器,只要添加相应格式的触发器及配套控制电路即可。
四、实验思考:
思考如何实现三位并行寄存器。
五、可用的MATLAB函数
Smulink模块:
S-RFlip-Flop模块
NOR门
Clock时钟模块
Scope示波器模块
输入信号源D0、D1
实验五IIR、FIR滤波器的设计
一、实验目的:
应用交互式滤波器设计工具FDATool设计IIR、FIR滤波器
二、实验原理:
数字滤波器的设计是数字信号处理技术的又一个核心问题,除了众多的滤波器设计函数之外,SignalProcessingToolbox还提供一个带交互式界面的滤波器设计工具—FDATool。
用户可以通过对话框的方式给出滤波器设计要求,然后使用FDATool对滤波器进行直接设计。
对于设计完成的滤波器,在FDATool中可以对其进行分析,绘制幅频曲线、相位响应、零极点图等,并且将设计结果保存到工作空间中,同时,也可将其保存为mat文件、文本文件,或者直接生成C语言的头文件等。
如果用户安装了FilterDesignToolbox,在FDATool中还可以考察滤波器量化对滤波器性能造成的影响;如果用户安装了DSPBlockset,则可以将设计出的滤波器通过Smulink中的模块加以仿真。
启动方式,有如下两种:
1)在“CommandWindow”窗口中键入命令:
>>fdatool
2)单击FDATool功能选择按钮,将打开FDATool的滤波器设计分析界面(即启动后的默认界面)。
将启动滤波器设计工具FDATool,总体来说,这个工具应该是直观易用的,应该在掌握基础知识的基础上,配合帮助文档,才能很快的熟悉该工具。
FDATool工具的主界面如下所示:
图5-1交互式信号处理工具—FDATool
三、实验内容及步骤:
实验内容:
1、利用模拟滤波器原型设计IIR滤波器
设计一模拟低通Butterworth滤波器,要求:
通带截止频率:
fp=5000Hz带内最大衰减:
Rp=3dB
阻带截止频率:
fs=10000Hz带内最小衰减:
Rs=30dB
采样频率为100000Hz。
2、利用设计的滤波器进行信号滤波处理,同时观测滤波前后的信号频谱。
实验步骤:
1、打开FDATool的滤波器设计及分析界面,如上所示。
2、在滤波器设计参数指定区域中,将滤波器(FilterType)设置为低通(Lowdpass);设计方法(DesignMethod)设置为IIR类中的Butterworth滤波器;滤波器阶数设置为最小阶(MinimumOrder),这样FDATool会根据用户指定的具体指标设计一个具有最小阶的低通Butterworth滤波器。
3、指定所需设计的滤波器的截止频率(FrequencySpecification)。
首先,需要给出频率单位(Units),可以是模拟频率(包括Hz、kHz、MHz、GHz几种单位),采用这种方式给出频率指标需要给出采样频率(Fs);也可以采用归一化频率的方式来给出滤波器要求的频率指标(这里采用第一种方式)。
4、最后,需要指定滤波器允许的通带和阻带波动,允许的波动值仍然以常用的dB的方式给出(Units);
5、在完成以上设置后,将在FDATool界面上的“FilterSpecifications”区域以图形的方式清楚的显示出用户所要求的滤波器的理想频响的性状,每个设计指标也在图中进行了清楚的标注。
6、单击“DesignFilter”按钮,MATLAB将自动按照设定的指标要求进行滤波器设计。
设计完成后,原来界面上的“FilterSpecifications”区域变成了一个名为“MagnitudeResponse”区域,其中绘出了设计出的滤波器的幅频响应曲线。
7、分析该Butterworth滤波器,包括滤波器阶数、幅频响应、相频响应(以上三项必做)、群延迟、冲激响应、阶跃响应、零极点图、滤波器传递函数的系数。
如果用户需要了解滤波器响应图形中每一个点的情况,可以直接单击该点,系统会弹出一个小方框显示该点信息。
在图形的任意位置单击鼠标右键,用户还可以改变分析参数设置(AnalysisParameters)或者采样频率设置(SamplingFrequency)。
更改滤波器的相应参数,如过渡带宽度、阻带最小衰减,观测滤波器阶数、幅频响应的变化。
8、将设计好的Butterworth滤波器实现-数字滤波器的实现
1)转换滤波器的实现结构
在实现滤波器之前,需要先考虑滤波器的实现结构。
执行主菜单“Edit”/“ConvertStructure”命令可以对滤波器实现结构进行转换,从而用户可以在弹出的窗口中选择滤波器实现结构转换到何种方式。
2)导出滤波器设计参数
执行主菜单“File”/“Export”命令,就可以将设计好的滤波器参数导出。
3)将设计好的滤波器实现为一个Smulink模块
如果用户已经安装了DSPBlockset,FDATool功能选择按钮中将出现一个功能选择按钮,单击该按钮后,FDATool界面下半方的滤波器设计参数指定区域将变为滤波器实现的参数指定区域,对各项参数进行设置后,即可以将设计好的滤波器实现为一个Simulink模块。
9、通过Simulink产生出两个正弦波的合成信号(频率分别为4KHz和13KHz),通过频谱分析仪分别观测滤波前后信号频谱的变化(频谱分析仪的参数设置参看教材P69)。
10、更改滤波器的设计参数(阻带最小衰减),重复步骤9,观测滤波后13KHz信号滤波器后频谱峰值的变化(该项为选做项目)。
四、实验思考:
尝试FDATool的其它功能,导入滤波器、滤波器量化、滤波器变换。
对FDATool的功能基本熟悉。
实验六通信系统设计
一、实验目的:
应用SIMULINK仿真技术,实现通信系统设计。
在实际的系统设计中,系统往往为混合系统(系统中既有连续信号,又有离散信号)。
二、实验原理:
混合系统仿真技术的一般知识:
在对混合系统进行仿真分析时,必须考虑系统中连续信号与离散信号采样时间之间的匹配问题。
Smulink中的变步长连续求解器充分考虑了上述问题。
因此在对混合系统进行仿真分析时,应该使用变步长连续求解器。
由于混合系统中信号类型不一,使用同样的样式表示信号不利于用户对系统模型的理解。
Smulink仿真环境提供的Sampletimecolors功能可以很好的将不同类型、不同采样时间的信号用不同的颜色表示出来,从而可以使用户对混合系统中的信号有清晰的了解。
用户只需选择Format菜单中的Sampletimecolors命令便可实现这一功能。
其中黑色的信号表示连续信号,其它颜色的信号表示离散信号;并且不同的颜色表示采样时间的不同,其中红色的信号表示其采样速率时间最快,绿色次之,而黄色表示含多速率的系统或信号。
在实际的通信系统中,所有的信道都存在着不同程度的信道噪音,均使信道所传递的信号受到一定的损失。
三、实验内容及步骤:
1、通信系统的物理模型与数学描述:
1)通信系统的信源:
单位振幅值与单位频率的低频率锯齿波信号源。
2)通信系统的调制与解调:
通信系统的调制信号为正弦连续信号(幅值为1,频率为100Hz),解调信号为正弦离散信号(幅值为1,频率为100Hz,采样时间为0.005s),并且采用双边带抑制载波调制与解调。
由于高频信号更容易受到噪音的干扰,而使信号出现较大的失真,故这里正弦信号的频率选择为100Hz,而非无损信道通信系统中所采用的1000Hz。
3)通信信道:
(1)通信信道动态方程为
,其中u为信道输入,y为信道输出。
显然,此信道为一线性信道,信道传递函数描述如下:
(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)
此数字滤波器为线性系统,使用滤波器形式对其进行描述如下:
2、建立通信系统模型:
按照通信系统的物理与数学模型建立系统模型。
在建立系统模型之前,首先给出建立系统模型所需要的系统模块,如下所述:
1)Sources模块库中的SineWave模块:
作为高频载波信号与解调信号。
2)Sources模块库中的SignalGenerator模块:
产生低频锯齿波信号。
3)Math模块库中的Product模块:
用于信号进行调制与解调。
4)Continuous模块库中TransferFcn模块:
描述通信信道。
5)Sources模块库中的RandomNumber模块:
产生信道噪音。
6)Continuous模块库中的TransportDelay模块:
产生信道延迟。
7)Discrete模块库中的DiscreteFilter模块:
描述数字滤波器。
8)Subsystems模块库中的Subsystem模块:
封装系统中不同部分。
9)Sinks模块库的Scope模块:
显示输出。
然后建立系统模型,并将信号幅值调制、通信信道、幅值解调封装到单独的子系统中。
建议:
在建立混合系统或复杂系统模型时,最好使用子系技术将实现不同功能的模块组进行封装,并对子系统进行简单的注释说明。
这非常有利于用户对系统的理解与维护。
系统模块参数设置与仿真参数设置
在建立系统模型之后,需要按照系统的要求设置系统模块与仿真参数。
3、模块参数设置与仿真参数设置
1)信号调制子系统参数
(1)正弦载波SineWave模块:
频率Frequency为100Hz,幅值为1
(2)锯齿信号SignalGenerator模块:
波形Waveform为sawtooth(锯齿波)
2)通信信道子系统参数
(1)随机信号RandomNumber模块:
均值Mean为0,方差Variance为0.01。
(2)信道延迟TransferDelay模块:
初始缓冲区Initialbuffersize为1024。
(3)信道传递函数TransferFen模块:
分子Numerator为[1],分母Denominator为[1e-91e-3]。
3)信号解调子系统参数
正弦解调信号SineWave1模块:
频率Frequency为100Hz,幅值为1,采样时间Sampletime为0.005s。
4)数字滤波器参数
数字滤波器Di