电子信息工程专业毕业论文--基于matlab的脉冲编码调制的仿真实现内容摘要:

状态的数值sys=mdlUpdate(t,x,u); case 3, %当 flag 等于 3 时调用 mdlOutdate 函数计算输出信号的数值 sys=mdlOutputs(t,x,u)。 case 4, %当 flag 等于 4 时调用 mdlGetTimeOfNextVarHit 函数计算下一个抽样时刻 sys=mdlGetTimeOfNextVarHit(t,x,u)。 case 9, %当 flag 等于 9 时调用 mdlTerminate 函数结束仿真 sys=mdlTerminate(t,x,u)。 otherwise %当 flag 等于其它数值时表示仿真过程出错 error([39。 Unhandled flag = 39。 ,num2str(flag)])。 end % end sfuntmp1 %===================================================================== 基于 MATLAB 的脉冲编码调制的仿真实现 % mdlInitializeSizes % S函数的初始化 %向 Simulink 返回 S函数各种信号的长度,初始设置和抽样时间设置 %===================================================================== function [sys,x0,str,ts]=mdlInitializeSizes %调用 simsizes 获得一个用于存放长度信息的结构 %1 表示动态确定的长度 sizes = simsizes。 %设置连续状态的个数 = 0。 %设置离散状态的个数 = 0。 %设置输出信号的个数 = 0; %设置输入信号的个数 = 0; %设置直接反馈的状态 % 0 表示没有直接反馈 % 1 表示存在直接反馈 = 0。 %设置抽样时间的个数(大于等于 1) = 1。 %通过 simsizes 把 sizes 结构返回给 sys sys = simsizes(sizes)。 %设置 S函数的初始状态 x0 x0 =[0]。 %设置 S函数的保留参数 str(应该设置为空向量 []) str = []; 基于 MATLAB 的脉冲编码调制的仿真实现 %初始化抽样时间 ts = [0 0]。 % end mdlInitializeSizes %===================================================================== %mdlDerivatives %计算 S函数连续状态的导数,返回给 Simulink 进行积分计算 %===================================================================== function sys=mdlDerivatives(t,x,u) %计算 S函数连续昨天的导数并且通过 sys 参数返回给 Simulink sys=[]。 %end mdlDerivatives %===================================================================== % mdlUpdate %更新 S函数的离散状态并且向 Simulink 返回这些状态的数值 %===================================================================== %function sys=mdlUpdate(t,x,u) %计算 S函数的离散状态并且通过 sys 参数返回给 Simulink sys=[]。 % end mdlUpdate %===================================================================== % mdlOutputs %计算 S函数的输出信号并且返回给 Simulink 作为模块的参数 %===================================================================== function sys=mdlOutputs(t,x,u) 基于 MATLAB 的脉冲编码调制的仿真实现 %计算 S函数的输出信号 并且通过 sys 参数返回给 Simulink sys=[]。 % end mdlOutputs %===================================================================== %mdlGetTimeOfVarHit %计算 S函数的下一个抽样时刻并且返回给 Simulink %本函数只用于可变步长离散时间仿真且在初始化过程中把 ts 设置为 [2 0] %===================================================================== function sys= mdlGetTimeOfNextVarHit(t,x,u) %一个设置下一个抽样时刻的示例 %下一个抽样时刻设置为与当前时刻相差 1 秒 sampleTime=1。 sys=t + sampleTime。 %end mdlGetTimeOfNextVarHit %===================================================================== %mdlTerminate %在仿真结束时执 行清理工作,如回收内存等 %===================================================================== function sys=mdlTerminate(t,x,u) %设置返回参数 sys 为空矩阵 [] sys=[]。 %end mdlTerminate 基于 MATLAB 的脉冲编码调制的仿真实现 第 3 章 脉冲编码仿真 脉冲编码调制( PCM)就是用脉冲码组代表模拟调制信号的采样值,是把模拟信号转换为数字信号的一种脉冲数字调制方式 [3]。 PCM 的原理是 由抽样、量化和 编码三个步骤构成。 它的功能是完成模 数转换,实现连续消息数字化 [4]。 其原理图 如图 所示 [5]: 图 PCM 原理图 模拟信号抽样的仿真 抽样是模拟信号数字化过程的第一步,经过抽样后的信号是时间离散且时间间隔相等的信号,量化和编码都是在它的基础上进行的。 在数字通信中,不仅要把模拟信号变成数字信号进行传输,而且在接收端还要将它还原成模拟信号,还原的信号应该与发送端的信号尽可能相同。 因此,任何情况下抽样都应该满足抽样定理。 即,一个频带限制在( 0, fH)赫内的时间连续信号f(t),如果 Hs ff 2 以秒的间隔对它进行等间隔抽样,则 f(t)将被所得到的抽样值 完全确定 [5]。 抽样系统图如图 所示: f(t) 抽样 量化 编码 信道 噪声 译码 低通 滤波 f(t) 基于 MATLAB 的脉冲编码调制的仿真实现 图 抽样系统 为了观察方便,信源部分由 Source 模块库中的正弦波模块( Sine Wave)来代替实际过程中的模拟信号。 其参数设置如图 所示: 图 Sine Wave 模块参数设置 基于 MATLAB 的脉冲编码调制的仿真实现 抽样过程是用 M 文件- S 函数实现的,实质上是在每一个离散时间点上将输 入的连续信号的相关值输出,并有一个时间的延续(其源程序“ ”见附录)。 此程序中抽样时间为。 调用 S函数的方法是把 SFunction 模块的对话框打开,将名称为 的文件放入 SFunction name 中即可,如图 所示: 图 SFunction 模块对话框 为了观察抽样效果,就要把抽样信号通过一个低通滤波器( LPF)还原出来,与原波形进行比较 ,LPF 的参数设置如图 所示 ; 通过示波器观察抽样结果,如图 所示: 基于 MATLAB 的脉冲编码调制的仿真实现 图 Analog Filter Design 的对话框 图 示波器 由图 的还原信号的波形和原始信号的波形可以看出,抽样信号基本上可以无失真的被还原。 基于 MATLAB 的脉冲编码调制的仿真实现 窄脉冲采样的仿真 在实际过程中,通常只能采用窄脉冲串来实现对信号的采样。 低通信号的窄脉冲采样又称平顶采样,它与理想采样所不同的就是,采样脉冲 k( t)是周期窄脉冲序列,它可以表示为:   k )()(k skTtgt () 其中 g(t)是宽为 τ,高为 1 的矩形脉冲 [6]。 根据抽样定理对窄脉冲进行仿真分析,如图 所示,为窄脉冲采样仿真系统结构框图,它实现的。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。