基于MIMO-NOMA的可见光通信系统性能分析(Matlab代码实现)

文章探讨了在多输入多输出(MIMO)的可见光通信(VLC)系统中应用非正交多址(NOMA)技术,特别是提出了一种归一化增益差功率分配(NGDPA)方法,以提高2×2MIMO-VLC系统的可实现总和速率。通过数值模拟,证明了NOMA和NGDPA能显著提升系统性能,降低了复杂度,适用于室内通信环境。
摘要由CSDN通过智能技术生成

👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 文献来源

🌈4 Matlab代码实现


💥1 概述

在本文中,我们应用非正交多址(NOMA)技术来提高基于多输入多输出(MIMO)的多用户可见光通信(VLC)系统的可实现总和率。为了保证基于MIMO-NOMA的室内VLC系统的高效、低复杂度的功率分配,该文首先利用用户的信道条件,提出了一种归一化增益差功率分配(NGDPA)方法。我们通过数值模拟研究了基于室内2×2 MIMO-NOMA的多用户VLC系统的性能。结果表明,采用NOMA和NGDPA方法可以显著提高2×2 MIMO-VLC系统的可实现和速率。结果表明,采用NOMA和NGDPA方法可以显著提高2×2 MIMO-VLC系统的可实现和速率。

白光发光二极管(LED)具有免许可频谱、低成本前端、高安全性和抗电磁干扰能力强等诸多固有优势,近年来在高速和短距离无线通信中引起了相当大的关注[1]。开发大容量VLC系统的主要挑战是现成LED的小调制带宽。到目前为止,已经提出了一些技术来提高VLC系统的容量,例如正交频分复用(OFDM),多输入多输出(MIMO)等[2][3]。

在实际的VLC系统中,一个LED发射器通常有望支持多个用户。因此,多用户VLC系统中的多路访问是必不可少的。在[4]中,正交频分多址(OFDMA)已应用于VLC系统。然而,由于频谱划分,采用OFDMA的可实现数据速率不可避免地会降低。最近,由于具有卓越的频谱效率,提出了通过电源域多路复用的非正交多址(NOMA)用于5G系统[5]。在NOMA系统中,所有用户都可以通过在发射器侧的电源域叠加编码和接收器侧的连续干扰消除(SIC)来使用系统的整个调制带宽。研究表明,NOMA在高信噪比(SNR)场景中的表现要好得多[6]。考虑到由于发射器和接收器之间的距离较短,VLC 系统提供高 SNR,因此在下行链路 VLC 系统中应用 NOMA 是有益的。基于NOMA的VLC系统的性能已被广泛研究[7]-[10]。在[7]中,作者建议NOMA作为高速VLC系统的潜在候选者,并提出了增益比功率分配(GRPA)方法。[8]和[9]中报道了更先进的NOMA-VLC功率分配方法,但计算复杂度相对较高。在[10]中,提出了一种相位预失真方法,以提高上行链路NOMA-VLC系统的误码率性能。

作为增加系统容量和扩展系统覆盖范围的自然而有效的方法,MIMO已通过利用照明LED阵列[2],[11]在VLC系统中得到广泛应用。然而,NOMA在MIMO-VLC系统中的应用几乎没有被研究过。在[12]中,基于MIMO-NOMA的VLC系统进行了实验验证,但没有考虑功率分配。在应用MIMO时,单LED NOMA-VLC系统的功率分配方法不能直接用于基于MIMO-NOMA的VLC系统。到目前为止,文献中已经提出了几种用于MIMO-NOMA射频(RF)系统的功率分配方法,例如混合预编码和后检测[13]以及信号对齐[14]。然而,这些方法具有很高的计算复杂度。在实际的VLC系统中,计算复杂度低的高效功率分配方法对于MIMO-NOMA技术的潜在广泛应用至关重要。

在这封信中,我们将NOMA应用于MIMO-VLC系统中,并提出了一种新的功率分配方法,即归一化增益差功率分配(NGDPA),用于MIMO-NOMA-VLC系统中高效和低复杂度的功率分配。室内总和速率性能2×2 MIMO-NOMA-VLC系统通过数值模拟进行评估。结果表明,可实现的求和率2×2 与采用GRPA的NOMA相比,采用NOMA和提出的NGDPA方法可以大大改进MIMO-VLC系统。

📚2 运行结果

部分代码:


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Function for the calculation of total noise power %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function noise_power = sigma2_noise(Prx,symbol_rate)

% Parameters
q = 1.6e-19; % Electronic charge
R = 0.53; % Responsivity of PD, A/W

% I_bg = 5100e-6; % Background current: direct sun light without optical filter, A
% I_bg = 1000e-6; % Background current: direct sun light with optical filter, A
% I_bg = 190e-6; % Background current: indirect sun light with optical filter, A
I_bg = 58e-6; % Background current: incandescent light and fluorescent light with optical filter, A

I2 = 0.562; % Noise bandwidth factor
B = symbol_rate; % Equivalent noise bandwidth
k = 1.38e-23; % Boltzmann constant
T = 300; % Kelvin, K
G = 10; % Open loop voltage gain
eta = 112e-12 / 1e-4; % Fixed capacitance, F/m
area_PD = 10^(-4); % Physical area of the PD, 1 cm^2
Gamma = 1.5; % Field-effect transistor (FET) channel noise factor
g_m = 30e-3; % FET transconductance, Siemens
I3 = 0.0868;

%% Total noise power calculation
% Shot noise power
sigma2_shot = 2*q*(R*Prx + I_bg*I2)* B;

