MATLAB通信系统建模

Posted 364.99°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB通信系统建模相关的知识,希望对你有一定的参考价值。

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) < sig(k) ≤ partition(m+1)m
partition(n) < sig(k)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,'am');
subplot(2,1,1);
plot(y1)
subplot(2,1,2);
x2=demod(y1,Fc,Fs,'am');
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('SampleRate',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)


以上是关于MATLAB通信系统建模的主要内容,如果未能解决你的问题,请参考以下文章

数学建模基于matlab改进量子行为的粒子群算法机组燃烧控制系统建模含Matlab源码 1609期

数学建模基于matlab单列多服务台排队系统仿真含Matlab源码 1698期

数学建模基于matlab GUI彩票仿真系统含Matlab源码 1501期

数学建模基于matlab贫困生评测系统含Matlab源码 1744期

数学建模基于matlab GUI雾霾分析仿真系统含Matlab源码 1503期

如何查看MATLAB到底有哪些库,MATLAB到底有哪些库?