What is the effect of imperfect SIC in NOMA? (MATLAB code)


We saw how to simulate a two user downlink non orthogonal multiple access (NOMA) system in the previous post. There, we plotted the capacity, outage probability and bit error rate (BER) of NOMA by MATLAB simulation. In doing so, we assumed the case of perfect successive interference cancellation (SIC). But in reality, it is not always possible to carry out SIC perfectly. That is, we have an imperfect SIC scenario.

A quick look at system model & notation

Before looking into what imperfect SIC is, let's take a look at the network model that we are going to use. This is how our network is going to look like. We have a downlink NOMA network with two users. The base station (BS) has two separate messages to transmit to each user. User 1 is the far user/weak user and, user 2 is the near user/strong user.

As a quick refresher, remember that the received signals at the far user ($y_1$) and near user ($y_2$) can be represented as follows:
$$y_1 = h_1x + w_1=h_1[P(\sqrt{\alpha_1}x_1 + \sqrt{\alpha_2}x_2)]+w_1$$ $$y_2 = h_2x + w_2 = h_2[P(\sqrt{\alpha_1}x_1 + \sqrt{\alpha_2}x_2)]+w_2$$ where, $$x = P(\sqrt{\alpha_1}x_1 + \sqrt{\alpha_2}x_2)$$ is the superposition coded transmit signal from the BS.

Again the notations are same as before,

  • $x_i$ - data intended for $i^{th}$ user
  • $\alpha_i$ - fraction of power allocated for $i^{th}$ user
  • $h_i$ - Rayleigh fading coefficient from BS to user i

According to the rules of NOMA, $\alpha_1 \gt \alpha_2$. Therefore, the far user (user 1) will do direct decoding while, the near user (user 2) must perform SIC to retrieve his data. This is just a quick intro. We will concentrate on imperfect SIC in the rest of this post. For more details on NOMA simulation, please refer to this post: How to simulate BER, capacity and outage probability of NOMA (Rayleigh fading) using MATLAB?

What do we mean by imperfect SIC?

