Assume if we have $N$ OFDM subcarriers represented by results of the inverse FFT of $N$ data symbols $\mathbf x$. As I know, the subcarriers of OFDM should be orthogonal. It means that

$$X(n)X(n+1) = 0\quad\text{where}\quad n = 0,\ldots,N-1$$

My question is that I can't get that right when doing it in MATLAB. For example suppose that $N=4$ and

$$\mathbf x = \begin{bmatrix} 0.7+0.7i\\ 0.7-0.7i\\ -0.7+0.7i\\ 0.7+0.7i\end{bmatrix}$$

is a data symbols gotten after QAM modulation. The OFDM $N\times 1$ subcarriers are gotten by iFFT of the data symbol as below:

X = ifft(x)*sqrt(4); 

It means that

$$X = \begin{bmatrix} 0.7+ 0.7i\\ 1.4 + 0.0i\\ -0.7 + 0.7i\\ 0.0 + 0.0i\end{bmatrix}$$


$$\begin{align} X(1)\cdot X(2) &= (0.7000 + 0.7000i)\cdot(1.4000 + 0.0000i)\\ & = 0.9800 + 0.9800i \end{align}$$

If subcarriers are orthogonal, that wil be zero.

Thus, my question, how can I demonstrate the otrhognality of OFDM subcarriers ?

  • 1
    $\begingroup$ Your definition of orthogonality is wrong: it would imply that at least one of $X(n)$ and $X(n+1)$ is zero. $\endgroup$
    – MBaz
    Commented Sep 30, 2020 at 15:35
  • $\begingroup$ How can we demonstrate the orthogonality in that case? Could you please help ? $\endgroup$
    – Fatima_Ali
    Commented Oct 1, 2020 at 8:20
  • $\begingroup$ Marcus already provided a good answer. $\endgroup$
    – MBaz
    Commented Oct 1, 2020 at 12:40

3 Answers 3


The other answer points out that the DFT is a matrix multiply. The matrix $\mathbf{D}$ is like this:

$$ \mathbf{D}= \begin{bmatrix} 1 & 1 & 1 & ... & 1 \\ 1 & \omega & \omega^2 & ... & \omega^{N-1} \\ 1 & \omega^2 & \omega^4 & ... & \omega^{2(N-1)} \\ ... & ... & ... & ... & ... \\ 1 & \omega^{N-1} & \omega^{2(N-1)} & ... & \omega^{(N-1)(N-1)} \end{bmatrix} $$ where $\omega=e^{j2\pi /N}$.

Take your example of four QPSK symbols that you want to modulate ($N=4$). So you do :

\begin{align} \mathbf{s} &= \mathbf{D}\mathbf{x} \\ &= x_1\begin{bmatrix}1\\1\\1\\1 \end{bmatrix} + x_2\begin{bmatrix}1\\\omega\\\omega^2\\\omega^3 \end{bmatrix} + x_3\begin{bmatrix}1\\\omega^2\\\omega^4\\\omega^6 \end{bmatrix} + x_4\begin{bmatrix}1\\\omega^3\\\omega^6\\\omega^9 \end{bmatrix} \end{align}

We now have the OFDM symbol $\mathbf{s}$ which took your original symbols $\mathbf{x}$ and mapped them across the $N$ subcarriers. The orthogonality is important because it means at the receiver we can do the FFT to get the symbols back. To demonstrate this, consider the receiver gets $\mathbf{s}$ and wants to generate its first symbol estimate $\hat{x}_1$:

\begin{align} \hat{x}_1 &= \begin{bmatrix}1 & 1 & 1 & 1\end{bmatrix}\mathbf{s} \\ &= \begin{bmatrix}1 & 1 & 1 & 1\end{bmatrix} \bigg( x_1\begin{bmatrix}1\\1\\1\\1 \end{bmatrix} + x_2\begin{bmatrix}1\\\omega\\\omega^2\\\omega^3 \end{bmatrix} + x_3\begin{bmatrix}1\\\omega^2\\\omega^4\\\omega^6 \end{bmatrix} + x_4\begin{bmatrix}1\\\omega^3\\\omega^6\\\omega^9 \end{bmatrix} \bigg) \\ &= 4x_1 + 0 + 0 + 0 \end{align}