% Thermal noise power
sigma2_thermal = 8*pi*k*T*eta*area_PD*B^2*(I2/G + 2*pi*Gamma*eta*area_PD*I3*B/g_m);

% Total noise power
noise_power = sigma2_shot + sigma2_thermal;

🎉3 文献来源

部分理论来源于网络,如有侵权请联系删除。

[1]Chen Chen (2018) MIMO-NOMA based VLC with NGDPA power allocation.

🌈4 Matlab代码实现

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
可见光通信中,MIMO NOMA系统是一种有效的技术,可以利用多个发射和接收天线来提高系统的容量和可靠性。信道估计和串行干扰消除也是必要的技术,可以有效地提高系统的性能。下面是一个MATLAB函数,用于模拟具有信道估计和串行干扰消除的MIMO NOMA系统。 ```matlab function [ber, snr] = mimo_noma_ch_est_sic(sim_runs, nTxs, nRxs, nUsers, modulation, powerAllocation, snrVector) % sim_runs: 模拟次数 % nTxs: 发送天线数量 % nRxs: 接收天线数量 % nUsers: 用户数量 % modulation: 调制方式('BPSK'、'QPSK'、'16QAM'、'64QAM') % powerAllocation: 功率分配方式('Equal'、'WaterFilling'、'ProportionalFairness') % snrVector: 信噪比向量 % 初始化误码率和信噪比向量 ber = zeros(length(snrVector), 1); snr = zeros(length(snrVector), 1); % 设置调制器和解调器 modulator = comm.RectangularQAMModulator('ModulationOrder', 2^length(modulation), 'BitInput', true, 'NormalizationMethod', 'Average power'); demodulator = comm.RectangularQAMDemodulator('ModulationOrder', 2^length(modulation), 'BitOutput', true, 'NormalizationMethod', 'Average power'); % 开始模拟 for i = 1:length(snrVector) % 计算信噪比 currSnr = snrVector(i); % 初始化误码率 currBer = 0; % 开始每一次模拟 for j = 1:sim_runs % 生成随机二进制数据 data = randi([0 1], nUsers, 2^length(modulation)); % 对数据进行功率分配 switch powerAllocation case 'Equal' powerDist = ones(nUsers, 1) / nUsers; case 'WaterFilling' % TODO: 实现水填充功率分配 case 'ProportionalFairness' % TODO: 实现比例公平功率分配 end % 初始化发送和接收矩阵 tx = zeros(nTxs, nUsers); rx = zeros(nRxs, nUsers); % 对每个用户进行编码和发送 for k = 1:nUsers % 对数据进行调制 dataMod = step(modulator, data(k, :)); % 对调制后的数据进行功率归一化 dataMod = dataMod / sqrt(mean(abs(dataMod).^2)); % 对调制后的数据进行幂次分配 dataMod = dataMod * sqrt(powerDist(k)); % 将数据发送到对应的天线 tx(:, k) = dataMod.'; end % 生成信道矩阵 h = (randn(nRxs, nTxs, nUsers) + 1i * randn(nRxs, nTxs, nUsers)) / sqrt(2); % 对每个用户进行接收和解码 for k = 1:nUsers % 对发送的数据进行叠加 interference = sum(tx, 2) - tx(:, k); % 对信道进行估计 estH = channelEstimation(h(:, :, k), currSnr); % 对接收到的信号进行处理 y = estH * tx(:, k) + sum(estH * interference, 2) + sqrt(1 / currSnr) * randn(nRxs, 1); % 对接收到的信号进行解码 dataDemod = step(demodulator, y); % 对解调后的数据进行幂次分配 dataDemod = dataDemod / sqrt(mean(abs(dataDemod).^2)); % 对解调后的数据进行功率乘法 dataDemod = dataDemod * sqrt(powerDist(k)); % 将解调后的数据存储到接收矩阵中 rx(:, k) = dataDemod; end % 对每个用户进行干扰消除和解码 for k = 1:nUsers % 对干扰进行消除 interference = sum(rx(:, [1:k-1 k+1:end]), 2); % 对信道进行估计 estH = channelEstimation(h(:, :, k), currSnr); % 对接收到的信号进行处理 y = estH * rx(:, k) - estH * interference; % 对接收到的信号进行解码 dataDemod = step(demodulator, y); % 计算误码率 currBer = currBer + sum(sum(dataDemod ~= data(k, :))) / (nUsers * length(modulation)); end end % 计算平均误码率和信噪比 ber(i) = currBer / (sim_runs * nUsers); snr(i) = currSnr; end end % 信道估计函数 function estH = channelEstimation(h, snr) % 计算噪声功率 noisePower = 1 / snr; % 生成噪声 noise = sqrt(noisePower / 2) * (randn(size(h)) + 1i * randn(size(h))); % 对接收到的信号进行处理 y = h + noise; % 对接收到的信号进行估计 estH = y ./ h; % 处理估计矩阵中的无穷大和 NaN estH(isinf(estH)) = 0; estH(isnan(estH)) = 0; end ``` 这个函数可以模拟具有信道估计和串行干扰消除的MIMO NOMA系统。您需要指定模拟次数、发送和接收天线数量、用户数量、调制方式、功率分配方式和信噪比向量。函数将生成随机二进制数据,并将其编码、调制和发送到对应的天线。然后,函数将生成随机信道矩阵,并对每个用户进行接收和解码。在解码过程中,函数将对信道进行估计,并对接收到的信号进行干扰消除和解码。最后,函数将计算误码率和信噪比,并返回它们的向量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值