We will start by defining what perfect SIC is. SIC is perfect if:

  • User 2 estimates the data of user 1 from $y_2$ correctly by direct decoding
  • User 2 correctly multiplies the estimate of user 1's data with $\sqrt{\alpha_1}$.
    (This may look trivial for now because we are using static power allocation and hence, $\sqrt{\alpha_1}$ is fixed and known to user 2. But there are better power allocation techniques available which compute the optimum $\sqrt{\alpha_1}$ and $\sqrt{\alpha_2}$ dynamically based on channel conditions, target rates etc., In those cases, user 2 must multiply the estimate of user 1's data with the correct and actual $\sqrt{\alpha_1}$ used when the signal is transmitted.)
  • User 2 must subtract the result obtained in the previous step from $y_2$

Ideally, if SIC is perfect, $y_2$ would become \begin{align}y_2 &= h_2P\sqrt{\alpha_1}x_1 + h_2P\sqrt{\alpha_2}x_2+w_2 - h_2P\sqrt{\alpha_1}x_1\\&= h_2P\sqrt{\alpha_2}x_2+w_2\end{align} after SIC.
If anything goes wrong, then SIC would be imperfect. By imperfect SIC, we mean that a residue of $x_1$ component is still present in $y_2$ after SIC. That is, after imperfect SIC, $y_2$ becomes $$y'_2 = \underbrace{\sqrt{\epsilon}h_2P\sqrt{\alpha_1}x_1}_\textrm{residual term} + h_2P\sqrt{\alpha_2}x_2 + w_2$$ where, $\epsilon$ is the fraction of residue of $x_1$ component left due to SIC error.

How imperfect SIC affects achievable data rate?

We saw in this post that the achievable data rate of user 2 for decoding user 1's data is, $$R_{1,2} = log_2(1+\dfrac{|h_2|^2P\alpha_1}{|h_2|^2P\alpha_2+\sigma^2})$$ After SIC, the $x_1$ term is totally eliminated and the resulting achievable capacity for user 2 to decode its own data is, $$R_2 = log_2(1+\dfrac{|h_2|^2P\alpha_2}{\sigma^2})$$ Now, due to imperfect SIC, a residue of user 1's power is still present at interference in the denominator. As a result, the achievable rate reduces to $$R'_{2} = log_2(1+\dfrac{|h_2|^2P\alpha_2}{\underbrace{\epsilon|h_2|^2P\alpha_1}_\textrm{residual term} +\sigma^2})$$ where, $\epsilon$ is the fraction of residue of $x_1$ component left due to SIC error.
We can clearly see that $R'_2 \lt R_2$. Thus imperfect SIC has a detrimental effect on the data rate of the strong user/the user who is performing SIC.
Note that $R'_2$ equals $R_2$ when $\epsilon=0$ i.e., when SIC is perfect.

MATLAB simulation

We already know how to simulate this system using MATLAB. This can be done with just a few lines of MATLAB code given below. So let's go ahead and plot the achievable rates at user 2 for different values of SIC error using MATLAB. We are plotting user 2's achievable data rate alone and not user 1's because user 1 does not perform SIC and hence his achievable data rate will not be affected. The resulting plot look like this:

We can see that the achievable rate degrades as SIC error increases.

Here is the MATLAB code:


clc; clear variables; close all;

N = 10^5;

d1 = 1000; d2 = 500; %Distances of users from base station (BS)
a1 = 0.75; a2 = 0.25; %Power allocation factors
eta = 4; %Path loss exponent
err = [0 10^-4 10^-3 10^-2]; %SIC error
%Generate rayleigh fading coefficient for both users
h1 = sqrt(d1^-eta)*(randn(1,N)+1i*randn(1,N))/sqrt(2);
h2 = sqrt(d2^-eta)*(randn(1,N)+1i*randn(1,N))/sqrt(2);

g1 = (abs(h1)).^2;
g2 = (abs(h2)).^2;

Pt = 0:2:40; %Transmit power in dBm
pt = (10^-3)*10.^(Pt/10); %Transmit power in linear scale
BW = 10^6; %System bandwidth
No = -174 + 10*log10(BW); %Noise power (dBm)
no = (10^-3)*10.^(No/10); %Noise power (linear scale)

p = length(Pt);

for ep = 1:length(err)
for u = 1:p
gamma_2d = a2*pt(u)*g2./(err(ep)*a1*pt(u)*g2+no);
R2d = log2(1+gamma_2d);
R2d_av(u) = mean(R2d);
end
plot(Pt, R2d_av, 'linewidth', 2); hold on;
end
grid on;
xlabel('Transmit power (dBm)');
ylabel('Achievable capacity (bps/Hz)');
title('Achievable data rate at user 2 with imperfect SIC');
legend('\epsilon = 0 (perfect SIC)', '\epsilon = 10^{-4}','\epsilon = 10^{-3}','\epsilon = 10^{-2}')

Thank you.

Reference

"Exploiting Non-orthogonal Multiple Access in Cooperative Relay Sharing," IEEE Communication Letters, Vol. 21, no. 5, pp. 1159-1162, 2017.

Comments

  1. Thank you. This is very helpful. Can you also show impact of user grouping in NOMA downlink?

    ReplyDelete
    Replies
    1. Hi Amit! Glad you found it helpful.
      Sure! We will see the impact of user grouping in upcoming posts.
      Thank you

      Delete
    2. do have a matlab code user grouping in NOMA downlink?

      Delete
  2. Hey Joe, usually strong user is taken as user1 and weak user as user 2 and more power is allocated to weak user. Thoughts?

    ReplyDelete
    Replies
    1. Hi Trishna, numbering the users is up to us. In some papers they consider strong user as user 1, while in other papers they take weak user as user 1. But, as you said, whatever the numbering is, we should always allocate more power to the weak user among the two.

      Based on our numbering we have to modify the rate equations accordingly

      Delete
  3. Hi, I have a question .Why do we have to calculate the mean of R2d ?

    ReplyDelete
    Replies
    1. Hi, since the wireless channel is very dynamic, the instantaneous achievable rates will fluctuate much. By calculating the mean, we get more meaningful insights about the achievable rates, as it averages out the instantaneous fluctuations.

      Delete
  4. Hi, In your blog "User 2 estimates the data of user 1 from y2 correctly by direct decoding". Can you explain how "direct decoding" works. In the same equation how the user 2 have the correct information of x2.

    ReplyDelete
  5. Hi Joe,
    How to simulation BER with imperfect SIC?

    ReplyDelete
  6. you have written an excellent blog.. keep sharing your knowledge...
    Matlab Training in Chennai
    Matlab in Chennai

    ReplyDelete
  7. can any one who have a source code or matlab code of user grouping in NOMA downlink?
    emial :ermiascachi7565@gmail.com

    ReplyDelete
  8. hello, could you help me code for throughput analysis of IR EH NOMA, which an ieee paper.

    ReplyDelete
  9. Hi Joe, thank you for this article. It has been a great help to understand NOMA.

    1) I would like to know about the term "P". Why do you take an extra term "P", if you have already considered "a1" and "a2" ?

    2) And why do you take it as sqrt(P) in you previous article "How to simulate BER, capacity and outage probability of NOMA (Rayleigh fading) using MATLAB?" and as "P" in this one?

    3) Reason behind the use of "sqrt(P)" ?

    ReplyDelete
  10. Thanks. It helps me to understand. I have a question can you give me overall Matlab ?

    ReplyDelete
  11. hello Joe, can have the matlab code where the system model is defined as follow: NOMA with hybrid energy harvesting with one base station communicating with near and far user. note that the
    near user is receiving Energy harvesting from Base station and it served as relay for far user. We have 2 direct links BS to near user, BS to far user and Relaying link near user to far user.

    ReplyDelete

Post a Comment

Popular posts from this blog

How to simulate BER, capacity and outage probability of NOMA (Rayleigh fading) using MATLAB?

How to simulate a simple NOMA system (AWGN) using MATLAB?

How to do power allocation in NOMA? (with fairness to far/weak user)