【通信】非正交多址接入(NOMA)和正交频分多址接入(OFDMA)的性能对比附matlab代码

简介: 【通信】非正交多址接入(NOMA)和正交频分多址接入(OFDMA)的性能对比附matlab代码

1 内容介绍

随着移动通信的快速发展,数据流量急剧增长,频谱资源开始日益缺乏,能源消耗也在不断加大,而第五代移动通信(5G)中的非正交多址接入(NOMA)技术正是解决这些问题的关键.在NOMA技术中,通过功率域实现多用户复用并共享相同的频谱资源,在接收端采用串行干扰删除(SIC)技术实现多用户检测.由于功率复用可以区分用户,实现系统容量和频谱效率的提升,因此成为本文研究的重点. 首先,引入NOMA系统下行链路的系统模型,在此模型上以两用户为例验证了NOMA技术相较于正交频分多址接入(OFDMA)技术的性能增益,并总结了NOMA技术的特点优势和应用场景.随后对NOMA中的关键技术进行介绍,重点研究了现有三种经典的功率分配算法.

2 部分代码

clc; close all; clear all;

% addpath('.\comm');

% addpath('.\lte');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Performance comparison of NOMA-OFDM system and      %

% traditional OFDMA system, % Vision 1.0.0, 2017/4/8. %

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%% 参数

order_psk = [2,4,8,16,64];      % PSK符号阶数,2表示BPSK,4表示4PSK,以此类推

