热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MATLAB通信系统建模

目录1.信源编码与译码1.1.量化标量量化1.2.编码与译码1.1.1.预测编码1.1.2.解码函数1.2.3.训练数据优化差分脉冲调制参数2.调制解调分析2.1.模拟调制与解调简


目录

  • 1.信源编码与译码
    • 1.1.量化
      • 标量量化
    • 1.2.编码与译码
      • 1.1.1.预测编码
      • 1.1.2.解码函数
      • 1.2.3.训练数据优化差分脉冲调制参数
  • 2.调制解调分析
    • 2.1.模拟调制与解调简介
      • 2.1.1.双边幅度调制(DSB-AM)与解调
      • 2.1.2.单边幅度调制(SSB-AM)与解调
      • 2.1.3.常规幅度调制(AM)
      • 2.1.4.频率调制(FM)
      • 2.1.5.相位调制(PM)
    • 2.2.模拟调制/解调函数
      • 2.2.1.调制函数
      • 2.2.2.解调函数
      • 2.2.3.通带模拟调制/解调函数
    • 2.3.数字调制与解调
      • 2.3.1.正交幅度调制(M-QAM)
      • 2.3.2.M元频率键控调制(M-FSK)


1.信源编码与译码

数字通信系统模型:
在这里插入图片描述



信源编码作用:


  1. 当信源为模拟信号时,需要用量化的方法,将其转换成数字信号(模拟信号数字化)
  2. 优化信息,压缩信息


信源编码的分类:


无失真编码: 只有离散信源可实现,如Huffman编码
限失真编码: 连续信号的信源编码都为限失真编码,例如预测编码




信道编码:

    为了对抗信道中的噪音和衰减,通过增加冗余,如校验码等,来提高抗干扰能力以及纠错能力



对输入模拟信号进行数字化:

过程:


抽样: 在时间上将连续模拟信号离散化,其取值依然是连续的
量化: 用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值
编码: 按照一定的规律,把量化后的信号值用二进制或者多进制数字表示,构成数字信号流



1.1.量化

在这里插入图片描述


标量量化

1.信源编码中的μ律/A律压缩和扩展:

out = compand(in, param, V, method)


param: μ值或A值
V: 峰值
method: 压扩方式


method:


‘mu/compressor’‘mu/expander’‘A/compressor’‘A/expander’
μ律压缩μ律扩展A律压缩A律扩展

例: 使用μ率压缩数据data = 2:2:20;μ=255

data=2:2:20;
compressed = compand(data,255,max(data),'mu/compressor')

例: 使用A率压缩数据data = 2:2:20;A = 87.6

data=2:2:20;
compressed = compand(data,87.6,max(data),'A/compressor')

2.产生量化索引和量化输出值的函数

[index,quants,distor] = quantiz(sig,partition,codebook)


sig: 输入信号
partition: 1×n向量,表示量化区间边界
codebook: 每个量化区间对应的量化值(可省略)

index: 每个信号sig样值对应的量化区间索引
quants: 量化后的信号(可省略)
    quants(ii) = codebook(index(ii)+1);
distor: 量化误差的均方根(可省略)



sig(k)Index(k)
sig(k) ≤ partition(1)0
partition(m) m
partition(n) n

例:

[index,quants] = quantiz([3 34 84 40 23],10:10:90,10:10:100)

3.采用训练序列和Lloyd算法优化标量量化的函数lloyds()

[parition, codebook] = lloyds(training_set, ini_codebook)
[partition,codebook] = lloyds(training_set,len)

用训练集矢量training_set优化标量量化参数partition和码本codebook


training_set: 训练集矢量
ini_codebook: 码本codebook的初始值,它们长度相同
len: 整数,表明码本codebook的长度

partition: 优化标量量化参数
codebook: 码本
使用优化的参数进行量化,量化误差小于1E-7


例:

d=[3 34 84 40 23]
[partition,codebook] = lloyds(d,5)


1.2.编码与译码


1.1.1.预测编码

差分脉冲调制编码函数
indx = dpcmenco(sig, codebook, partition, predictor)
[indx,quants] = dpcmenco(sig,codebook,partition,predictor)


