目录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.信源编码与译码 数字通信系统模型:
信源编码作用:
当信源为模拟信号时,需要用量化的方法,将其转换成数字信号(模拟信号数字化) 优化信息,压缩信息 信源编码的分类:
无失真编码: 只有离散信源可实现,如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:
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(2pi n/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频率:
数字基带仿真: 调制函数: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)