for order = 1:length(order_psk)

   sym_total = 2.048e4*52; % 总符号数

   len_turbo = 1280;   % Turbo码长

   bit_total = sym_total * log2(order_psk(order));

   N_ofdma_u1 = 26;    % OFDMA用户1的子载波数

   N_ofdma_u2 = 26;    % OFDMA用户2的子载波数

   p1 = 0.1;           % NOMA用户1的功率

   p2 = 0.9;           % NOMA用户2的功率


   N_ofdm = 64;        % OFDM子载波数

   N_data = 52;        % 数据载波数

   N_GB = [4; 3];      % 载波间隔参数

   N_P = [12; 26; 40; 54]; % 导频参数

   CP = 1/4;           % CP占比


   Ts = 1/10000;

   FD = 500;           % 瑞利信道参数

   SNR = 25:1:60;           % 信噪比


   %% 参数合理性判断

   if (mod(bit_total, len_turbo)~=0)

       error('总比特数必须是Turbo编码长度的整数倍');

   end

   if (mod((3*len_turbo+12)*bit_total/len_turbo, N_data)~=0)

       error('总比特数必须保证OFDM符号完整');

   end

   if (N_ofdma_u1+N_ofdma_u2~=N_data)

       error('OFDMA中两用户的子载波数目之和必须等于数据载波总数');

   end

   if (p1+p2~=1)

       error('功率系数p1与p2之和必须等于1');

   end


   %% 生成两个用户的发射符号序列,加入Turbo编码

   [sym_seq_u1, bit_seq_u1] = data_gen(bit_total, len_turbo, order_psk(order));

   [sym_seq_u2, bit_seq_u2] = data_gen(bit_total, len_turbo, order_psk(order));

   % mean(abs(sym_seq_u1).^2)

   % mean(abs(sym_seq_u2).^2)


   %% NOMA和OFDMA

   sym_seq_noma = noma_enc(sym_seq_u1, sym_seq_u2, p1, p2);

   % mean(abs(sym_seq_noma).^2)

   % 对两用户数据进行NOMA编码

   sym_seq_ofdma = ofdma_enc(sym_seq_u1, sym_seq_u2, N_ofdma_u1, N_ofdma_u2);

   % mean(abs(sym_seq_ofdma).^2)

   % 对两用户数据进行OFDMA编码


   %% OFDM调制

   num_ofdmsym_noma = length(sym_seq_noma)/N_data;

   mod_ofdm_noma = comm.OFDMModulator(...

   'FFTLength',N_ofdm,...

   'NumGuardBandCarriers',N_GB,...

   'PilotInputPort',true,...

   'PilotCarrierIndices',N_P,...

   'NumSymbols',num_ofdmsym_noma,...

   'CyclicPrefixLength',N_ofdm*CP,...

   'InsertDCNull',true);

   % 构造NOMA的OFDM调制器

   num_ofdmsym_ofdma = length(sym_seq_ofdma)/N_data;

   mod_ofdm_ofdma = comm.OFDMModulator(...

   'FFTLength',N_ofdm,...

   'NumGuardBandCarriers',N_GB,...

   'PilotInputPort',true,...

   'PilotCarrierIndices',N_P,...

   'NumSymbols',num_ofdmsym_ofdma,...

   'CyclicPrefixLength',N_ofdm*CP,...

   'InsertDCNull',true);

   % 构造OFDMA的OFDM调制器


   tx_noma = ofdm_tx(sym_seq_noma, mod_ofdm_noma);

   % tx_noma = sym_seq_noma;

   tx_ofdma = ofdm_tx(sym_seq_ofdma, mod_ofdm_ofdma);

   % OFDM调制

   % mean(abs(tx_noma).^2)

   % mean(abs(tx_ofdma).^2)


   for snr = 1:length(SNR)

       %% 瑞利信道

   %     crl = rayleighchan(Ts, FD);

   %     tx_noma = filter(crl, tx_noma);

   %     tx_ofdma = filter(crl, tx_ofdma);

       cawgn = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)');

       cawgn.SNR = SNR(snr);

       rx_noma = step(cawgn, tx_noma);

       rx_ofdma = step(cawgn, tx_ofdma);

       % mean(abs(rx_noma).^2)

       % mean(abs(rx_ofdma).^2)

       % 接收信号经过瑞利信道与加入高斯噪声


       %% OFDM解调

       sym_seq_noma_mat = ofdm_rx(rx_noma, mod_ofdm_noma);

       sym_seq_noma = reshape(sym_seq_noma_mat, numel(sym_seq_noma_mat), 1);

   %     sym_seq_noma = rx_noma;

       sym_seq_ofdma_mat = ofdm_rx(rx_ofdma, mod_ofdm_ofdma);

       sym_seq_ofdma = reshape(sym_seq_ofdma_mat, numel(sym_seq_ofdma_mat), 1);

       % mean(abs(sym_seq_noma).^2)

       % mean(abs(sym_seq_ofdma).^2)


       %% NOMA和OFDMA解码

       if (p1>p2)

           [bit_u1, bit_u2] = noma_dec(sym_seq_noma, len_turbo, order_psk(order), p1, p2);

       else

           [bit_u2, bit_u1] = noma_dec(sym_seq_noma, len_turbo, order_psk(order), p2, p1);

       end


       [n1,r1(order, snr)] = biterr(bit_u1,bit_seq_u1);

       [n2,r2(order, snr)] = biterr(bit_u2,bit_seq_u2);


       % 按照功率顺序解码用户1和用户2的符号序列

       [bit_u11, bit_u22] = ofdma_dec(sym_seq_ofdma, len_turbo, order_psk(order), N_ofdma_u1, N_ofdma_u2);


       [n11,r11(order,snr)] = biterr(bit_u11,bit_seq_u1(1:length(bit_u11)));

       [n22,r22(order,snr)] = biterr(bit_u22,bit_seq_u2(1:length(bit_u22)));

       [r1(order,snr), r2(order,snr), r11(order,snr), r22(order,snr)]

   end

   

end

%

save('ber.mat','r1','r2','r11','r22');

plot_ber(order_psk, SNR, N_data, p1, p2, N_ofdma_u1, N_ofdma_u2);


% rmpath('.\comm');

% rmpath('.\lte');

3 运行结果

4 参考文献

[1]张德坤. 非正交多址系统功率分配及干扰消除算法研究[D]. 哈尔滨工业大学.

博主简介:擅长智能优化算法神经网络预测信号处理元胞自动机图像处理路径规划无人机雷达通信无线传感器等多种领域的Matlab仿真,相关matlab代码问题可私信交流。