原理: 根据前一个信号抽样值,利用预测器得出一个预测值,再取当前抽样值和预测值之差作编码


sig: 输入信号
partition: 量化区间边界
codebook: 量化码本
predictor=[0, t1,…, tm]: 预测器传递函数系数矩阵,对应预测器传递函数为,y(k) = t1x(k-1) + t2x(k-2) + … + tmx(k-m)

indx: DPCM编码的编码索引
quants: 信号量化值



1.1.2.解码函数

信源编码中的DPCM解码函数
sig = dpcmdeco(indx, codebook, predictor)
[sig,quanterror] = dpcmdeco(indx,codebook,predictor)


indx: DPCM编码的编码索引

codebook: 码本
predictor=[0, t1,…, tm]: m阶预测器传递函数系数矩阵

sig: 解码信号
quanterror: 量化预测误差(与sig维数和长度相同)


例: 运用DPCM进行编码与解码predictor : y(k)=x(k-1)

predictor = [0 1]; % y(k)=x(k-1)
partition = [-1:.1:.9];
codebook = [-1:.1:1];
t = [0:pi/50:2*pi];
x = sawtooth(3*t); % Original signal
encodedx = dpcmenco(x,codebook,partition,predictor);
decodedx = dpcmdeco(encodedx,codebook,predictor);
plot(t,x,t,decodedx,'--')
legend('Originalsignal','Decodedsignal','Location','NorthOutside');


1.2.3.训练数据优化差分脉冲调制参数

predictor = dpcmopt(training_set, ord)
[predictor,codebook,partition] = dpcmopt(training_set,ord,len)
[predictor,codebook,partition] = dpcmopt(training_set,ord,ini_cb)


training_set: 训练数据
len: 整数,决定优化码本codebook矩阵长度

ini_cb: 初始码本,其长度决定优化码本codebook的长度
predictor: 阶数为order的预测器


例: 运用DPCM进行编码与解码

t = [0:pi/50:2*pi];x = sawtooth(3*t); % Original signal
initcodebook = [-1:.1:1]; % Initial guess at codebook
[predictor,codebook,partition] = dpcmopt(x,1,initcodebook);% Quantize x using DPCM.
encodedx = dpcmenco(x,codebook,partition,predictor);% Try to recover x from the modulated signal.
decodedx = dpcmdeco(encodedx,codebook,predictor);
distor = sum((x-decodedx).^2)/length(x) % Mean square error
plot(t,x,t,decodedx,'--')
legend('Originalsignal','Decodedsignal','Location','NorthOutside');


2.调制解调分析

在这里插入图片描述


2.1.模拟调制与解调简介

在这里插入图片描述


2.1.1.双边幅度调制(DSB-AM)与解调


消息信号: m(t)
载波: c(t) = Ac cos(2π fc t)
DSB-AM调制: u(t) = m(t)c(t) = Ac m(t)cos(2π fc t)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



2.1.2.单边幅度调制(SSB-AM)与解调

单边SSB幅度调制占有DSB-AM的一半的带宽


消息信号: m(t)
载波: c(t) = Ac cos(2π fc t)
SSB-AM调制:
在这里插入图片描述
希尔伯特变换:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



2.1.3.常规幅度调制(AM)

无直流的消息信号:m(t),|m(t)| <1
[1 + a * m(t)] = [直流 + a*交流]


载波: c(t) = Ac cos(2π fc t)
常规AM调制: u(t) = [1 + a * m(t)] * c(t)
常规AM解调: 包络检波 或者 SSB-AM解调



2.1.4.频率调制(FM)

FM调制为等振幅调制


FM信号:
在这里插入图片描述
kc: 比例常数,称为调频灵敏度
m(t): 消息信号
在这里插入图片描述



2.1.5.相位调制(PM)

PM调制为等振幅调制


PM信号:
在这里插入图片描述
kc: 比例常数,称为调相灵敏度
m(t): 消息信号
在这里插入图片描述
窄带调相时(最大相移小于π/6):
在这里插入图片描述



2.2.模拟调制/解调函数


2.2.1.调制函数

y = modulate(x,Fc,Fs,method…)


