基于调制误差比的自适应调制matlab仿真,自适应调制包括4QAM,16QAM和64QAM
目录
1.算法仿真效果
matlab2022a仿真结果如下:
2.MATLAB核心程序
............................................................................
%% Run
% Msg
MyMsgCount = 0; % 文本指针,为上一帧数据发送的最后一个字符
msg = zeros(196,1);
for count = 1:FrameCount
% Tx
msg_pre = msg;
% Modulation Adaptive
if MER<ModAdpThres(1)
M = 4; % 调制阶数
MessageLength = (FrameSize-BarkerLength)*2; % 信息比特数
msgBin = [MyMsgBits;MyMsgBits]; % 循环发送文本
msgBin = msgBin(MyMsgCount+1:MyMsgCount+MessageLength,1);
% 接着上一帧发
msg = double(msgBin);
scrambledData = step(pScrambler, msg); % 扰码
modulatedData = step(p4QAMModulator, scrambledData); %信息调制
elseif MER<ModAdpThres(2)
M = 16;
MessageLength = (FrameSize-BarkerLength)*4;
msgBin = [MyMsgBits;MyMsgBits];
msgBin = msgBin(MyMsgCount+1:MyMsgCount+MessageLength,1);
msg = double(msgBin);
scrambledData = step(pScrambler, msg);
modulatedData = step(p16QAMModulator, scrambledData);
else
M = 64;
MessageLength = (FrameSize-BarkerLength)*6;
msgBin = [MyMsgBits;MyMsgBits];
msgBin = msgBin(MyMsgCount+1:MyMsgCount+MessageLength,1);
msg = double(msgBin);
scrambledData = step(pScrambler, msg);
modulatedData = step(p64QAMModulator, scrambledData);
end
MyMsgCount = mod(MyMsgCount+MessageLength,MyMsgStrLength*7);
transmittedData = [ModulatedHeader; modulatedData]; % 组帧
transmittedSignal=step(pTransmitterFilter,transmittedData);%成型滤波+上采样
% Channel
pAWGNChannel = comm.AWGNChannel( ...
'NoiseMethod','Signal to noise ratio (SNR)', ...
'SNR', SNRs(count)); % 信道
corruptSignal = step(pAWGNChannel, transmittedSignal); % 经过信道
% Rx
AGCSignal=1/sqrt(UpsamplingFactor)*step(pAGC,corruptSignal);%自动能量控制
RCRxSignal = step(pRxFilter, AGCSignal); % 匹配滤波+下采样
[timingRecSignal,~] = step(pTimingRec, RCRxSignal); % 符号同步
[symFrame,isFrameValid] = step(pFrameSync, timingRecSignal); % 帧同步
if isFrameValid
phaseEst = round(angle(mean(conj(ModulatedHeader) ...
.* symFrame(1:BarkerLength)))*2/pi)/2*pi;
phShiftedData = symFrame .* exp(-1i*phaseEst);
HeaderSymbols = phShiftedData(1:13); % 头部符号
if mod(count,FramePerMER) == 0
MER = pMER(ModulatedHeader,HeaderSymbols); % 计算MER
end
MsgSymbols = phShiftedData(13+1:13+MessageLength/log2(M)); % 信息符号
if M == 4
demodOut = step(p4QAMDemodulator, MsgSymbols); % 解调
elseif M == 16
demodOut = step(p16QAMDemodulator, MsgSymbols);
else % M == 64
demodOut = step(p64QAMDemodulator, MsgSymbols);
end
deScrData = step(pDescrambler,demodOut);
if printOption
disp(bits2ASCII(msg_pre)); % 显示发送信息
disp(bits2ASCII(deScrData)); % 显示接收信息
end
if size(msg_pre) == size(deScrData)
BER = step(pErrorRateCalc, msg_pre, deScrData); % 计算BER
else
BER = [0.5 0 0];
end
Mods(count) = M;
BERs(count) = BER(1);
MERs(count) = MER;
end
if useScopes % 画这一帧数据的星座图,并调整参考星座点
if M == 4
pRxConstellation.ReferenceConstellation = ...
[sqrt(1/2)*(1+1i)*[-1 1], ...
reshape((repmat([-1 1],2,1)-1i* ...
repmat([-1 1],2,1)')*sqrt(1/2),1,4)];
elseif M == 16
pRxConstellation.ReferenceConstellation = ...
[sqrt(1/2)*(1+1i)*[-1 1], ...
reshape((repmat([-3 -1 1 3],4,1)-1i* ...
repmat([-3 -1 1 3],4,1)')*sqrt(1/10),1,16)];
else % M == 64
pRxConstellation.ReferenceConstellation = ...
[sqrt(1/2)*(1+1i)*[-1 1], ...
reshape((repmat ([-7 -5 -3 -1 1 3 5 7],8,1)-1i* ...
repmat([-7 -5 -3 -1 1 3 5 7],8,1)')*sqrt(1/42),1,64)];
end
step(pRxConstellation,RCRxSignal);
................................................................
A388
3.算法涉及理论知识概要
自适应调制编码技术的核心思想是:在不牺牲误比特率性能(比如BER)的前提下,根据无线通信环境和QoS要求,通过动态的改变发送端的发送功率、波特率、星座图的大小、编码方案、码率等,或者是综合改变前面所述的各种参数,在较好的无线信道条件下获得较大的吞吐量;而当无线信道质量下降时,相应地降低传输速率,最终达到提高系统资源的利用率,获得较高的系统吞吐量和容量的目的。研究显示,几乎在各种衰落信道下,速率自适应与恒定速率下的功率自适应相比,前者能够更好的提高系统吞吐量。因此,在许多无线分组数据传输系统的国际标准中都采用了自适应调制编码技术,例如作为WCDMA增强技术的高速下行分组接入系统(HSDPA)、无线局域网(WLAN)标准802.11a,以及宽带无线接入系统IEEE802.16等都建议采用自适应调制编码技术来提高系统的吞吐量以及频谱效率。
mer指的是调制误差比,TR101 290标准是用来描述DVB系统的测量准则。在标准中,调制误差比(MER)指的是被接收信号的单个“品质因数”(figure of merit)。MER往往作为接收机对传送信号能够正确解码的早期指示。事实上,MER是用来比较接收符号 (用来代表调制过程中的一个数字值)的实际位置与其理想位置的差值。当信号逐渐变差时,被接收符号的实际位置离其理想位置愈来愈远,这时测得的MER数值也会渐渐减小。一直到最后,该符号不能被正确解码,误码率上升,这时就处于门限状态即崩溃点。
其中,I和Q是理想的QAM接收机相位图中的数据点,δI和δQ是由损伤引起的接收的数据点和理想的QAM相位图的点的误差,N是在数据抽样中捕获的点数。上式中的N是数据抽样的大小,他一般比相位图中的点数多,为了能捕获到具有代表性的抽样。换句话说,它是测量由任何损伤合法设计与理想的相位图点的位置相比的道德不理想导致的相位图族的变化。在测量时,矢量分析仪首先对被测量数字调制信号进行接收和采样,调整信号经解调后于基准矢量信号进行比较。被测矢量信号与基准矢量信号之间的差矢量信号被称为误差矢量信号,有误差矢量信号中既包含幅度误差信息,也包含相位误差信息。在干扰小的时候MER变化缓慢,随着干扰的增大,当出现误码率时,MER变化很快。MER可以被认为是信噪比测量的一种形式,它将精确表明接收机对信号的解调能力,因为它不仅包括高斯噪声,而且包括接收星座图上所有其它不可校正的损伤。如果信号中出现的有效损伤仅仅是高斯噪声,那么MER等于S/N。即:
4.完整MATLAB
V
相关文章
- matlab图像处理初步,MATLAB数字图像处理初步「建议收藏」
- matlab 求矩阵秩,用MATLAB编程求矩阵的秩
- 基于matlab的Canny算法的边缘检测(附源代码)
- 扩频调制matlab仿真
- matlab axis画圆,使用MATLAB中axis实现图形坐标控制-Go语言中文社区
- 矩阵的模的平方matlab,matlab求矩阵、向量的模
- matlab怎么对语音信号处理,语音信号处理MATLAB程序
- 如何用matlab编写分段函数_请教各位怎样用matlab定义一个分段函数MATLAB分段函数…[通俗易懂]
- 最短路径Dijkstra算法原理及Matlab实现「建议收藏」
- matlab interp1db,matlab – Matlab interp1图出现数据偏移 – 堆栈内存溢出
- matlab 矩阵除法
- 【DSP视频教程】DSP视频教程第9期:基于Matlab的WiFi无线固件升级玩法(2022-07-02)
- MATLAB求解线性规划(含整数规划和0-1规划)问题[通俗易懂]
- 浪漫公式 Love 分段函数和各种心型函数 matlab实现
- 基于matlab的声源定位系统_matlab电流源在哪
- matlab读取txt文件数据_matlab怎么输入数据
- matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类|附代码数据
- 基于matlab的机械臂仿真_移动机器人matlab运动学仿真
- 基于matlab直方图均衡,matlab 直方图均衡实验报告.pdf「建议收藏」
- matlab 汽车振动,matlab在汽车振动分析
- 用matlab导入excel数据画图_matlab导入数据并绘图
- 基于matlab的振动模态分析_matlab动力学分析
- matlab 加权回归估计_Matlab:地理加权回归基本操作「建议收藏」
- 如何利用matlab画三维图_平面图怎么画
- matlab实现形态学图像处理
- Matlab决策树对空气质量和天气温度及天气数据做交通出行推荐预测
- 商业数学分析软件Matlab最新中文版,Matlab分析软件安装教程下载
- MATLAB仿真-在频谱上显示内插和抽取效果
- matlab数据如何利用MongoDB管理MATLAB数据?(mongodb管理)