相关文章
|
1月前
|
算法 数据安全/隐私保护
基于DVB-T的COFDM+16QAM+LDPC图传通信系统matlab仿真,包括载波同步,定时同步,信道估计
### 简介 本项目基于DVB-T标准,实现COFDM+16QAM+LDPC码通信链路的MATLAB仿真。通过COFDM技术将数据分成多个子载波并行传输,结合16QAM调制和LDPC编码提高传输效率和可靠性。系统包括载波同步、定时同步和信道估计模块,确保信号的准确接收与解调。MATLAB 2022a仿真结果显示了良好的性能,完整代码无水印。仿真操作步骤配有视频教程,便于用户理解和使用。 核心程序涵盖导频插入、载波频率同步、信道估计及LDPC解码等关键环节。仿真结果展示了系统的误码率性能,并保存为R1.mat文件。
127 76
|
2月前
|
资源调度 监控 算法
基于扩频解扩+LDPC编译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统主要用于高质量图像传输,如无人机、视频监控等场景。系统采用QPSK调制解调、扩频技术和LDPC译码,确保复杂电磁环境下的稳定性和清晰度。MATLAB仿真(2022a)验证了算法效果,核心程序包括信道编码、调制、扩频及解调等步骤,通过AWGN信道测试不同SNR下的性能表现。
69 6
基于扩频解扩+LDPC编译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
|
1月前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+LDPC编译码的16QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统主要用于高质量图像传输,适用于无人机、视频监控等场景。系统采用16QAM调制解调、扩频技术和LDPC译码,确保复杂电磁环境下的稳定性和清晰度。MATLAB 2022a仿真结果显示图像传输效果良好,附带的操作视频详细介绍了仿真步骤。核心代码实现了图像的二进制转换、矩阵重组及RGB合并,确保图像正确显示并保存为.mat文件。
53 20
|
2月前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统基于MATLAB 2022a仿真,适用于高要求的图像传输场景(如无人机、视频监控等),采用64QAM调制解调、扩频技术和Turbo译码提高抗干扰能力。发射端包括图像源、64QAM调制器、扩频器等;接收端则有解扩器、64QAM解调器和Turbo译码器等。核心程序实现图像传输的编码、调制、信道传输及解码,确保图像质量和传输可靠性。
59 16
|
2月前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析不同码长,码率,迭代次数以及信道类型对译码性能的影响
本内容介绍基于MATLAB 2022a的低密度奇偶校验码(LDPC)仿真,展示了完整的无水印仿真结果。LDPC是一种逼近香农限的信道编码技术,广泛应用于现代通信系统。BP译码算法通过Tanner图上的消息传递实现高效译码。仿真程序涵盖了不同Eb/N0下的误码率计算,并分析了码长、码率、迭代次数和信道类型对译码性能的影响。核心代码实现了LDPC编码、BPSK调制、高斯信道传输及BP译码过程,最终绘制误码率曲线并保存数据。 字符数:239
82 5
|
2月前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
本文介绍了基于交替最小化(AltMin)算法的混合预编码技术在MIMO系统中的应用。通过Matlab 2022a仿真,展示了该算法在不同信噪比下的性能表现。核心程序实现了对预编码器和组合器的优化,有效降低了硬件复杂度,同时保持了接近全数字预编码的性能。仿真结果表明,该方法具有良好的鲁棒性和收敛性。
56 8
|
2月前
|
算法 数据安全/隐私保护 索引
索引OFDM调制解调系统的matlab性能仿真
本文对m索引OFDM调制解调系统性能进行了仿真分析,增加了仿真图并配有语音讲解视频,使用Matlab2022a完成仿真,代码无水印。研究了OFDM-IM技术,通过激活不同子载波组合传输额外信息,提高频谱效率和降低PAPR。提出了OFDM联合子块索引调制技术(OFDM-JS-IM)和OFDM全索引方法(OFDM-AIM),并通过遗传算法优化子块查找表,有效提升系统性能。提供了核心MATLAB程序示例。
91 3
|
3月前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
92 3
|
2月前
|
算法 数据安全/隐私保护
数字通信中不同信道类型对通信系统性能影响matlab仿真分析,对比AWGN,BEC,BSC以及多径信道
本项目展示了数字通信系统中几种典型信道模型(AWGN、BEC、BSC及多径信道)的算法实现与分析。使用Matlab2022a开发,提供无水印运行效果预览图、部分核心代码及完整版带中文注释的源码和操作视频。通过数学公式深入解析各信道特性及其对系统性能的影响。
|
4月前
|
固态存储
螺旋卫星通信天线设计与有限元分析matlab仿真
本课题研究了尺寸为10cm*10cm*30cm的卫星上搭载的螺旋型天线,工作于UHF频段(1-3GHz)。通过MATLAB2022a进行系统仿真,展示了天线的辐射特性。螺旋天线因其低轴比、宽带宽和紧凑结构而适用于卫星通信。采用有限元法分析天线的电磁性能,计算了天线的关键性能指标,包括S参数、增益、轴比等。

热门文章

最新文章