The fact that you got three zeros there is the orthogonal part, leaving it to you to do the inner product to convince yourself of that (inner product between $\mathbf{y}$ and $\mathbf{x}$ is $\mathbf{x}^H\mathbf{y}$). And this comes from the fact that $\mathbf{D}$ is unitary, $\mathbf{D}^H\mathbf{D}=\mathbf{D}\mathbf{D}^H=\mathbf{I}$.

  • $\begingroup$ Thank you so much for your clear explanation. In your case, $s$ is similar to $X$ in my question. but how can I demonstrate that each element in $s$ is orthogonal on the other. it means that $s(1)s(2)=0$ $\endgroup$
    – Fatima_Ali
    Commented Oct 2, 2020 at 8:35
  • $\begingroup$ What you're saying about orthogonal isn't right. $s_1s_2 \neq 0$ in general, do you have a reference for where you got that? $\endgroup$
    – Engineer
    Commented Oct 2, 2020 at 18:01
  • $\begingroup$ @Fatima_Ali see above $\endgroup$
    – Engineer
    Commented Oct 2, 2020 at 18:55
  • $\begingroup$ Yes, $s_1s_2$ doesn't equal to zeros as I demonstrated by MATLAB above in my question $\endgroup$
    – Fatima_Ali
    Commented Oct 3, 2020 at 16:44
  • $\begingroup$ @Fatima_Ali what I mean is that is not a problem. Where did you get that their product equals zero? $\endgroup$
    – Engineer
    Commented Oct 3, 2020 at 17:10

Orthogonality is defined as "the inner product of two vectors equals zero".

Now, in OFDM, the transmit vector for a single subcarrier is exactly one row vector $\mathbf D_k$ of the DFT Matrix $\mathbf D$, multiplied by the complex value of a symbol $c_k$, i.e. $c_K \mathbf D_K$.

Two different subcarriers $k, l, k\ne l$ hence have the inner product $\langle c_k\mathbf D_k,c_l\mathbf D_l\rangle$; inner products are linear things, hence that's

\begin{align} \langle c_k\mathbf D_k,c_l\mathbf D_l\rangle &= c_kc_l \langle \mathbf D_k,\mathbf D_l\rangle\\ &= c_kc_l \begin{cases}0&k\ne l\\\|\mathbf D_k\| & k = l\end{cases} &\text{q.e.d.}, \end{align}

because the DFT matrix is unitary.

  • $\begingroup$ Thank you for your reply, but as I see $X(n)$ explained in my question is the same of $c_KD_K$ mentioned in your reply, Is that right? Could you please implement that on the example I gave in my question? .. $\endgroup$
    – Fatima_Ali
    Commented Oct 1, 2020 at 8:09
  • $\begingroup$ yes, it is. Since I think you're very much able to substitute one variable for another, I don't see the point in modifying my proof – it's a general demonstration (a proof!) of the orthogonality, and you just inserting your vectors will work, albeit being super boring (which is why I have no interest in doing it, especially since it'd feel like I'm doing even the last bit of your work). $\endgroup$ Commented Oct 1, 2020 at 8:31
  • $\begingroup$ I mean in your last equation, if $c_k$ is the complex value of a symbol which is for example $0.7+0.7i$ and $c_l$ is another value of a symbol which is $0.7+0.7i$ .. their inner multiplication is not 0 ! it means $c_k$ $c_l$ is not 0 in all cases $\endgroup$
    – Fatima_Ali
    Commented Oct 1, 2020 at 13:01
  • $\begingroup$ I mean if $X(n)$ is $c_KD_K$ it means that $X(n)X(n+1)$ won't be zeros as I explained in my question. $\endgroup$
    – Fatima_Ali
    Commented Oct 1, 2020 at 13:09
  • $\begingroup$ you need to read the full line. There's a multiplication between $c_lc_k$ and the case $0$ or the case $\|\mathbf D_k\|$. This is standard notation for cases. $\endgroup$ Commented Oct 1, 2020 at 14:45

I would prove it like that (in Matlab)

ans =
  • $\begingroup$ Yes, but how to prove that after multiplying with the symbols ? $\endgroup$
    – Fatima_Ali
    Commented Oct 2, 2020 at 8:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.