x: 输入信号
Fc: 载波频率
Fs: 采样频率


method:


amamssbfmpmqampwm
抑制载波双边带调制抑制载波单边带调制频率调制相位调制QAM调制脉冲宽度调制

2.2.2.解调函数

y = demod(x,Fc,Fs,method…)


x: 输入信号
Fc: 载波频率
Fs: 采样频率


method:


amamssbfmpmqampwm
抑制载波双边带调制抑制载波单边带调制频率调制相位调制QAM调制脉冲宽度调制

例: 正弦信号x(n)=sin(2pin/256),n=[0:256],载波f=100000Hz,抽样频率为1000000Hz进行调幅,画出图形

n=[0:256];Fc=100000;Fs=1000000;
xn=sin(2*pi*n/256);
y1=modulate(xn,Fc,Fs,&#39;am&#39;);
subplot(2,1,1);
plot(y1)
subplot(2,1,2);
x2=demod(y1,Fc,Fs,&#39;am&#39;);
plot(x2)


2.2.3.通带模拟调制/解调函数


双边带调幅单边带调幅频率调制相位调制
y = ammod(x,Fc,Fs)
z = amdemod(y,Fc,Fs)
y = ssbmod(x,Fc,Fs)
z = ssbdemod(y,Fc,Fs)
y = fmmod(x,Fc,Fs,freqdev)
z = fmdemod(y,Fc,Fs,freqdev)
y = pmmod(x,Fc,Fs,phasedev)
z=pmdemod(y,Fc,Fs,phasedev)

2.3.数字调制与解调

在这里插入图片描述


2.3.1.正交幅度调制(M-QAM)

星座图:


在这里插入图片描述
I路信号为横轴Q路信号为虚轴
M-QAM信号映射可按星座图进行映射。
M-QAM星座图包含M个点,代表不同复数,M必须设为一个偶数


QAM调制信号:

调制:y = qammod(x,M,iniPhase, symOrder)
解调:z = qamdemod(y,M,iniPhase, symOrder)


iniPhase: 初始相位;
symOrder:‘gray’映射/自然二进制映射


M=16
Data=randi([0,M-1],1000,1);
Txsig=qammod(Data,M);
scatterplot(Txsig)


2.3.2.M元频率键控调制(M-FSK)

通过使用输入信号控制输出信号的频率来实现对数字信号的调制,输入的bit数据映射成为不同的频率

4-FSK频率:


f1f2f3f4
00011011

数字基带仿真:
调制函数:y = fskmod(x,M,freqsep,nsamp,Fs);
解调函数:x = fskdemod(y,M,freqsep,nsamp,Fs);


x: bit数据映射成的 [0,M-1]间的整数
M: 使用频率的个数,其频率间隔为Freqsep
freqsep: 频率间隔
nsamp: 输入一个符号的抽样点数
Fs: 输出信号采样频率


数字带通仿真:
可使用modulate函数的fm调制

M = 4; % Modulation order
freqsep = 8; % Frequency separation (Hz)
nsamp = 8; % Number of samples per symbol
Fs = 32; % Sample rate (Hz)
x = randi([0 M-1],1000,1);%Generate random M-ary symbols
y = fskmod(x,M,freqsep,nsamp,Fs);
h = dsp.SpectrumAnalyzer(&#39;SampleRate&#39;,Fs);
step(h,y)

数字基带仿真:

M-PSK设置不同的初相移位以区别不同的数字码符,Bit数据首先映射为[0, M-1]间的整数,整数i对应的相位位移为 2πi/M

调制函数:y = pskmod(x,M,ini_phase, symorder);
解调函数: z = pskdemod(y,M,ini_phase, symorder);


x: bit数据映射成的 [0,M-1]间的整数;
M: 使用相位的个数,信号初始相位为ini_phase;
symorder: 采用‘Gray’还是自然二进制映射


M=4;Data=randi([0,M-1],1000,1); %产生发送数据
Txsig=pskmod(Data,M,pi/M);
Rxsig=awgn(Txsig,20) %通过一个20dB信噪比AWGN信道
scatterplot(Rxsig)




推荐阅读
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
author-avatar
昀尧约_146
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有