《matlab基础与实例进阶-14》由会员分享,可在线阅读,更多相关《matlab基础与实例进阶-14(39页珍藏版)》请在金锄头文库上搜索。
1、*机械工业出版社Page 1第第1414章章 MATLABMATLAB通信系统仿真通信系统仿真【学习目标】 l了解数字通信系统基本概念 l掌握数字调制/解调及其仿真 l掌握信道编码/译码及其仿真*机械工业出版社Page 2第第1414章章 MATLABMATLAB通信系统仿真通信系统仿真数字通信系统基本概念14.1数字调制/解调及其仿真14.2信道编码/译码及其仿真14.3典型数字通信仿真实例14.4*机械工业出版社Page 314.114.1数字通信系统基本概念数字通信系统基本概念*机械工业出版社Page 414.214.2数字调制数字调制/ /解调及其仿真解调及其仿真14.2.1 脉冲幅度
2、调制(PAM)信号 14.2.2 相位调制(PSK)信号 14.2.3 频率调制信号 14.2.4 连续相位调制信号*机械工业出版社Page 51. 1.脉冲幅度调制(脉冲幅度调制(PAMPAM)信号)信号*机械工业出版社Page 61. 1.脉冲幅度调制(脉冲幅度调制(PAMPAM)信号)信号参数名称参数值 M-ary number(M维数)4 Initial seed(初始化种子)37Sample time(采样时间)0.01Random Integer Generator(随机整数发生器)的主要参数M-PAM调制和解调器的主要参数参数名称参数值M-ary number(M维数)4Mini
3、mum distance (最小距离)2Constellation ordering(星座顺序)Binary*机械工业出版社Page 71. 1.脉冲幅度调制(脉冲幅度调制(PAMPAM)信号)信号AWGN Channel(高斯白噪声信道)的主要参数Discrete-Time Scatter Plot Scope(离散时间星座仪)的主要参数参数名称参数值Initial seed(初始化种子)67Es/No(dB)(信噪比)25Symbol period(符号周期)1参数名称参数值 Samples per symbol(每符号采样)1 Offset(samples)(偏置)0 Points di
4、splayed(显示点数)1000 New points per display(每次显示的新迹 )500*机械工业出版社Page 81. 1.脉冲幅度调制(脉冲幅度调制(PAMPAM)信号)信号Error Rate Calculation(误码率计算)的主要参数参数名称参数值 Receive delay(接收延迟)0 Computation delay(计算延迟)0 Computation mode(计算模式)Entire frame Output data(输出数据)port*机械工业出版社Page 92.2.相位调制(相位调制(PSKPSK)信号)信号*机械工业出版社Page 102.2
5、.相位调制(相位调制(PSKPSK)信号)信号M-PSK Modulator Baseband(M-PSK基带调制器)的主要参数参数名称参数值 M-ary number(M维数)8 Phase offset(rad)(相位偏差)pi/8 Constellation ordering(星座顺序)Binary Input type(输入类型)Integer*机械工业出版社Page 113.3.频率调制信号频率调制信号*机械工业出版社Page 123.3.频率调制信号频率调制信号Bernoulli Binary Generator(伯努利二进制随机数产生器)的主要参数参数名称参数值 Probabil
6、ity of a zero(0出现的概率)0.5 Initial seed(初始化种子)61 Sample time(采样时间)0.1 Frame-based output(基于帧输出)使能 Samples per frame(每帧采样数)10M-FSK Modulator Baseband(MFSK基带调制器)的主要参数参数名称参数值 M-ary number(M维数)4 Input type(输入类型)Bit Symbol set ordering(符号顺序)Binary Frequency separation(Hz)(频率间隔)10 Phase continuity(相位连续性)Dis
7、continuous Samples per symbol(每符号采样数)16*机械工业出版社Page 134. 4.连续相位调制信号连续相位调制信号*机械工业出版社Page 144. 4.连续相位调制信号连续相位调制信号GMSK Modulator Baseband(GMSK基带调制器)的主要参数参数名称参数值 Input type(输入类型)Bit BT product(BT乘积)0.3 Pulse length(symbol intervals)(符号间隔 )3Symbol prehistory(符号前史)1 Phase offset(rad)(相位偏置)0 Samples per sy
8、mbol(每符号采样数)16*机械工业出版社Page 1514.314.3信道编码信道编码/ /译码及其仿真译码及其仿真14.3.1 线性分组码 14.3.2 循环码 14.3.3 卷积码*机械工业出版社Page 161线性分组码MATLAB中使用encode、decode可以实现线性分组码的编 译码。encode函数的语法形式如下: code = encode(msg,n,k,linear/fmt,genmat) code = encode(msg,n,k,cyclic/fmt,genpoly) code = encode(msg,n,k,hamming/fmt,prim_poly) cod
9、e = encode(msg,n,k) code,added = encode(.) 使用encode可以实现线性分组码、循环码、汉明码的编码 。*机械工业出版社Page 171线性分组码函数参数的含义如下:msg:信息序列,可以是二进制行或列向量,也可以 是二进制矩阵,也可以是十进制行或列向量;n,k:分别为码长和信息分组长度;fmt:表示编码进制数,默认为二进制(binary);genmat:表示线性分组码的生成矩阵;genpoly:表示循环码的生成多项式,可以由函数 cyclpoly(n,k)实现;prim_poly:表示采用汉明编码时的本原多项式,可以 由函数gfprimdf(n-k)
10、实现。*机械工业出版社Page 181线性分组码【例10-1】encode函数使用示例:采用三种不同的格式( 二进制向量、二进制矩阵以及十进制向量)生成(7,4)汉 明码。 clc;clear all;close all; m = 3; n = 2m-1; %码长 = 7 k = 2m-1-m; %信息分组长 =4 % 生成50个信息分组,每个分组k比特 msg1 = randint(50*k,1,0,1); % 列向量 msg2 = vec2mat(msg1,k); % 转换为k维列向量的矩阵 msg3 = bi2de(msg2); % 转换为十进制整数的行向量*机械工业出版社Page 19
11、1线性分组码% 生成50个码字,每个码字n比特 code1 = encode(msg1,n,k,hamming/binary); code2 = encode(msg2,n,k,hamming/binary); code3 = encode(msg3,n,k,hamming/decimal); % 判断三种方法生成的码字是否相同 if ( vec2mat(code1,n)=code2 clear all;close all; n = 15; k = 4; genpoly=cyclpoly(n,k,max); % 构造循环码多项式 msg = randint(100,k,0,1); % 100个
12、信息分组 code = encode(msg,n,k,cyclic/binary,genpoly); noisycode = rem(code + randerr(100,n,0 1;.7 .3), 2); % 加噪声 newmsg = decode(noisycode,n,k,cyclic); %译码 number,ratio = biterr(newmsg,msg); % 计算误码率 disp(The bit error rate is ,num2str(ratio)*机械工业出版社Page 222循环码lBCH码 bchenc函数的语法形式如下: code = bchenc(msg,n,
13、k) code = bchenc(.,paritypos) 这两个函数可以用于生成 BCH码,其中msg的数据结构必 须为Galois array。 与bchenc相对应的函数是bchdec,函数的语法形式如下: decoded = bchdec(code,n,k) decoded,cnumerr,ccode = bchdec(.) cnumerr:表示与code相对应的纠正的错误个数; ccode:表示经过错误纠正后的码字; decoded:表示返回的译码结果。*机械工业出版社Page 232循环码【例10-4】BCH码编译码仿真示例。 clc;clear all;close all; m
14、= 4; n = 2m-1; % 码字长度 k = 5; % 信息符号长度 nwords = 10; % 编码个数 msg = gf(randint(nwords,k); genpoly,t = bchgenpoly(n,k); % 获得生成多项式及相 应的纠错能力t t2 = t; code = bchenc(msg,n,k); % 编码 noisycode = code + randerr(nwords,n,1:t2); % 对每个 码字加t2比特错误*机械工业出版社Page 242循环码newmsg,err,ccode = bchdec(noisycode,n,k); % 译码 if c
15、code=codedisp(All errors were corrected.) end if newmsg=msgdisp(The message was recovered perfectly.) end*机械工业出版社Page 252循环码【例10-5】RS码编译码仿真示例。 m = 3; % 每符号比特数 n = 2m-1; k = 3; % 码字长度和信息长度 t = (n-k)/2; % rs码的纠错能力 nw = 4; % 码字个数 msgw = gf(randint(nw,k,2m),m); % 生成随机信息符号 c = rsenc(msgw,n,k); % 编码 noise = (1+randint(nw,n,2m-1).*randerr(nw,n,t); cnoisy = c + noise; % 加噪声 dc,nerrs,corrcode = rsdec(cnoisy,n,k); % 译码 isequal(dc,msgw) cle