版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信工具箱的组成通信系统信源编码通信系统信道编码模拟调制与解调数字调制与解调数字通信系统BER仿真
lecture_10MATLAB在通信系统中应用内容提纲重点难点对MATLAB通信工具箱有一定的认识
熟悉通信工具箱的基本组成、功能和应用
(cha.10)10.1MATLAB通信工具箱的组成MATLAB通信工具箱是一个应用在通信工程专业领域,辅助工程技术人员进行理论分析研究、系统建模仿真和通信性能计算的专业化工具软件集。MATLAB通信工具箱由两大部分组成:通信工程专业函数库和SIMULINK仿真模型库。这里需要说明的是读者要想熟练地应用MATLAB通信工具箱内的专业函数库和仿真模型库,那么就必须先掌握通信系统的一般性原理知识,需要懂诸如调制、功率谱和误码率等专业词汇的内涵,还需要了解各类通信系统的组成原理和系统方框图。MATLAB通信工程专业函数库包含七十多个通信专业函数,这些函数的功能覆盖了现代通信系统的各方面。可将它们分类为:信号源产生函数、信源编码/信源解码函数、纠错控制编码/纠错控制解码函数、调制/解调函数、滤波器函数、传输信道函数、TDMA/FDMA/CDMA函数、同步函数、专业工具函数等。每一个函数在调用时应注意函数格式中各参数的含义及单位,以便设定正确。以纠错控制编码(或解码)函数为例,此函数提供了线性分组码、汉明码、循环码、BCH码、里德-索罗蒙码和卷积码等六种纠错控制编码(或解码)选项,还需要对输入(或输出)数据格式进行选择,可选序列或矢量(矩阵)两种不同的格式。一般而言,对通信系统进行仿真可以采用在m程序(脚本)文件中调用相关函数的方式进行,也可以使用SIMULINK仿真模型(块)库的方式来进行。只考虑点到点通信模式,SIMULINK仿真模型组成框图是自信源开始的,各仿真模型是依次串联型的,分别为信源模型、信源编码模型、纠错控制编码模型、调制模型、复用模型、发射/滤波模型,之后送入信道。信号接收之后系统框图是各种模型再依照下列次序串接,分别为接收/滤波模型、复用模型、解调模型、纠错控制解码模型、信源解码模型、最后输出信号。有时系统框图中还需要加入同步及工具模型。不同通信系统仿真时,上述各种仿真模块可以系统的具体需求有针对性的指定参数。仍以纠错控制编码(或解码)模型为例,需要选定其具体的编码方式,比如某系统已选定为BCH码进行纠错编码。同时此系统的接收端,也必须选择对应解码BCH码的模块才行。10.2信息量度与信源编码一、信息的量度计算考虑离散取值并用随机过程来表达一个信源,对于一个离散无记忆平稳随机过程,则信源输出的信息量(熵)可定义为:
式中,X表示信源取值的一个集合,表示输出x值时的概率。下面通过程序xysh.m举例说明离散信源熵的计算。
【例10-1】已知甲信源可以输出四种电平、、、,乙信源只能输出两种电平、,经观察测量甲乙各自输出不同电平的概率分别为[1/2,1/4,1/8,1/8]和[7/8,1/8],试分别计算甲乙两种信源输出的信息量(熵)。编制程序xysh.m如下:clearp1=[1/2,1/4,1/8,1/8];p2=[7/8,1/8];H1=0.0;H2=0.0;I=[];J=[];fori=1:4
H1=H1+p1(i)*log2(1/p1(i));I(i)=log2(1/p1(i));enddisp('甲信源各电平自信息量分别为:');Idisp('甲信源熵为:');H1forj=1:2H2=H2+p2(j)*log2(1/p2(j));J(j)=log2(1/p2(j));enddisp('乙信源各电平自信息量分别为:');disp('乙信源熵为:');H2J然后再在MATLAB命令窗口运行程序xysh.m,结果如下:>>xysh甲信源各电平自信息量分别为:I=1233甲信源熵为:H1=1.7500乙信源各电平自信息量分别为:J=0.19263.0000乙信源熵为:H2=0.5436二、模拟信号量化和数字化在标量量化中,随机标量X的取值区间(值域)被划分成为N个互不重叠的区域,被称为量化间隔,在每个区域内选择一个数值点定为其量化值,那么整个取值区间就可以得出一个量化值集合。这样落在区域内的随机变量的取值都被量化为第i个量值,量化的数学表达如下:这种量化方法不可避免的引入了失真,其均方误差可按下式计算:上式中是信源随机变量的概率密度函数。信号量化噪声比(SQNR)为:MATLAB通信工具箱提供了标量量化的函数指令quantiz,其使用格式如下:[INDX,QUANTV,DISTOR]=quantiz(SIG,PARTITION,CODEBOOK)%在确定的PARTITION(量化间隔)和CODEBOO(量化值集合)条件下,对SIG(信号)进行标量量化,输出INDX(量化索引)、量化值和失真值D;[INDX,QUANTV]=quantiz(SIG,PARTITION,CODEBOOK)%功能同上,不输出失真值D;INDX=quantiz(SIG,PARTITION)%仅输出INDX(量化索引);从使用格式中可以看出,函数指令quantiz的运行需要确定PARTITION(量化间隔)和CODEBOOK(量化值集合)这两个条件。MATLAB通信工具箱提供了优化标量量化的Lloyds算法函数,可以得到PARTITION(量化间隔)和CODEBOOK(量化值集合)这两个参数。Lloyd函数使用格式如下:[PARTITION,CODEBOOK]=lloyds(TRAINING_SET,INI_CODEBOOK)%依据给定的TRAINING_SET(训练(信号)集,给出PARTITION和CODEBOOK这两个参数集,INI_CODEBOOK可以是假设的量化值集合,也可以是期望量化值集合的长度(集合元素的个数)。【例10-2】试用8个电平对最大幅度值为1正弦信号进行标量量化。解:在MATLAB命令窗口直接输入下列命令:>>N=2^3;%取N=8个电平长>>t=[0:50]*pi/20;>>u=sin(t);>>[p,c]=lloyds(u,N)p=-0.7836-0.5145-0.22200.04690.26900.51450.7850c=-0.9197-0.6474-0.3815-0.06260.15640.38150.64740.9226函数lloyds运行后,给出的向量p是将区间[-1,1]划分为8个区间的分界(分割)点。向量c正是这8个区间中量化值的集合。继续在MATLAB命令窗口直接输入下列命令运行:>>[index,quant,distor]=quantiz(u,p,c)index=1至22列3455667777777776655433%23至51列之后数据删掉没有列出了;quant=1至13列-0.06260.15640.38150.38150.64740.64740.92260.92260.92260.92260.92260.92260.9226%14至51列之后数据删掉没有列出了;
distor=0.0045INDX(量化索引)值可以用于数字编码,从输出结果可以看出取3时正好对应。计算出的失真值D=0.0045,数值上看还是比较小的。为了得到更直观的量化后的结果,可以继续在MATLAB命令窗口直接输入画图命令:>>plot(t,u,t,quant,'*')图形绘制如下:MATLAB通信工具箱提供了霍夫曼信源编码的函数指令,霍夫曼编码/解码函数指令的使用格式介绍如下:ENCO=huffmanenco(SIG,DICT)%huffmanenco函数能将输入信号SIG编码为哈夫曼码,格式中的DICT为码字字典,由函数指令huffmandict生成;DECO=huffmandeco(COMP,DICT)%哈夫曼解码函数,将哈夫曼编码COMP解码为DECO;DICT=huffmandict(SYM,PROB)%哈夫曼码字字典生成函数,SYM为信源符号向量,需要包含信息中所有符号,PROB为相应符号出现的概率;霍夫曼编码/解码函数指令的使用的关键之一是需要获取码字字典,这是由函数huffmandict指令生成的,例如:信源符号向量SYM设为[1:6];相应符号出现的概率PROB设为[[.5.125.125.125.0625.0625];三、信源编码在MATLAB命令窗口直接输入下列命令运行:>>[dict,avglen]=huffmandict([1:6],[.5.125.125.125.0625.0625])dict=[1][0][2][1x3double][3][1x3double][4][1x3double][5][1x4double][6][1x4double]avglen=2.1250结果中给出了码字字典和码字的平均字长,但码字字典没有以直观的形式给出。【例10-3】已知C盘某目录下有一幅灰度图像,大小为165202,试将其读入MATLAB中显示并与霍夫曼编码和解码之后的图片显示结果加以比较。编制程序huffm.m如下:clearI=imread('C:\Users\lev\Documents\cha.10\10_2.jpg');[M,N]=size(I);I1=I(:);P=zeros(1,256);fori=0:255P(i+1)=length(find(I1==i))/(M*N);endk=0:255;dict=huffmandict(k,P);%生成字典enco=huffmanenco(I1,dict);%编码deco=huffmandeco(enco,dict);%解码Ide=col2im(deco,[M,N],[M,N],'distinct');%把向量重新转换成图像块subplot(1,2,1);imshow(I);title('originalimage');subplot(1,2,2);imshow(uint8(Ide));title('decoimage');
然后再在MATLAB命令窗口运行程序huffm.m,图片结果如下:图10-3输出了原始的灰度图像及霍夫曼编码和解码之后的图像,对这两幅图加以比较后发现,肉眼看无差异。经过比较计算也证实霍夫曼编码是一种无损可变长无损编码。可以计算出其平均码长avglen=4.1360,几乎为BCD码所需8位码长的一半。一、线性分组码编解码
MATLAB通信工具箱提供了差错控制编码的函数指令,允许采用汉明码、循环码及线性码等编码技术,差错控制编码/解码函数指令的使用格式介绍如下:CODE=encode(MSG,N,K,METHOD,OPT)%用METHOD指定的方法完成纠错编码。其中MSG代表信息码元,OPT是一个可选择的优化参数,N为码长,K为信息元长,输出CODE为纠错编码;MSG=decode(CODE,N,K,METHOD...)%用METHOD指定的方法完成纠错解码,其余参数同上,CODE为纠错编码,输出MSG为解码得出的信息;10.3差错控制和信道编码对于汉明码,N为码长,K为信息元长,其必须满足如何分组的规定,MATLAB通信工具箱也提供了寻找监督矩阵及生成矩阵的函数指令,其使用格式介绍如下:[H,G,N,K]=hammgen(r)%依据给定的监督元长度r,输出码长N,信息元长K,监督矩阵,生成矩阵;下面通过在MATLAB命令窗口直接输入下列命令举例说明:>>[h,g,n,k]=hammgen(3)h=100101101011100010111g=1101000011010011100101010001n=7k=4以(7,4)汉明码为例,监督元长度r=3,得到了码长N,信息元长K,监督矩阵,生成矩阵如上;继续在MATLAB命令窗口直接输入下列命令运行:>>msg=[0001;0001;0001;0011;0011;0101;0110;0111];msg=00010001000100110011010101100111上面输入了8组信息码之后继续在MATLAB命令窗口直接输入下列命令运行:>>code=encode(msg,n,k,'hamming/binary')code=10100011010001101000101000110100011110010110001100010111输出为8组汉明码下面再输入汉明码的解码指令:>>newmsg=decode(code,n,k,'hamming/binary')newmsg=00010001000100110011010101100111解码结果与8组信息码完全一致。交织编码根据交织方式的不同,可分为线性交织、卷积交织和伪随机交织。其中线性交织编码是一种比较常见的形式。一种线性交织编码器的原理是把差错纠错编码器来的输入信号按行填充入一个临时的阶矩阵中去,填满之后再按列的次序逐列输出信号。MATLAB通信工具箱提供了线性交织编码/解码的函数指令,其使用格式介绍如下:INTRLVED=matintrlv(DATA,Nrows,Ncols)%将数据DATA送入一个临时的阶矩阵中进行交织编码,并由INTRLVED输出交织好的编码;DEINTRLVED=matdeintrlv(DATA,Nrows,Ncols)%将交织好的编码数据块DATA再回复为交织前的序列;二、交织编码三、扰码与解扰扰码就是对前一级来的信码做随机化处理,扰码器一般是设置于信道发射机之前。扰码器的目的之一在于信码经随机化处理之后减少连‘0’或连‘1’符号的长度,以保证在接收端能提取到定时信息,此外扰码器能使加扰后的信号频谱更适宜在基带信道内传输。扰码器还可以应用在保密通信系统中。扰码后还需要解扰,因此其随机化的处理并非是完全真正的随机。实际加解扰时,一般将前一级来的信码与一个周期很长的伪随机序列模2相加,就可以将原信息变成随机化的的难以直接解读的另一序列。但这是一种可处理的伪随机码,只需在接收端再加上(模2加)同样的伪随机序列,就可恢复出原来发送的信码。MATLAB直接提供了产生各种伪随机序列的函数指令idinput,其使用格式介绍如下:u=idinput(N,type,band,levels)
%函数格式中的参数N的含义是产生的序列u的长度,如果N=[Nnu],则nu为下一级输入的通道数,如果N=[PnuM],则nu指定通道数,P为周期,M*P为信号长度。默认情况下,nu=1,M=1,即一个通道,一个周期;%参数Type的含义是指定产生信号的类型,可选类型如下:'rgs'高斯随机信号;'rbs'(默认)二值随机信号;'prbs'二值伪随机信号(m序列)
'sine'正弦信号和;%参数Band的含义是指定输出信号的频率成分,对于'rgs'、'rbs'、'sine',band=[wlow,whigh]指定通带的范围,如果是白噪声信号,则band=[0,1],这也是默认值。指定非默认值时,相当于有色噪声。
对于'prbs',band=[0,B],B表示信号在一个间隔1/B(时钟周期)内为恒值,默认为[0,1]。
%参数Levels的含义是指定下一级输入的幅值,Levels=[minu,maxu],在type='rbs'、'prbs'、'sine'时,表示信号u的值总是在minu和maxu之间。对于type='rgs',minu指定信号的均值减标准差,maxu指定信号的均值加标准差,对于0均值、标准差为1的高斯白噪声信号,则levels=[-1,1],这也是默认值。n=6;%指定阶次p=2^n-1;%计算m序列周期ms=idinput(p,'prbs');subplot(1,2,1)title('M序列')c=xcorr(ms,'coeff');%计算相关函数subplot(1,2,2)plot(c)title('相关函数')在MATLAB通信工具箱中提供了产生AM和DSB-AM已调波的函数指令,它们的使用格式介绍如下:Y=ammod(X,Fc,Fs,INI_PHASE,CARRAMP)%信号调制后产生AM已调波,载波频率为Fc,载波初始相位为INI_PHASE,调制信号抽样后为X,已调波抽样后为输出Y,抽样频率均为Fs,抽样频率Fs的选择必须符合奈奎斯特抽样定理提出的要求,CARRAMP参数为调制时偏移电平,不能省略;Y=ammod(X,Fc,Fs)%对信号进行振幅调制,且抑制掉载波项,产生DSB-AM已调波,载波初始相位INI_PHASE设为0,可以不写;一、幅度调制10.4模拟调制与解调下面编制程序yam.m,利用函数指令ammod产生一个AM已调波和一个DSB-AM已调波,程序行如下:clearFs=100000;%采样频率Fc=1000;%载波频率T=0.1;%信号观察区间Ns=Fs*T;%信号观察长度t=0:1/Fs:(Ns-1)/Fs;A0=3;%调制偏移电平x1=2*cos(2*pi*50*t);x2=cos(2*pi*20*t);x=x1+x2;%调制信号
figure(1)subplot(3,1,1)plot(x)title('调制信号')u1=ammod(x,Fc,Fs,0,A0);%AM调制pam=sum(u1.^2)/length(u1)/T;subplot(3,1,2)plot(u1)title('AM已调信号')u2=ammod(x,Fc,Fs);%DSB-AM调制pdbsam=sum(u2.^2)/length(u2)/T;subplot(3,1,3)plot(u2)title('DSB-AM调制波形')wbzt=pdbsam/pam在MATLAB命令窗口中运行程序yam.m,运行结果及图形如下:>>yamwbzt=0.2174除了观察已调波的时域信号,我们也比较关心振幅调制各发射波的频谱。下面给出了图10-7直观的显示了AM及DSB信号的功率谱密度,这里编写了程序ypwelch.m,采用的是welch估算功率谱方法(其它估算功率谱方法一样可用)。ypsd1=pwelch(x)%x为调制信号n=0:(length(ypsd1)-1);f=n1*Fs/2/(length(ypsd1)-1);%Fs=2500figure(1)subplot(3,1,1)plot(f,ypsd1);title('调制信号功率谱')ypsd2=pwelch(u1);%u1为AM调制subplot(3,1,2)plot(f,ypsd2);title('AM信号功率谱')ypsd3=pwelch(u2);%u2为DSB信号subplot(3,1,3)plot(f,ypsd3);title('DSB信号功率谱')wbzf=sum(ypsd3)/sum(ypsd2);程序ypwelch.m运行后,各信号功率谱显示如下图中:幅度调制AM信号经信道传输到接收端后通常有两种解调方式,相干解调(又称同步检测)和简单的非相干解调。而DSB-AM信号接收后只有相干解调一种解调方式。对于抑制载波单边带(SSB-AM)信号接收后也仅有一种解调方式,即相干解调方式。
幅度调制信号的相干解调原理都是一样的,信号接收后首先由一个带通滤波器将所需的已调波信号选择出来,然后进入乘法器与载波(同相位)相乘,再经由低通滤波器输出调制信号,而载波能量则被低通滤波器所阻止(或称滤掉了)不能通过。二、幅度解调下面编写了程序ydam.m,对解调输入信号经过带通滤波器之后的信号进行了仿真分析,程序行如下:xam%产生AM信号u1snr=-5;u1z=awgn(u1,snr);%加入信道噪声,信噪比设为snrypsd1z=pwelch(u1z);w1=(Fc-50)*2/Fs;w2=(Fc+50)*2/Fs;[b,a]=butter(5,[w1,w2]);%设计一个带通滤波器u1zd=filter(b,a,u1z);%对接收信号带通滤波ypsd1d=pwelch(u1zd);n=0:(length(ypsd1z)-1);f=n*Fs/2/(length(ypsd1z)-1);figure(1)subplot(4,1,1)plot(u1z)title('带通滤波器输入信号')subplot(4,1,2)plot(f,ypsd1z);title('带通滤波器输入信号功率谱')subplot(4,1,3)plot(u1zd)title('带通滤波器输出信号')subplot(4,1,4)plot(f,ypsd1d);title('带通滤波器输出信号功率谱')在MATLAB通信工具箱中提供了产生FM和PM已调波的函数指令,它们的使用格式分别介绍如下:Y=fmmod(X,Fc,Fs,FREQDEV,INI_PHASE)%信号调制后产生FM已调波Y,载波频率为Fc,载波初始相位为INI_PHASE,调制信号抽样后为X,FM已调波抽样后为输出Y。抽样频率均为Fs,抽样频率Fs的选择必须符合奈奎斯特抽样定理提出的要求,但取值较大时输出波形精细程度高。
FREQDEV参数表示每单位(电压)调频波的频率偏移量,即调频灵敏度;Y=fmmod(X,Fc,Fs,FREQDEV)%函数功能同上,载波初始相位为INI_PHASE缺省,其值默认为0;三、角度调制Y=pmmod(X,Fc,Fs,PHASEDEV,INI_PHASE)%信号调制后产生PM已调波Y,载波频率为Fc,载波初始相位为INI_PHASE,调制信号抽样后为X,FM已调波抽样后为输出Y。抽样频率均为Fs,抽样频率Fs的选择必须符合奈奎斯特抽样定理提出的要求,但取值较大时输出波形精细程度高。PHASEDEV参数表示每单位(电压)调相波的相位偏移量,即调相灵敏度;Y=pmmod(X,Fc,Fs,PHASEDEV)%函数功能同上,载波初始相位为INI_PHASE缺省,其值默认为0;下面编制程序yjdm.m,利用函数指令fmmod和pmmod分别产生一个FM已调波和一个PM已调波,程序行如下:clearclcFc=1000;%载波频率Fs=100000;%抽样频率T=0.02;%观察区间Ns=Fs*T;%观察点数量t=0:1/Fs:(Ns-1)/Fs;%时间轴取值x=[-1:0.002:1-0.002];x=[x,[1:-0.002:-1+0.002]];%x信号xfredev=1000;phasedev=pi;yfm=fmmod(x,Fc,Fs,fredev);ypm=pmmod(x,Fc,Fs,phasedev);figure(1);subplot(4,1,1)plot(t,x);title('调制波形')subplot(4,1,2)plot(t,cos(2*pi*Fc*t));title('载波波形')subplot(4,1,3)plot(t,yfm);title('FM波形')subplot(4,1,4)plot(t,ypm);title('PM波形')
除了观察角度已调波的时域信号,我们也比较关心角度调制各发射波的频谱。这里编写了程序ypwelch.m,采用的是welch估算功率谱方法(其它估算功率谱方法一样可用)。具体程序行如下:clearclcyjd%得到时域信号figure(2)psdx=pwelch(x,[],[],1000,Fs);psdzb=pwelch(zb,[],[],1000,Fs);psdyfm=pwelch(yfm,[],[],1000,Fs);psdypm=pwelch(ypm,[],[],1000,Fs);subplot(4,1,1)plot(psdx);title('调制波功率谱');xlim([0,40])subplot(4,1,2)plot(psdzb);title('载波功率谱');xlim([0,40])subplot(4,1,3)plot(psdyfm);title('FM波功率谱');xlim([0,40])subplot(4,1,4)plot(psdypm);title('PM波功率谱');xlim([0,40])
在MATLAB命令窗口中运行程序ypwelch.m,运行结果及图形如下:在MATLAB通信工具箱中提供了FM和PM已调波信号的解调函数指令,它们的使用格式介绍如下:Z=fmdemod(Y,Fc,Fs,FREQDEV,INI_PHASE)%将载波为Fc的FM信号Y进行解调,Fs为采样频率,INI_PHASE为载波初始相位,FREQDEV参数表示每单位(电压)调频波的频率偏移量,即调频灵敏度;Z=fmdemod(Y,Fc,Fs,FREQDEV)%功能同上,INI_PHASE载波初始相位缺省,其值默认为0;Z=pmdemod(Y,Fc,Fs,PHASEDEV,INI_PHASE)%将载波为Fc的PM信号Y进行解调,Fs为采样频率,INI_PHASE为载波初始相位,PHASEDEV参数表示每单位(电压)调相波的相位偏移量,即调相灵敏度;Z=pmdemod(Y,Fc,Fs,PHASEDEV)%功能同上,INI_PHASE载波初始相位缺省,其值默认为0;四、角度解调下面编制程序udejd.m,利用函数指令fmdemod和pmdemod对FM信号和PM信号进行解调,这里并没有考虑信道噪声和接收滤波等问题。程序行如下:clcyjd%调用FM及PM信号ufm=fmdemod(yfm,Fc,Fs,freqdev);upm=pmdemod(ypm,Fc,Fs,10);figure(2);subplot(4,1,1)plot(t,yfm);title('FM波形')subplot(4,1,2)三种常见运算符:算术运算符、关系运算符和逻辑运算符一、算术运算符(1)加、减、乘和乘方运算规则与传统的数学定义一样,用法也相同。(2)点运算是指对应元素点对点运算,要求参与运算矩阵的维度要一样。点左除与点右除不一样,A./B是指A的对应元素除以B的对应元素,A.\B是指B的对应元素除以A的对应元素。(3)MATLAB除法相对复杂些,对于单个数值运算,右除和传统除法一样,即a/b=a÷b;而左除与传统除法相反,即a\b=b÷a。对于矩阵运算,左除A\B相当于矩阵方程组
的解,即X=A\B=inv(A)*B;右除B/A相当于矩阵方程组
的解,即X=B/A=B*inv(A)。5MATLAB运算符【例1-2】矩阵A=[12;34],B=[11;01],求:A\B,inv(A)*B,B/A,B*inv(A)。>>A=[12;34];B=[11;01];>>C1=A\BC1=-2.0000-1.00001.50001.0000>>C2=inv(A)*BC2=-2.0000-1.00001.50001.0000
>>D1=B/AD1=-0.50000.50001.5000-0.5000>>D2=B*inv(A)D2=-0.50000.50001.5000-0.5000
显然:A\B=inv(A)*B;B/A=B*inv(A)。plot(t,ufm);title('FM解调波形')subplot(4,1,3)plot(t,ypm);title('PM波形')subplot(4,1,4)plot(t,upm);title('PM解调波形')
在MATLAB命令窗口中运行程序udejd.m,运行结果及图形如下:10.5数字调制与解调一、4PSK数字调制在MATLAB通信工具箱中提供了数字相位调制PSK信号的函数指令,它们的使用格式介绍如下:Y=pskmod(X,M,INI_PHASE)%对输入数字信号X进行MPSK的相位调制,将已调波的复包络通过Y输出(相当于得到了MPSK解析信号,再取实部便得到了MPSK信号),INI_PHASE参数可以设定输出MPSK信号的初始相位,缺省则默认为0;下面以4PSK信号为例说明pskmod函数指令的使用,直接在MATLAB命令窗口中输入以下程序行:>>clear;>>s=randi([0,3],1,12)s=310100332001从而得到信号序列s,接着再输入以下程序行:>>ypsk=pskmod(s,4)ypsk=1至7列-0.0000-1.0000i0.0000+1.0000i1.0000+0.0000i0.0000+1.0000i1.0000+0.0000i1.0000+0.0000i-0.0000-1.0000i8至12列-0.0000-1.0000i-1.0000+0.0000i1.0000+0.0000i1.0000+0.0000i0.0000+1.0000i>>abs(ypsk)ans=111111111111>>angle(ypsk)ans=1至12列-1.57081.570801.570800-1.5708-1.57083.1416001.5708从以上复包络ypsk数据可以解读出下列的调相关系:继续在MATLAB命令窗口中输入以下程序行:>>scatterplot(ypsk,[],[],'b*');>>grid;运行后,4PSK信号星座图形显示如下:在MATLAB通信工具箱中提供了数字调制QAM信号的函数指令,它们的使用格式介绍如下:Y=qammod(X,M,SYMBOL_ORDER,Name,Value)%对输入数字信号X进行MQAM信号的正交振幅调制,将已调波的复包络通过Y输出(相当于得到了MQAM解析信号,再取实部便得到了MQAM信号);SYMBOL_ORDER参数可指定输入码流的编码类型,可以是格雷码,也可以是二进制8421码;Name和Value是配对使用的参数,当Name取'InputType'时(意义是输入类型),Value可取'integer'or'bit',取'integer'时,输入是1到M-1的整型数字,取'bit'时,输入是1或0的二进制数字;缺省则默认为'integer';二、QAM数字调制下面以16QAM信号为例说明qammod函数指令的使用,直接在MATLAB命令窗口中输入以下程序行:>>clear;>>s=randi([0,15],5,8)s=10582134912291123986131441471497121513554115484313120从而得到信号矩阵,可以变换成信号序列s:>>yqam=qammod(s,16);>>yqam=yqam(:);%变换成信号序列s>>scatterplot(yqam,[],[],'b*');>>grid;在MATLAB通信工具箱中提供了数字PSK信号相位解调的函数指令,它们的使用格式介绍如下:Z=pskdemod(Y,M,INI_PHASE,SYMBOL_ORDER)%对输入已调波的复包络Y进行MPSK的数字解调,解调出的数字序列通过Z输出,INI_PHASE参数是接收的MPSK信号Y的初始相位,缺省则默认为0;%SYMBOL_ORDER参数可指定输出码流的编码类型,可以是格雷码,也可以是二进制8421码,缺省则默认为8421码;三、数字解调下面以4PSK信号解调为例说明pskdemod函数指令的使用,直接在MATLAB命令窗口中输入以下程序行得到4PSK信号复包络y4psk:>>s=randi([0,3],1,12)s=330320123303>>y4psk=pskmod(s,4,pi/4)y4psk=1至7列0.7071-0.7071i0.7071-0.7071i0.7071+0.7071i0.7071-0.7071i-0.7071-0.7071i0.7071+0.7071i-0.7071+0.7071i8至12列-0.7071-0.7071i0.7071-0.7071i0.7071-0.7071i0.7071+0.7071i0.7071-0.7071i继续在MATLAB命令窗口中输入以下程序行得到解调出来的符号:>>z=pskdemod(y4psk,4,pi/4)z=330320123303比较解调输出序列z与调制输入序列x,完全相同,这说明4psk信号的解调函数pskdemod的调用是成功的。为了描述数字信号中有用成分(信号)与无用成分(噪声)各自的占比情况,数字通信系统中最常用的指标是。是信号每比特能量的平均值,是噪声单边带功率谱的密度(针对叠加于信号上的),的大小是由信号的发射功率决定,的大小是由信道的噪声决定。10.6数字通信系统性能仿真一、数字信号的比特能量与AWGN信道下面以QPSK(4PSK)信号为例,具体说明如何计算数字信号的比特能量,首先在MATLAB命令窗口中输入以下程序行,产生一列符号是均匀分布的QPSK(4PSK)复包络信号,并绘出其星座图:>>clear;>>s=randi([0,3],1,128);>>yqpsk=pskmod(s,4,pi/4);>>scatterplot(yqpsk,[],[],'b*');>>Es=sum(abs(yqpsk).^2)/length(yqpsk)%求每符号能量的平均值Es=1QPSK信号每符号能量的平均值为“1”,无需再对再做归一化,其值恰好是MATLAB通信工程工具箱里提供了将高斯噪声叠加到信号上的信道函数指令awgn,其使用格式介绍如下:y=awgn(x,snr,sigpower)%将白高斯噪声添加到向量信号x中,标量参数snr指定了每一个采样点信号平均能量与噪声功率谱密度的比值,单位为dB;如果x是复数的,awgn将会添加复数噪声。这个语法假设x的能量是0dBW;参数sigpower也给出了x的能量,单位为dBW;y=awgn(x,snr,'measured')
%功能同上,但不是给出了x的能量,而是在添加噪声之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年新冠疫苗模拟试题及答案详解
- 绿色发展理念下乡村生态空间研究论文
- 2026年用电安全培训模拟试题及答案详解
- 2026年集青海省果洛藏族自治州写字楼消防安全(含答案)
- 2026年消防维保实操题库(含答案)
- 2026年铣工中级工模拟试题及答案详解
- 2026年高跟鞋设计创新趋势分析报告
- 2026年吉林继续教育公需科目练习题(含答案)
- 2026年中国节能服务行业发展前景与投资预测分析报告
- 主播话术训练标准化运营手册课件
- 酒吧合作协议书模板
- 醋酸来法莫林片-临床药品应用解读
- DGTJ08-2065-2020 住宅二次供水技术标准 附条文说明
- 施工过程各阶段质量安全的保证措施
- 1.2数据的计算课件-高中信息技术必修一
- 数字音频处理器培训课件
- 《钢结构设计原理》课件 第6章 拉弯和压弯构件
- 《宫颈癌的早期诊断》课件
- 气道管理及呼吸支持
- 借款担保人协议书
- DBJ52T 088-2018 贵州省建筑桩基设计与施工技术规程
评论
0/150
提交评论