MATLAB/Simulink在通信系统中的应用数字通信系统建模仿真掌握数字通信系统的基本模型掌握各部分的建模仿真(采样、量化、编码、调制等)在MATLAB的CommunicationToolbox(通信工具箱)中提供了许多仿真函数和模块,用于对通信系统进行仿真和分析。主要包括两部分内容:通信函数命令和Simulink的CommunicationsBlockset(通信模块集)仿真模块。用户既可以在MATLAB的工作空间中直接调用工具箱中的函数,也可以使用Simulink平台构造自己的仿真模块,以达到扩充工具箱的内容。通信工具箱中的函数名称和内容列表,其内容包含:SignalSources(信号源函数);SignalAnalysisfunction(信号分析函数);SourceCoding(信源编码);ErrorControlCoding(差错控制编码函数);LowerLevelFunctionforErrorControlCoding(差错控制编码的底层函数);Modulation/Demodulation(调制/解调函数)SpecialFilters(特殊滤波器设计函数);LowerLevelFunctionforSpecialsFilters(设计特殊滤波器的底层函数);ChannelFunctions(信道函数);GalosiFieldComputation(有限域估计函数);Utilities(实用工具函数)。Simulink工作平台启动Simulink,通常有两种方法:(1)在MATLAB命令窗口中直接输入Simulink命令;(2)在MATLAB工具栏上单击Simulink按钮,如图7.1所示。图7.1启动Simulink这样就可打开了Simulink的SimulinkLibraryBrower(库模块浏览器),如图7.2所示。在菜单栏中执行File/New/Model命令,就建立了一个名为untitled的模型窗口,如图7.3所示。在建立了空的模块窗口后,用户可以在此窗口中创建自己需要的Simulink模型。图7.2库模块浏览器图7.3新建的空白模块窗口仿真模型的建立与模块参数与属性的设置1.仿真模块的建立首先启动Simulink命令,建立一个空的模块窗口“untitled”,然后利用Simulink提供的模块库,在此窗口中创建自己需要的Simulink模型。具体方法:在模块库浏览器中找到所需模块,选中该模块后右击鼠标,把它加入到一个模型窗口中即可完成模块的建立。图7.14添加模块2.模块参数与属性的设置方法:在所建立的模型窗口中,选中相应的模块,单击右击鼠标,在弹出的快捷菜单中单击“Blockparameters”选项(如图7.15所示),即可打开该模块的参数设置对话框,如图7.16(a)所示。右击鼠标,在弹出的快捷菜单中单击“BlockProperties”选项,即可打开该模块的属性设置对话框,如图7.16(b)所示。图7.15Blockparamenters选项3.模块的连接一般情况下,每个模块都有一个或者多个输入口或者输出口。输入口通常是模块的左边的“”符号;输出口是右边的“”符号。模块的连接方法:把鼠标指针放到模块的输出口,这时,鼠标指针将变为“+”十字形;然后,拖运鼠标至其它模块的输入口,这时信号线就变成了带有方向箭头的线段。此时,说明这两个模块的连接成功,否则需要重新进行连接。4.运行仿真在运行仿真之前,首先保存已设置和连接的模型,然后就可以运行仿真。Simulink应用模块集通信模块集(CommunicationsBlockset)图7.31通信模块集中的模块库数字通信系统的基本模型信源调制器信道解调器噪声和干扰源信源解码器信道编码器信道解码器信宿信源编码器一、模拟信号数字化(取样、量化、编码)(1)取样保证不失真传输的最小代价——取样定理。(复习取样定理)取样定理:如果对某一带宽有限的时间连续信号(模拟信号)进行采样,且采样速率达到两倍以上的最高工作频率,那么根据这些抽样值就能还原出原始信号。例1将一个连续的正弦信号转换为离散样值信号。(2)量化及编码产生量化索引和量化输出值的函数quantiz()格式1:indx=quantiz(sig,partition)功能:根据判断向量partition,对输入信号sig产生量化索引indx,indx的长度与sig矢量的长度相同。例2:partition=[3,4,5,6,7,8,9];index=quantiz([298],partition)index=065例3:partition=[0,1,3];%量化区间codebook=[-1,0.5,2,3];%输入值落到每个量化区间时所取的量化值sig=[-2.4,-1,.2,1.2,2.9,3,3.5,5];%输入值[index,quants]=quantiz(sig,partition,codebook);indexindex=00122233quantsquants=-1.0000-1.00000.50002.00002.00002.00003.00003.0000格式2:[index,quants]=quantiz(sig,partition,codebook)Index仍为量化索引,quants为量化索引所对应的每个量化后的值例3用simulink实现例4对8位A/D、D/A转换器进行仿真,转换值范围为0~255,转换采样率为1次/s。Simulink通信模块中的“Scalarquantizer”实现(3)PCM编码及解码非均匀量化:在小信号时采用较小的量化间隔,在大信号时用大的量化间隔。中国和欧洲的PCM数字电话系统采用A律压扩方式。编码时,每个养殖为8位二进制码表示。其中最高比特位表示样值得正负极性,接下来的3位比特表示样值得绝对值所在的8段折线的段落号,最后四位是样值处于段落内16个均匀间隔上的间隔序号。例5设计13折线近似的PCM编码器模型,使它能够取值在[-1,1]内的归一化信号样值进行编码。例6设计一个对应于例3编码器的解码器。二、基带传输码型设计掌握以下概念:二电平码、三电平码、多电平码归零码,不归零码双极性码,单极性码单极性不归零码的matlab实现functiony=snrz(x)t0=300;t=0:1/t0:length(x);fori=1:length(x)if(x(i)==1)forj=1:t0y((i-1)*t0+j)=1;endelseforj=1:t0y((i-1)*t0+j)=0;endendendy=[y,x(i)];subplot(2,1,1)plot(t,y);gridon;axis([0,i,-0.2,1.2]);t=[10011];snrz(t)双极性归零码的matlab实现functiony=drz(x)t0=300;t=0:1/t0:length(x);fori=1:length(x)if(x(i)==1)forj=1:t0/2y(t0/2*(2*i-2)+j)=1;y(t0/2*(2*i-1)+j)=0;endelseforj=1:t0/2y(t0/2*(2*i-2)+j)=-1;y(t0/2*(2*i-1)+j)=0;endendendy=[y,x(i)];subplot(2,1,1)plot(t,y);gridon;axis([0,i,-1.2,1.2]);t=[10001011001];drz(t)例7仿真得出单极性不归零码、双极性归零码和单极性归零码。simulink实现三、数字带通系统的调制与解调ASKFSKPSKDPSK2ASKBernoulliBinaryGenerator模块贝努力二进制序列产生器,用来产生调制二进制信号.要设置的参数两个,一个是Probabilityofazero即二进制中”0”产生的概率,设置成0.5;另一个是Sampletime即每秒发送多少个脉冲,这里设置成1,即一秒发送1个脉冲。2FSK2DPSKReal-ImagtoComplex把两个数据合成一个复数,即两个数据分别作为实部与虚部