NOMA vs OMA - Capacity comparison
As a candidate multiple access technology for 5G, non-orthogonal multiple access (NOMA) offers greater transmission capacity than current orthogonal multiple access (OMA) techniques. This increase in achievable rate is possible because NOMA allows simultaneous transmission of multiple user data in the same frequency carrier.
At the transmitter end, the users are multiplexed in the power domain by using superposition coding. At the receiver end, successive interference cancellation (SIC) is carried out to remove interference and to separate the individual user messages.
In this post, we will compare the achievable rate offered by NOMA and OMA schemes.
System model
Let's consider a downlink communication scenario with a base station (BS) and $N$ users. Let $h_i$, denote the channel from the BS to the $i^{th}$ user. There are $N$ such channels, $h_1$, $h_2$, ... $h_N$.
Let us assume that user 1, with channel $h_1$ is farthest from the BS and hence, the weakest user. User 2 is the next and so on. User $N$ is the nearest/strongest user. This means the channel conditions of the users are arranged as follows: $|h_1|^2 < |h_2|^2 < ... |h_N|^2$
Signal model for NOMA
Let $x_1$, $x_2$, ... $x_N$ denote the messages to be transmitted to the users. The BS performs superposition coding with these messages and transmits the following NOMA signal into the channel: $$x_{NOMA} = \sqrt{P}\left(\sqrt{\alpha_1}x_1 + \sqrt{\alpha_2}x_2 + ... \sqrt{\alpha_N}x_N\right)$$
(1)
where $P$ is the total transmit power. $\alpha_1$ ... $\alpha_N$ represent the power allocation coefficients. Since the channels are ordered as $|h_1|^2 < |h_2|^2 < ... |h_N|^2$, the power allocation coefficients must be ordered as $\alpha_1 > \alpha_2 > ... \alpha_N$
We can represent $x_{NOMA}$ concisely as follows: $$x_{NOMA} = \sqrt{P}\sum_{i=1}^{N}\sqrt{\alpha_i}x_i$$
(2)
The received signal at user $i$ is given by, $$y_{i,NOMA} = x_{NOMA}h_i + w_i$$
(3)
where $w_i$ is the AWGN with zero mean and variance = $\sigma^2$.
Substituting for $x_{NOMA}$ from (1), we get, $$y_{i,NOMA} = \sqrt{P}\left(\sqrt{\alpha_1}x_1 + \sqrt{\alpha_2}x_2 + ... \sqrt{\alpha_N}x_N\right)h_i + w_i$$
(4)
Let's examine how (4) will look like for user 1 (the farthest user).
$$y_{1,NOMA} = \sqrt{P}\left(\underbrace{\sqrt{\alpha_1}x_1}_\textrm{desired and dominating} + \underbrace{\sqrt{\alpha_2}x_2 + ... +\sqrt{\alpha_N}x_N}_\textrm{interference}\right)h_1+ w_1$$
(5)
What is the decoding rule for user 1?
Since user 1 is allocated the highest amount of power, the message intended for him will be dominating in the received signal. So, he just performs direct decoding, treating the messages intended for all other users as interference. Thus, the SINR for decoding user 1's signal is given by, $$\gamma_{1,NOMA}= \dfrac{\alpha_1P|h_1|^2}{\alpha_2P|h_1|^2+\alpha_3P|h_1|^2+...+\alpha_NP|h_1|^2+\sigma^2}$$
(6)
Next, let's look at user 2's received signal,
$$y_{2,NOMA} = \sqrt{P}\left(\underbrace{\sqrt{\alpha_1}x_1}_\textrm{undesired but dominating} + \underbrace{\sqrt{\alpha_2}x_2}_\textrm{desired}+\underbrace{ ... \sqrt{\alpha_N}x_N}_\textrm{interference}\right)h_2 + w_2$$
(7)
What is the decoding rule for user 2?
Since the user 1 is allocated the highest power, his message will be dominating the received signal of all the other users. So, first user 2 should directly decode user 1's message, then perform SIC to remove it from $y_{2,NOMA}$. If the SIC operation is perfect, the resulting signal would be, $$y'_{2,NOMA} = \sqrt{P}\left( \underbrace{\sqrt{\alpha_2}x_2}_\textrm{desired and dominating}+ \underbrace{ ... \sqrt{\alpha_N}x_N}_\textrm{interference}\right)h_2 + w_2$$
(8)
After SIC, user 2's required message is the dominating term. So, now user 2 can directly decode his message from $y'_{2,NOMA}$ by treating all the remaining users' messages as interference. Thus, the SINR at user 2 to decode his own message is given by, $$\gamma_{2,NOMA} = \dfrac{\alpha_2P|h_2|^2}{\alpha_3P|h_2|^2+...+\alpha_NP|h_2|^2+\sigma^2}$$
(9)
We can extend the same thought process to obtain the decoding rule for users 3, 4 and so on. For example, user 3 has to first decode user 1's signal, perform SIC to eliminate it, then decode user 2's signal, perform SIC again, and then decode his own signal.
In general, for any user $i$, the SINR to decode his own signal is given by, $$\gamma_{i,NOMA} = \dfrac{\alpha_iP|h_i|^2}{\alpha_{i+1}P|h_{i}|^2+...+\alpha_NP|h_i|^2+\sigma^2}$$
(10)
This expression can be concisely written as, $$\gamma_{i,NOMA} = \dfrac{\alpha_iP|h_i|^2}{\sum_{j=i+1}^{N}\alpha_jP|h_i|^2 +\sigma^2}$$
(11)
The achievable rate for any general user $i$ can be written as, $$R_{i,NOMA} = log_2(1 + \gamma_{i,NOMA})$$
(12)
Finally, the sum rate of all the NOMA users is given by, $$R_{NOMA} = \sum_{i=1}^{N}R_{i,NOMA}$$
(13)
Signal model for OMA
Next, let's take a look at normal OMA transmission, As an example, let's consider TDMA. To serve $N$ users, TDMA requires $N$ time slots. In the first time slot, user 1's signal is transmitted, in the second time slot, user 2's signal is transmitted and so on. Also, let's assume that all the time slots are of equal duration. Let's say, in the $i^{th}$ time slot, user $i$'s signal is transmitted. Then, the transmit signal is given by, $$x_{i,OMA} = \sqrt{P}x_i$$
(14)
Comparing equations (1) and (13), we see that NOMA has the advantage of simultaneous transmission with controllable interference, while OMA users enjoy interference-free reception. The received signal at user $i$ will be, $$y_{i,OMA} = \sqrt{P}x_ih_i + w_i$$
(15)
Now, the SNR of the $i^{th}$ OMA user is given by, $$\gamma_{i,OMA} = \dfrac{P|h_i|^2}{\sigma^2}$$
(16)
The achievable rate for the $i^{th}$ OMA user is given by, $$R_{i,OMA} = \dfrac{1}{N}log_2(1 + \gamma_{i,OMA})$$
(17)
Finally, the sum rate of OMA is given by, $$R_{OMA} = \sum_{i=1}^{N}R_{i,OMA}$$
(18)
MATLAB SIMULATION
Now that we have the mathematical expressions, let's plot a graph to compare the capacity of OMA and NOMA. Let us consider a network with $N=3$ users and compare their performance. The capacity plots look like this:
We can observe that at low SNR, OMA performs slightly better than NOMA. This is because, NOMA users suffer from interference (due to simultaneous transmission), while OMA users do not experience any such interference. At high SNR, however, NOMA outperforms OMA by offering high capacity.
In addition, NOMA accomplishes this while utilizing minimal resources. In this example, TDMA requires 3 times slots to complete the whole transmission. If the duration of 1 time slot is 1 ms, TDMA requires 3 ms to complete the transmission. NOMA, on the other hand, completes the transmission in a single time slot itself (i.e., in 1 ms). This significantly reduces the latency. This demonstrates the usefulness of NOMA in future communication technologies.
Reference
"A tutorial on Nonorthogonal multiple access for 5G and beyond," M. Aldababsa et al., Wireless communications and mobile computing, https://doi.org/10.1155/2018/9713450
kindly add the reference paper.
ReplyDeleteupdated!
DeleteThank you, much appreciated!!
ReplyDeleteLine number 34 in the code
ReplyDeleteIn place of mod hi square in the formula we have to take sum of all absolute values right. But you just considered absolute values. I don't understand that can you please explain?
Hi Satwik, 'h' is a vector of channel coefficients. When we do |h|^2, we are considering the squared absolute value of one particular entry of h. And then we repeat the same for all the entries of h. Instead of using a 'for' loop, the matlab command (abs(h)).^2 implements this operation more efficiently.
DeleteHope this helps.
What are the units of distances(d1,d2,d3)?
ReplyDeleteDistances are in meters
DeleteDear Joe, when using SIC to cancel the interference, do the value of the power allocation coefficient ${\alpha _1},{\alpha _2},{\alpha _3},...,{\alpha _N}$ was included in the transmission packet so that the receiver know the decoding order ?
ReplyDeleteHi Minh,
DeleteThe receiver should know the values of power allocation coefficients to perform SIC. So, they can be included in the transmission packet. Alternatively, if the receiver knows the power allocation strategy of the transmitter, the values may be calculated by the receiver itself
Average achievable sum-rate versus the power budget at the base station PBS for C-NOMA and NOMA with different pairing schemes ( what programming it in matlab .. please )
ReplyDeleteAverage sum rate versus the power budget at the base station PBS for C-NOMA and different means of the D2D channel gain ( what programming it in matlab .. please )
ReplyDeleteComparisons between different relaying modes of cooperation in C-NOMA system for fixed and adaptive relaying power control with different power budget at the BS ( what programming it in matlab .. please )
ReplyDeleteComparisons between different relaying modes of cooperation in C-NOMA system for fixed and adaptive relaying power control with different power budget at the user device ( what programming it in matlab .. please )
ReplyDeleteAverage achievable sum-rate versus the power budget at the base station PBS for C-NOMA and NOMA with different pairing schemes ( what programming it in matlab .. please )
ReplyDeleteComputational time of the hungrian method scheme versus that of SCA-based approach in noma ( what programming it in matlab .. please )
ReplyDeleteHi, thanks for the suggestions. Will try to cover these topics in a future post!
DeleteDear Joe, thank you so much about these short notes and codes it is very help me i am doctorat student ....i want ask you if you have code matlab Cognitive Radio with NOMA .. please share with me if you can
ReplyDeleteHi, glad to know you found the blog helpful.
DeleteRight now I don't have codes on CR-NOMA. Will make a post on that soon.
thank you dr
DeleteHello, I am phd scholar doing my research work for infusion of CR with NOMA technology, if you can share MATLAB code for CR/NOMA....Thanks
ReplyDeleteHi, sure, we'll cover that in a future post
Deletehi i wanna ask, what does n0 mean means in line 24 and 25? thank u
ReplyDeleteHi nameless, No and no are the noise power in dBm and linear scales
Deletehi i wanna ask question
ReplyDeletei think in OMA Bw/3 not like NOMA each user use all the BW and we know n=N*BW so i think must be (noise /3) in the eqations or what is wrong plz tell me & Thanks
Hi Abdelrahim, considering TDMA as the OMA scheme, each user gets 1MHz bandwidth (and hence the noise power over that bandwidth), but gets to transmit only for one-thirds of the time-slot duration. Hence the 1/3
DeleteHope this helps
Hi I have one question,
DeleteIn case of 2 users NOMA, Is it necessary both users perform better than OMA?
In case of 2 users, is it necessary that both users NOMA should perform better than OMA ( considering TDMA ) ?. In NOMA, If we allocate more power to far user, then it will perform better than OMA far user but near user will suffer and has less sum-rate. In terms of overall sum rate also, even for the same channel condition, OMA performance is little more than NOMA performance.
In NOMA, if we calculate the power allocation coefficient of far user according to the channel condition, its value came near half which make it useless to calculate power coefficient using channel condition and we have to allocate power randomly.
Please upload code for BER comparison for NOMA vs OMA.
ReplyDeletesure, will do it soon!
Deletealso i need this plz in this week
DeleteHi Abdelrahim, I've already shared the code with you in mail
Deletei think u are did write here on your website
Deletethanks alloooooooooooooot bro
Can u share this Ber comparison for NOMA vs OMA with me too?? Thank u in advance!!
DeleteThis comment has been removed by the author.
DeleteHello Joe. Can you send me the code too? tamim4463@gmail.com
DeleteBER for NOMA vs OMA
hi GT_24 and MRT, you can download the BER comparison code from this link:
Deletehttps://drive.google.com/file/d/1TUi4D_bUIoEw9X74fWQFYkyjNi_n550h/view?usp=sharing
Hi Joi
ReplyDeleteThanks for you brilliant explanation and coding
very helpful
could i ask why we divide by N in OMA
Ri,OMA=1/N * log2(1+γi,OMA)
while in NOMA we did not divide by N
Hi mohamed, think of N as the number of orthogonal resource blocks (frequency/time/code).
DeleteFor example, in a N=4 user network with time slot duration of T = 4 ms, OMA (TDMA) will allocate (T/N = 1 ms) to each user. So transmission happens only for 1 ms to each user. But in NOMA each user will get the 4 ms time slot. Hence the 1/N factor for OMA, and not for NOMA.
Hope this helps
hi Mr.Joe
ReplyDeletehow are you ?plz i have an important question , i see all your codes , and my question is > if we don't need to put exactly values like a1=0.75 , a2 = (1-a1)*a1 , a3 = (1-(a1+a2))*a1,a4 = (1-(a1+a2+a3))
what we must dowing to do the power allocation coefficient automatically ??
if we do distance for each user what we must doing or tell me any automatically thing plzzzzzzzzzzzzzzzz
thanks alot for your help
Hi Abdelrahim, one way to do this is, a_i = (1/d_i)/((1/d1)+(1/d2)+...+(1/dn)),
Deletewhere i = 1,2,...n
n is the total number of users,
d_i is the distance of user i from BS
i did that and it is working thanks alooooooooooooooot bro
Deletei send a last question on your email plz bro answer to me plzzzzzzzzzzz
my doctor waiting me and im stuck plz help me quicly its the last question
thanks alot
hi Mr.Joe
ReplyDeletecapacity unit (bit/s)
and equation of capacity = BW *log2 (1+SNR)
your code solve spectral efficiency cauz you write unit (bitpers/Hz)
and equation you write= log2 (1+SNR)
So what is the correct ?
is that capacity or Spectral efficiency ??
another question i have
what is meaning achavable rate is that the same of capacity or what ??
Plzz answer Mr.Joe
Thanks
Hi Abdelrahim, the terms capacity and spectral efficiency are sometimes used somewhat interchangeably and can be understood from the context. For example, see this stackexchange post: https://dsp.stackexchange.com/questions/1519/information-theory-units-of-channel-capacity#:~:text=In%20a%20first%20course%20in,of%20bits%2Fs%2FHz.
Deletethanks aloot Mr.Joe
DeletePlz i have the last question
i need you edit the code to be when the SNR 0dB or less the results be equal ZERO
and after that start get positive results
My doctor need something like that today
i try to let BW=10^6
but i need in the zero values get zero or somthing be good to doctor
Plzzzzzzzzzzzzzzzzzzzzzzzzz help me plz plz bro
THANKS ALOT
Hi Abdelrahim, SNR = 0dB means, in linear scale snr = 1. so log2(1+1) > 0.
DeleteSo we wont get zero. Hope this helps.
Why power P and alpha values are square root
ReplyDeleteHi, P and alpha are power terms. In the signal equation, we are representing their amplitude (in volts or amps). So we use square root.
DeletePlease explain the general equation for uplink NOMA and OMA . Thank You.
DeleteHI Joe ,could you please send matlab code for BER Comparison of NOMA and OMA.
ReplyDeletesreenu.sunkaraboina@gmail.com
Hi, you can download the code here:
Deletehttps://drive.google.com/file/d/1TUi4D_bUIoEw9X74fWQFYkyjNi_n550h/view?usp=sharing
HI Joe ,could you please send matlab code for power allocation Comparison of NOMA and OMA.
Deleteramezhosny1010@gmail.com
Hi joe ,In MC NOMA, Is noise power is same as SC NOMA or No=ktB/S?
ReplyDeleteS=No.of sub channels
what about power ?
Hello Joe
ReplyDeleteThank you for explanation of downlink NOMA and OMA in terms of achievable and sum rate. please share the general equation of achievable and sum rate for uplink NOMA and OMA. Thank You.
Hello Joe
ReplyDeleteThank you for explanation and codes. Please explain the general equation of achievable rate and sum rate for uplink NOMA and OMA.
Please explain the above model for uplink case. Thank You.
ReplyDeleteHello Joe. Please explain the concept of both uplink NOMA and OMA. Thank You
ReplyDeletehello Joe
ReplyDeletefirst of all I want to thank you for the help you offer us through your posts.
because I'm a little confused with SNR transmit and and SNR receve. Why in many simulations (downlink) use the SNR transmit since the results concern the receiver
More over
Line 4 you mention that the transmitting power Pt = -114: 5: -54; % in dB
transmit power should not have negative values?
whether it is receiving power?
thanks in advance,
pt is in dBm
DeleteHi Joe,
ReplyDeleteFirst of all, your blog is a gem! I can't thank you enough for the time and effort you take to make these articles filled with concise yet meaningfull explainations.
I have a small question. You have explained why the rate of TDMA is scaled by 1/N factor. My question is how about FDMA (or OFDMA) and CDMA? Will the rates also be factored by 1/N. Also unlike TDMA, taking the case of FDMA, the No (or no) will be different for each user right?
Thanks in advnace!
Hi Joe,
DeleteGood work that you are doing with your blog. Keep up the good work! I also wished to ask this same question asked by nashy_nash. How do you deal with other OMA strategies (FDMA, OFDMA, etc.). Also it will be quite helpful if you could demonstrate the user pairing in NOMA using multi-carriers (MC-NOMA) in addition to the pairing in time-domain that you have recently posted.
Thanks in advance.
Hi nashy_nash and warry,
Deletethank you very much for the feedbacks!
Regarding OMA, capacity of all OMA schemes are scaled by the 1/N factor. For FDMA, usually, all users are assigned the same bandwidth. So No will be same for all users.
Sure, as suggested by you, I will try to make a post about user pairing in MC-NOMA soon
hi,
ReplyDeleteCan you compare fairness index or tell me the response of NOMA and OMA?
I tried to implement but I am getting OMA is better than NOMA for same channel coefficient ( gain).
Thanks and Regards
Hello Joe, is NOMA a wideband tranmission or a narrow band transmission? How is code domain NOMA different from CDMA? Please provide an answer if possible.
ReplyDeleteComparing sum-rate performance of NOMA and OMA. In case of 2 users NOMA, Is it necessary both users perform better than OMA?
ReplyDeleteDetails doubt arise while stimulating the code:
In case of 2 users, is it necessary that both users NOMA should perform better than OMA ( considering TDMA ) ?. In NOMA, If we allocate more power to far user, then it will perform better than OMA far user but near user will suffer and has less sum-rate. In terms of overall sum rate also, even for the same channel condition, OMA performance is little more than NOMA performance.
(I have also read your article on calculating power allocation coefficient but still have some doubt)
In NOMA, if we calculate the power allocation coefficient of far user according to the channel condition, its value came near half which make it useless to calculate power coefficient using channel condition and we have to allocate power randomly.
Thanks and Regards,
Sandeep
hello everyone please i need Matlab code NOMA qpsk or Pbsk with AWGN channel. Thanks
ReplyDeletecan you please provide matlab code for ofdm data rate vs noma data rate comparison.
ReplyDeleteI am doing a project in NOMA. can you please help me with that. I wan to compare data rates of ofdm and noma. i also want to observe the rates when we change number of users. And compare manual and automated power allocation in NOMA.
ReplyDeletehey .. can i have the code for downlink NOMA plz
ReplyDeleteHello Joe,
ReplyDeleteThank you for the explanation and for uploading posts.
Could you please upload the NOMA Vs OMA Capacity comparison for the Uplink case with system model, mathematical analysis, and Matlab code?
Thank you.
Hi Joe, I have a confusion with units in the code. Pt is -144 taken in dB and No= -84 in dBm.
ReplyDeleteSNR=Pt-No is measured in dB. How it is possible? we should covert No into dB, then only we have to calculate SNR right. Please correct me if I am wrong.
Hi Joe. Thanks for sharing this beautiful content.
ReplyDeleteIn MATLAB code, while calculating the SINR for user 2 and user 3 in NOMA case, the channel power gain is miswritten. Please correct me if I am wrong.
In the equations 6 and 9, the channel h should be same in numerator and denominator. For reference please see "Power Domain Non Orthogonal Multiple Access (NOMA) in 5G Systems: Potentials and Challenges" equation 4.
ReplyDeleteHi,
ReplyDeletewhat would happen to NOMA and OMA capacity, when we keep increasing the users?
Hi joe, I would like to ask the SNR code for the capacity of NOMA user 2 is pt(u)*a3*g1,not pt(u)*a3*g3?
ReplyDeletehelp me :(
ReplyDeletei tried in case of 5 users but got error : subscripted assignment dimension
mismatch.
Error in dungluongkenhfor5users (line 42)
C_noma_sum(u) = mean(C_noma_1 +
C_noma_2 + C_noma_3 + C_noma_4 +
C_noma_5); %Sum capacity of NOMA
code:
clc; clear variables; close all;
%SNR range
Pt = -114:5:-54; %in dB
pt = db2pow(Pt); %in linear scale
N = 10^4;
d1 = 5; d2 = 4; d3 = 3; d4=2; d5=1; %Distance of users
eta = 4; %Path loss exponent
%Rayleigh fading coefficients of both users
h1 = (sqrt(d1^-eta))*(randn(N,1) + 1i*randn(N,1))/sqrt(2);
h2 = (sqrt(d2^-eta))*(randn(N,1) + 1i*randn(N,1))/sqrt(2);
h3 = (sqrt(d3^-eta))*(randn(N,1) + 1i*randn(N,1))/sqrt(2);
h4 = (sqrt(d4^-eta))*(randn(N,1) + 1i*randn(N,1))/sqrt(2);
h5 = (sqrt(d5^-eta))*(randn(N,1) + 1i*randn(N,1))/sqrt(2);
%Channel gains
g1 = (abs(h1)).^2;
g2 = (abs(h2)).^2;
g3 = (abs(h3)).^2;
g4 = (abs(h4)).^2;
g5 = (abs(h5)).^2;
BW = 10^9;
No = -174 + 10*log10(BW);
no = (10^-3)*db2pow(No);
%Power allocation coefficients
a1= 0.3; a2 = 0.25; a3 = 0.19; a4 = 0.1825; a5 = 1-(a1+a2+a3+a4);
C_noma = zeros(1,length(pt));
C_oma = zeros(1,length(pt));
for u = 1:length(pt)
%NOMA capacity calculation
C_noma_1 = log2(1 + pt(u)*a1.*g1./(pt(u)*a2.*g1 + pt(u)*a3.*g1 + pt(u)*a4.*g1 + pt(u)*a5.*g1 + no)); %User 1
C_noma_2 = log2(1 + pt(u)*a2.*g2./(pt(u)*a3.*g2 + pt(u)*a4.*g2 + pt(u)*a5.*g2 +no)); %User 2
C_noma_3 = log2(1 + pt(u)*a3.*g3/(pt(u)*a4.*g3 + pt(u)*a5.*g3 + no)); %User 3
C_noma_4 = log2(1 + pt(u)*a4.*g4/(pt(u)*a5.*g4 + no));
C_noma_5 = log2(1 + pt(u)*a5.*g5/ no);
C_noma_sum(u) = mean(C_noma_1 + C_noma_2 + C_noma_3 + C_noma_4 + C_noma_5); %Sum capacity of NOMA
%OMA capacity calculation
C_oma_1 = (1/3)*log2(1 + pt(u)*g1/no); %User 1
C_oma_2 = (1/3)*log2(1 + pt(u)*g2/no); %User 2
C_oma_3 = (1/3)*log2(1 + pt(u)*g3/no); %User 3
C_oma_4 = (1/3)*log2(1 + pt(u)*g4/no);
C_oma_5 = (1/3)*log2(1 + pt(u)*g5/no);
C_oma_sum(u) = mean(C_oma_1 + C_oma_2 + C_oma_3 + C_oma_4 + C_oma_5 ); %Sum capacity of OMA
end
SNR = Pt - No;
figure;
plot(SNR,C_noma_sum,'linewidth',2); hold on; grid on;
plot(SNR,C_oma_sum,'linewidth',2)
xlabel('SNR (dB)');
ylabel('Achievable rate (bps/Hz)');
legend('NOMA','OMA');
title('Capacity of NOMA vs OMA');
ylim([0 max(C_noma_sum)+1]);