I’m currently trying to wrap my head around optical OFDM. I’m reading various tutorials and articles, but I’m hitting a stumbling block trying to understand Hermitian Symmetry and how it is applied. I’m taking the block diagram of an OFDM system from Figure 3 in this paper, and working through it step by step starting from the input to the transmitter. It’s probably best that I go step-by-step up until the point where I get confused.

Fig. 3 from the aforementioned paper

Step 1 - serial to parallel

For the sake of simplicity I’m skipping the “Coding” and “Interleaving” steps from that paper. Let’s start with a serial bit stream we want to send: 1, 1, -1, -1, 1, 1, 1, -1, 1, -1, -1, -1, -1, 1, -1, -1, -1, 1…etc.

We will map this to parallel bit streams, one for each subcarrier. I’m using 4 subcarriers in this example, C1 to C4. The parallel streams are now:

C1 C2 C3 C4
1 1 -1 -1
1 1 1 -1
1 -1 -1 -1
-1 1 -1 -1
-1 1 1 -1
-1 -1 1 1

Step 2 - QAM modulation

Modulate each subcarrier. Here I'll use 4-QAM. Taking 2 bits at a time from each of the subcarrier columns I get:

C1 C2 C3 C4
1 +1j 1 +1j -1 +1j -1 -1j
1 -1j -1 +1j -1 -1j -1-1j
-1 -1j 1 -1j 1 +1j -1 +1j

Step 3 - IFFT

This is where my understanding starts to break down. I understand for “normal” OFDM we’d pass these values to the IFFT to generate the time-domain OFDM signal. However, what exactly are we sending to the IFFT block? Do we send it each row of that table in turn, i.e. the values of each subcarrier at a particular sample time?

Step 4 - Hermitian Symmetry

This is where my understanding really breaks down! I understand that Optical-OFDM require purely real-valued time-domain OFDM signals. I also follow that if the input to the IFFT block has the property of "Hermitian symmetry", then the IFFT output will be the desired real signal.

Hermitian symmetry is "imposed" on Xk symbols by ensuring that:

X0 = XN/2 = 0 and
Xk = X*N-k for 0 < k < N/2

Where N is the IFFT length and k is the carrier number (I assume?)

My confusion here is if we have to "impose" that certain carriers must take a given value (e.g. carrier 0 and carrier N/2 must equal 0) then isn't that somehow "overwriting" the value for that carrier that we have applied at the QAM modulation stage? That seems like it must be wrong to me, but I can't understand why!

So, apologies for the long-winded question, but just to clarify I'm asking if my understanding of the IFFT at Step 3 is correct, and what exactly we are doing when we "impose" Hermitian Symmetry onto our signal prior to the IFFT in Step 4.

  • $\begingroup$ added the figure (in excerpt) to your question. Considering you're citing the source, this feels like fair use and simplifies reading your question $\endgroup$ Commented May 13, 2021 at 13:25
  • $\begingroup$ Quick answers: yes, you pass one row at a time from the modulated output of step 2 to the IFFT block, in sequence (typically there would be some subcarriers near the band edges that are zero-valued to allow for filter rolloff). The output of the IFFT will be the corresponding complex time-domain signal for that symbol period. You're right that you need a real-valued signal for transmission, either optical or wireless, so this is typically done by modulating the complex baseband signal onto a carrier at much higher frequency, allowing you to transmit a single real-valud signal. $\endgroup$
    – Jason R
    Commented May 13, 2021 at 13:32

3 Answers 3


the answer is actually very simple. Let us consider an IFFT size of N=32. In order to make sure that the output of the IFFT operation is real-valued (real numbers without imaginary part). y=IFFT(x) You have to follow the following arrangement to the input of IFFT operation (input is x): x(0)=0 x(N/2)=0 x(n)=conj(x(-n))

Example in Matlab:

M = 16; % For 16-QAM
IFFT_size = 32; % IFFT size
Nsc = IFFT_size/2-1; % number of data carrying subcarriers
data = randi([0 M-1],Nsc,1);
x = qammod(data,M);

I don't understand your question about the IFFT step: as in "normal" OFDM, you send a full vector to the IFFT, as that is a vector-valued operation of vectors. The output are (interpreted as) time-domain samples.

In fact, you really shouldn't have put Step 3 and 4 as separate operations, and certainly not in that order: the input to the IFFT has to be hermitian symmetric to yield a real-valued signal (which is what you need if you don't want to implement a quadrature upconverter to mix your signal into a carrier frequency, so in all honesty, fig. 3 is misleading in that the $-\sin(2\pi f_c t)$ branch doesn't have anything to do if you ensure your IFFT input is hermitian symmetric.)

My confusion here is if we have to "impose" that certain carriers must take a given value (e.g. carrier 0 and carrier N/2 must equal 0) then isn't that somehow "overwriting" the value for that carrier that we have applied at the QAM modulation stage?

No, you're just mixing up what you're doing: you're not free to assign an arbitrary value to each subcarrier at will, you need to make sure the vector is hermitian symmetric. You hence only have half the subcarriers to choose freely, the other one is inherently set to the complex conjugate.

So, you're not "overwriting" anything. You're just only assigning your QAM symbols to half the subcarriers.

  • $\begingroup$ Apologies, I could have arranged the question better and not have Step 3 and 4 as separate steps. I'm surprised (due to my crude knowledge!) that we can only assign QAM symbols to half the subcarriers - isn't this really inefficient? If we have, say, 8 subcarriers, then that would mean we can only actually use 3 to send data since the others must necessarily be set to 0 or the complex conjugate. $\endgroup$
    – McKendrigo
    Commented May 13, 2021 at 13:53
  • $\begingroup$ No, it's not really inefficient. Real signals only have half the freedom as complex signals, so you can only transport half the amount of data. Or, from a spectrum perspective: a real signal always has hermitian symmetric spectrum, so only half as much bandwidth to be freely defined. $\endgroup$ Commented May 13, 2021 at 14:12
  • $\begingroup$ Ok, I think it's starting to sink in for me, I'll need to spend more time on it but you've helped clear away some of the misconceptions I had that was blocking my progress. Many thanks! $\endgroup$
    – McKendrigo
    Commented May 13, 2021 at 14:26
  • $\begingroup$ Great to hear it becomes clearer! $\endgroup$ Commented May 13, 2021 at 14:27

Hermitian symmetry is "imposed" on Xk symbols by ensuring that:

$$x_0 = x_{N/2} = 0, \\x_k=x_{N-k}^* \forall k\in \left(k, \frac{N}{2}\right)$$

By this definition, for $N$ odd, you can choose $\frac{N-1}{2}$ independent values of $x_k$, and for $N$ even, you can choose $\frac{N}{2} - 1$ independent values of $x_k$. So you don't choose $N$ values and then wonder what to do with the extra $\frac{N}{2}+1$ values that don't fit -- you just start by choosing what will fit. To keep your brain from exploding, just choose the first such subcarriers, and set the higher-frequency subcarriers to their complex conjugates.

I would note, however, that to keep the output real, you don't have to set the first and last subcarrier to zero -- you only need to keep their imaginary parts zero. So at the cost of using two different constellations, you can choose

$$x_0, x_{N/2} \in \mathcal R, \\x_k=x_{N-k}^* \forall k\in \left(k, \frac{N}{2}\right)$$

Note that this is not necessarily a good idea -- it adds complexity to the subcarrier generation, and keeping $x_0 = 0$ lets you AC-couple the signal at the receiver, which in turn means you don't have to worry about DC bias in the receiver. But it's there if you want to add the accompanying complications.

(Actually, putting a pilot tone onto $x_{N/2}$ may be quite helpful).


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.