为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 通信原理MATLAB仿真

通信原理MATLAB仿真

2018-11-18 3页 doc 275KB 3阅读

用户头像

is_997338

暂无简介

举报
通信原理MATLAB仿真小学期报告实习题目通信原理Matlab仿真专业通信与信息工程班级学号学生姓名实习成绩指导教师2010年通信原理Matlab仿真目录TOC\o"1-5"\h\z一、实验目的-2二、实验题目--2HYPERLINK\l"bookmark2"\o"CurrentDocument"三、正弦信号波形及频谱仿真2HYPERLINK\l"bookmark22"\o"CurrentDocument"(一)通信原理知识2HYPERLINK\l"bookmark24"\o"CurrentDocument"(二)仿真原理及思路2...
通信原理MATLAB仿真
实习题目通信原理Matlab仿真专业通信与信息工程班级学号学生姓名实习成绩指导教师2010年通信原理Matlab仿真目录TOC\o"1-5"\h\z一、实验目的-2二、实验题目--2HYPERLINK\l"bookmark2"\o"CurrentDocument"三、正弦信号波形及频谱仿真2HYPERLINK\l"bookmark22"\o"CurrentDocument"(一)通信原理知识2HYPERLINK\l"bookmark24"\o"CurrentDocument"(二)仿真原理及思路2HYPERLINK\l"bookmark26"\o"CurrentDocument"(三)程序流程图3HYPERLINK\l"bookmark40"\o"CurrentDocument"(四)仿真程序及运行结果--3HYPERLINK\l"bookmark30"\o"CurrentDocument"(五)实验结果--5HYPERLINK\l"bookmark32"\o"CurrentDocument"四、单极性归零波形及其功率谱密度仿真5HYPERLINK\l"bookmark34"\o"CurrentDocument"(一)通信原理知识6HYPERLINK\l"bookmark36"\o"CurrentDocument"(二)仿真原理及思路6(三)程序流程图-6HYPERLINK\l"bookmark4"\o"CurrentDocument"(四)仿真程序及运行结果6(五)实验结果分析--6HYPERLINK\l"bookmark46"\o"CurrentDocument"五、升余弦滚降波形的眼图及功率谱密度仿真8HYPERLINK\l"bookmark48"\o"CurrentDocument"(一)通信原理知识8HYPERLINK\l"bookmark50"\o"CurrentDocument"(二)仿真原理及思路9(三)程序流程图-9HYPERLINK\l"bookmark52"\o"CurrentDocument"(四)仿真程序及运行结果--10(五)实验结果分析--11HYPERLINK\l"bookmark60"\o"CurrentDocument"六、PCM编码及解码仿真12HYPERLINK\l"bookmark62"\o"CurrentDocument"(一)通信原理知识---12HYPERLINK\l"bookmark66"\o"CurrentDocument"(二)仿真原理及思路13(三)程序流程图-14HYPERLINK\l"bookmark74"\o"CurrentDocument"(四)仿真程序及运行结果--15(五)实验结果分析--18七、实验心得-18、实验目的1、学会MATLAB软件的最基本运用。MATLAB是一种很实用的数学软件,它易学易用MATLAB对于许多的通信仿真类问题来说是很合适的。2、了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。3、加深对通信原理课有关内容的理解。.实验要求正弦信号波形及频谱的仿真;单极性归零(RZ)波形及其功率谱,占空比为50%的仿真;升余弦滚降波形的眼图及其功率谱的仿真。滚降系数为0.5。发送码取值为0、2;PCM编码及解码的仿真。.正弦信号波形及频谱仿真一)通信原理知识傅里叶变换达式:ftF傅里叶变换:Fftejtdt1傅里叶逆变换:f(t)1F()ejtd2正弦信号傅里叶变换:Sin(2f0t)jff0ff0(二)仿真原理及思路MATLAB中关于傅里叶变换的有关函数,利用MATLAB提供的函数编写两个函数t2f及f2t。t2f的功能是作傅氏变换,f2t的功能是作傅氏反变换,它们的引用格式分别为X=t2f(x)及x=f2t(X),其中x是时域信号x(t)截短并采样所得的取样值矢量,X是对x(t)的傅氏变换X(f)截短并采样所得的取样值矢量。程序流程图xlabel('f(kHZ)');ylabel('S(f)(V/kHZ)');仿真程序及运行结果主程序:sinx.mglobaldtdfNtfT%全局变量closeallk=input('取样点数=2^k,k=[10]');ifk==[],k=10;endN=2^k;%采样点数dt=0.01;%时域采样间隔df=1/(N*dt);%频域采样间隔T=N*dt;%截短时间Bs=N*df/2;%系统带宽t=linspace(-T/2,T/2,N);f=linspace(-Bs,Bs,N);f0=1;s=cos(2/3*pi*f0*t);S=t2f(s);a=f2t(S);figure(1)set(1,'position',[10,50,500,200])%figure(2)set(2,'position',[350,50,500,200]);%figure(1)as=abs(S);%求模plot(f,as,'r-')grid;axis([-2*f0,+2*f0,min(as),max(as)]);设定窗口位置及大小设定窗口位置及大小figure(2)plot(t,a,'b-')gridaxis([-4,+4,-1.5,1.5']);xlabel(('t(ms)'));ylabel('s(t)(V)');傅式变换程序:t2f.mfunctionX=t2f(x)globaldtdfNtfT%X=t2f(x)%x为时域的取样值矢量%X为x的傅氏变换%X与x长度相同,并为2的整幂。%本函数需要一个全局变量dt(时域取样间隔)H=fft(x);X=[H(N/2+1:N),H(1:N/2)].*dt;End傅式反变换程序:f2t.mfunctionx=f2t(X)globaldtdftfTN%x=f2t(X)%x为时域的取样值矢量%X为x的傅氏变换%X与x长度相同并为2的整幂%本函数需要一个全局变量dt(时域取样间隔)X=[X(N/2+1:N),X(1:N/2)];x=ifft(X)/dt;%x=[tmp(N/2+1:N),tmp(1:N/2)];End运行结果:-2-1.5-1-0.500.511.52f(kHZ)432)ZHk/V()f((五)实验结果分析打开MATLAB运行程序sinx.m后窗口出现:取样点数=2^k,k=[10]。输入10后,画出正弦信号波形图以及频谱图。正弦信号傅里叶变换:Sin(2f0t)jff0ff00200通过傅里叶变换语句S=t2f(s)及傅里叶反变换语句a=f2t(S),得到正弦信号频谱并作图。四.单极性归零(RZ)波形及其功率谱仿真一)通信原理知识用矩形不归零脉冲作为发射波形(载波)2PAM信号波形的幅度:aia1A发1a20发0占空比:一个码元时间内正脉冲持续时间码元持续时间01101(a)1Ps(f)仿真原理及思路采用归零(RZ)矩形脉冲波形的数字信号,可以用简单的方法信号矢量s。设a是码元矢量,N是总取样点数,M是总码元数,L是每个码元内的点数,Rt是要求的占空比,dt是仿真系统的时域采样间隔,则RZ信号的产生方法是s=zeros(1,N);forii=1:Rt/dt,s(ii+[0:M-1]*L)=a;,end2任意信号s(t)的功率谱的定义是Ps(f)limSTf,其中ST(f)是s(t)截短后的傅2氏变换,ST(f)2是sT(t)的能量谱,STf是sT(t)在截短时间内的功率谱。对于仿真系统,若x是时域取样值矢量,X是对应的傅氏变换,那么x的功率谱便为矢量P=(X.*conj(X))/T。程序流程图(四)仿真程序及运行结果程序如下:rz.mglobaldttdfNcloseallk=input('取样点数=2^k,k=[14]');ifk==[],k=14;endN=2^k;%采样点数L=64;%每码元的采样点数M=N/L;%码元数Rb=2;%码速率为2Mb/sTs=1/Rb;%码元间隔dt=Ts/L;%时域采样间隔Rt=0.5;%占空比df=1/(N*dt);%频域采样间隔T=N*dt;%截短时间t=linspace(-T/2,T/2,N);%时域横坐标Bs=N*df/2;%系统带宽f=linspace(-Bs,Bs,N);%频域横坐标EP=zeros(1,N);forjj=1:100a=round(rand(1,M));%产生M个取值0,1等概的随机码s=zeros(1,N);%产生一个N个元素的零序列forii=1:Rt*Ts/dts(ii+[0:M-1]*L)=a;%产生单极性归零码endQ=t2f(s);%付氏变换P=Q.*conj(Q)/T;%P为单极性归零码的功率EP=(EP*(ii-1)+P)/ii;%累计平均aa=30+10*log10(EP+eps);%加eps以避免除以零,标量eps相当于无穷小endfigure(1)set(1,'position',[10,50,500,200])%设定窗口位置及大小figure(2)set(2,'position',[350,50,500,200])%设定窗口位置及大小figure(1)plot(f,aa,'r')xlabel('f(MHZ)')ylabel('Ps(f)(MHZ)')axis([-15,+15,-50,50])gridfigure(2)plot(t,s,'b')xlabel('t(ms)')ylabel('s(t)(V)')axis([-10,10,-0.5,1.5])grid运行结果:s(m)ZHM()f(s-50-15-10-505f(MHZ)1015实验结果分析打开MATLAB运行程序rz.m后窗口出现:取样点数=2^k,k=[14]。输入14后,画出占空比为50%的单极性归零(RZ)码的波形图及其功率谱图。本题通过rand(1,M)函数产生M个取值0,1等概的随机码,然后根据0.5占空比,生成单极性归零码。最后对其傅里叶变换,用语句P=Q.*conj(Q)/T生成单极性归零码的功率。五.升余弦滚降波形的眼图及功率谱密度仿真通信原理知识滚降系数为01,则频谱宽度为1Rs/2接收二进制波形时,在一个码元周期Ts内只能看到一只眼睛;若接收的是M进制波形,则在一个码元周期内可以看到纵向显示的(M-1)只眼睛;另外,若扫描周期为nTs时,可以看到并排的n只眼睛。仿真原理及思路升余弦滚降信号的基本脉冲波形为:h(t)sin(t/Ts)cos(t/Ts)t/Ts142t2/Ts2用sint/Ts和cost/Ts产生升余弦滚降信号。通过运行此程序,我们可以观察到不同滚降系数时升余弦滚降信号的眼图及功率谱。在通信原理的模型中,加入到升余弦滚降滤波器输入端的信号是冲激序列,而实际当中原始的数字信号一般是NRZ(不归零)信号,为了使升余弦滚降滤波器的输出仍为我们期望得到的信号,此时需要在滚降滤波器之前加入一个网孔均衡滤波器(如下图所示)眼图是数字信号在示波器上重复扫描得到的显示图形。若示波器的扫描范围是Na个码元,那么画眼图的方法是:tt=[0:dt:Na*L*dt];holdonforii=1:Na*L:N-N*Lplot(tt,s(ii+[1:Na*L]));end程序流程图四)仿真程序及运行结果程序如下:scosx.mglobaldttdfNcloseallN=2^14;L=32;M=N/LRb=2;Ts=1/Rb;%dt=Ts/L;%df=1/(N*dt)%T=N*dt%%采样点数%每码元的采样点数%码元数%码速率是2Mb/s码元间隔时域采样间隔频域采样间隔截短时间Bs=N*df/2%Na=4;%系统带宽示波器扫描宽度为4个码元alpha=input('滚降系数=[0.5]');ifalpha==[],alpha=0.5;endt=[-T/2+dt/2:dt:T/2];%时域横坐标f=[-Bs+df/2:df:Bs];%频域横坐标g1=sin(pi*t/Ts)./(pi*t/Ts);g2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);g=g1.*g2*2;%升余弦脉冲波形G=t2f(g);figure(1)set(1,'position',[10,50,500,200])%figure(2)set(2,'position',[350,50,500,200])%holdon设定窗口位置及大小设定窗口位置及大小gridxlabel('tinus')ylabel('s(t)inV')EP=zeros(size(f))+eps;forii=1:100a=sign(randn(1,M));imp=zeros(1,N);%imp(L/2:L:N)=a/dt;S=t2f(imp).*G;%s=f2t(t2f(imp).*G);%s=real(s);P=S.*conj(S)/T;产生冲激序列升余弦信号的傅氏变换升余弦信号的时域波形%升余弦信号的功率谱EP=(EP*(ii-1)+P+eps)/ii;figure(1)plot(f,30+10*log10(EP),'r');gridaxis([-3,+3,-200,50])xlabel('f(MHz)')ylabel('Ps(f)(dBm/MHz)')figure(2)tt=[0:dt:Na*L*dt];forjj=1:Na*L:N-Na*Lplot(tt,s(jj:jj+Na*L));endend运行结果:420-2-40.511.52tinus0f(MHz)实验结果分析打开MATLAB运行程序scosx.m后窗口出现:M=512,df=0.0039,T=256,Bs=32滚降系数=[0.5]。输入0.5后,画出升余弦滚降系数为0.5的波形的眼图及其功率谱密度图。升余弦滚降信号的基本脉冲波形为:h(t)sin(t/Ts)cos(2t2/Ts)2。本题用sint/Ts和t/Ts142t2/Ts2cost/Ts产生滚降系数为0.5的升余弦滚降信号。然后对其进行傅里叶变换,得到功率谱密度与眼图。六.PCM编码及解码仿真一)通信原理知识PCM采用A律编码规则:A律压扩特性曲线在(-1,+1)上,这种压扩特性可用13折线逼近。注意:本来是分成了16段,但0附近的4个线段斜率相同,可视为1条对量化后的有限个取值进行编码,常见的二进制码:自然码,折叠码,格雷码。PCM中使用的是折叠码:用第一位表示量化电平极性(正为1,负为0),后面几位表示信号量化电平绝对值的大小。量化:先用对数A律特性将量化范围分成16个段落(对数量化),在段落内则使用均匀量化(即将每个段落均匀分成16个小段)。编码:每个值用8比特进行量化。将整个量化范围均分成8192等份,正负部分各4096份且相互对称。下面以正极性部分进行说明:段落0(000):0-32份。段内16小段,每小段2份段落1(001):32-64份。段内16小段,每小段2份段落2(010):64-128份。段内16小段,每小段4份段落3(011):128-256份。段内16小段,每小段8份段落4(100):256-512份。段内16小段,每小段16份段落5(101):512-1024份。段内16小段,每小段32份段落6(110):1024-2048份。段内16小段,每小段64份段落7(111):2048-4096份。段内16小段,每小段128份注意:每小段的量化电平为该小段中点(均匀量化)二)仿真原理及思路PCM编码原理:在PCM中,对模拟信号进行抽样、量化,将量化的信号电平值转化为对应的二进制码组的过程称为编码,其逆过程称为译码或解码。在PCM中使用的是折叠二进制码。(1)折叠二进制码从理论上看,任何一个可逆的二进制码组均可用于PCM。目前最常见的二进制码组有三类:二进制自然码(NBC)、折叠二进制码组(FBC)、格雷二进制码(RBC)。表3-1列出三种码的编码规律。表3-1二进制码型电平序号自然二进制码折叠二进制码格雷码0000001110000100010110000120010010100113001101000010401000011011050101001001116011000010101701110000010081000100011009100110011101101010101011111110111011111012110011001010131101110110111411101110100115111111111000由表3-1可见,如果把16个量化级分成两部分:0~7的8个量化级对于于负极性样值,8~15的8个量化级对应于正极性样值。自然二进制码就是一般的十进制正整数的二进制表示。如电平序号13用自然码表示就是320132322020(1101)b(3.3-3)其中下标b表示是二进制数。在折叠码中,左边第一位表示正负号(信号极性),第二位开始至最后一位表示信号幅度。第一位用1表示正,用0表示负。绝对值相同的折叠码,其码组除第一位外都相同,并且相对于零电平(第7电平和第8电平之间)呈对称折叠关系,因此这种码组形象地称为折叠码。PCM编码规则:电话语音信号的频带为300~3400Hz,抽样速率为8000Hz,对每个抽样值进行A律或者律非均匀量化,在编码时每个样值用8位二进制码表示。这样,每路话路的比特率为64kbps。编码时是按照CCITT建议的PCM编码规则进行的。在A律13折线编码中,正负方向共16个段落,在每一个段落内有16个均匀分布的量化电平,因此总的量化电平数L256。编码位数N8,每个样值用8比特代码C1~C8来表示,分为三部分。第一位C1为极性码,用1和0分别表示信号的正、负极性。第二到第四位码C2C3C4为段落码,表示信号绝对值处于那个段落,3位码可表示8个段落,代表了8个段落的起始电平值。上述编码方法是把非线性压缩、均匀量化、编码结合为一体的方法。在上述方法中,虽然各段内的16个量化级是均匀的,但因段落长度不等,故不同段落间的量化间隔是不同的。当输入信号小时,段落小,量化级间隔小;当输入信号大时,段落大,量化级间隔大。第一、二段最短,归一化长度为1/128,再将它等分16段,每一小段长度为1/2048,这就是最小的量化级间隔。根据13折线的定义,以最小的量化级间隔为最小计量单位,可以计算出13折线A律每个量化段的电平范围、起始电平Isi、段内码对应电平、各段落内量化间隔i。具体计算结果如表3-2所示。表3-213折线A律有关参数表段落号i=1~8电平范围()段落码C2C3C4段落起始电平Isi()量化间隔i()段内码对应权值(C5C6C7C8)81024~2048111102464512256128647512~10241105123225612864326256~512101256161286432165128~25610012886432168464~128011644321684332~6401032216842216~32001161842110~16000018421假设以非均匀量化时的最小量化间隔Δ=1/2048作为均匀量化的量化间隔,那么从13折线的第一段到第八段所包含的均匀量化级数共有2048个均匀量化级,而非均匀量化只有128个量化级。均匀量化需要编11位码,而非均匀量化只要编7位码。通常把按非均匀量化特性的编码称为非线性编码;按均匀量化特性的编码称为线性编码。可见,在保证小信号时的量化间隔相同的条件下,7位非线性编码与11位线性编码等效。程序流程图四)仿真程序及运行结果主程序:pcm.m%showthepcmencodeanddecodeclearall;closeall;t=0:0.01:10;x=sin(t);v=max(x);xx=x/v;%normalizesxx=floor(xx*4096);y=pcm_encode(sxx);yy=pcm_decode(y,v);drawnowfigure(1)set(1,'position',[10,50,500,200])%设定窗口位置及大小figure(2)set(2,'position',[350,50,500,200]);%设定窗口位置及大小figure(1)plot(t,x,'r');title('samplesequence');figure(2)plot(t,yy,'b')title('pcmdecodesequence');编码程序:pcm_encode.mfunction[out]=pcm_encode(x)%xencodetopcmcoden=length(x);%-40960out(i,1)=1;elseout(i,1)=0;endifabs(x(i))>=0&abs(x(i))<32out(i,2)=0;out(i,3)=0;out(i,4)=0;step=2;st=0;elseif32<=abs(x(i))&abs(x(i))<64out(i,2)=0;out(i,3)=0;out(i,4)=1;step=2;st=32;elseif64<=abs(x(i))&abs(x(i))<128out(i,2)=0;out(i,3)=1;out(i,4)=0;step=4;st=64;elseif128<=abs(x(i))&abs(x(i))<256out(i,2)=0;out(i,3)=1;out(i,4)=1;step=8;st=128elseif256<=abs(x(i))&abs(x(i))<512out(i,2)=1;out(i,3)=0;out(i,4)=0;step=16;st=256;elseif512<=abs(x(i))&abs(x(i))<1024out(i,2)=1;out(i,3)=0;out(i,4)=1;step=32;st=512;elseif1024<=abs(x(i))&abs(x(i))<2048out(i,2)=1;out(i,3)=1;out(i,4)=0;step=64;st=1024;elseif2048<=abs(x(i))&abs(x(i))<4096out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048;elseout(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048;endifabs(x(i))==4096out(i,2:8)=[1111111];elsetmp=floor((abs(x(i))-st)/step);t=dec2bin(tmp,4)-48;%函数dec2bin输出的是ASCII字符串,48对应0out(i,5:8)=t(1:4);endendout=reshape(out',1,8*n);译码程序:pcm_decode.mfunction[out]=pcm_decode(in,v)%decodetheinputpcmcode%in:inputthepcmcode8bitssample%v:quantizedleveln=length(in);in=reshape(in',8,n/8)';slot(1)=0;slot(2)=32;slot(3)=64;slot(4)=128;slot(5)=256;slot(6)=512;slot(7)=1024;slot(8)=2048;step(1)=2;step(2)=2;step(3)=4;step(4)=8;step(5)=16;step(6)=32;step(7)=64;step(8)=128;fori=1:n/8ss=2*in(i,1)-1;tmp=in(i,2)*4+in(i,3)*2+in(i,4)+1;st=slot(tmp);dt=(in(i,5)*8+in(i,6)*4+in(i,7)*2+in(i,8))*step(tmp)+0.5*step(tmp);out(i)=ss*(st+dt)/4096*v;end运行结果:samplesequencepcmdecodesequence五)实验结果分析打开MATLAB运行程序pcm.m后窗口出现:st=128。并画出正弦信号未编码波形与PCM编码,译码后波形。有图可知,未编码与PCM编码,译码后波形一致。说明A律PCM编码能不失真地回复出原信号,具有较强的实用性。七.实验心得通信中的许多问题都可以通过计算机仿真的办法来进行研究。计算机仿真实质上就是把硬件实验搬进了计算机,可以把它看成是一种软件实验。在软件实验中我们用程序来实现通信原理中的理论模型。所有通信模块及通信仪表的功能都是用程序来实现,通信系统的全过程在计算机中仿真运行。通过本次实验,我了解了MATLAB基本使用方法以及通信原理计算机仿真的一般方法。通信原理是通信工程专业的一门重要专业基础课,这门课的某些内容对我们初学者来说往往不大好把握。通过自己动手,用MATLAB对某些知识进行仿真,然后对结果进行研究和观察,使我对这些内容掌握地更加透彻。实习指导教师签字:年月日
/
本文档为【通信原理MATLAB仿真】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索