MATLAB通信系统建模
Posted 364.99°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB通信系统建模相关的知识,希望对你有一定的参考价值。
目录
1.信源编码与译码
数字通信系统模型:
信源编码作用:
- 当信源为模拟信号时,需要用量化的方法,将其转换成数字信号(模拟信号数字化)
- 优化信息,压缩信息
信源编码的分类:
无失真编码: 只有离散信源可实现,如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:
am | amssb | fm | pm | qam | pwm |
---|---|---|---|---|---|
抑制载波双边带调制 | 抑制载波单边带调制 | 频率调制 | 相位调制 | QAM调制 | 脉冲宽度调制 |
2.2.2.解调函数
y = demod(x,Fc,Fs,method…)
x: 输入信号
Fc: 载波频率
Fs: 采样频率
method:
am | amssb | fm | pm | qam | pwm |
---|---|---|---|---|---|
抑制载波双边带调制 | 抑制载波单边带调制 | 频率调制 | 相位调制 | 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频率:
f1 | f2 | f3 | f4 |
---|---|---|---|
00 | 01 | 10 | 11 |
数字基带仿真:
调制函数: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期