OFDM splits one wide band into many narrow subcarriers and spaces them so that each one falls to zero where its neighbours peak. A single inverse transform then generates all of them at once. This page builds that idea up from the spacing rule, adds the cyclic prefix, and finishes with a worked 802.11 style symbol.
- OFDM Overview
- Why is the IFFT the right tool ?
- Cyclic Prefix
- How long should the cyclic prefix be ?
- Example
- What does OFDM cost, and what does it buy ?
OFDM Overview
The name is three words long, and each one records a separate decision. Read them in the order that builds up rather than the order they are written, because the middle word carries the weight. The spacing rule behind it is what the rest of this section has to explain.
OFDM stands for Orthogonal Frequency Divisition Multiplexing. If you understand the meaning of following keywords, you would have pretty good big picfure of OFDM.
- Orthogonal
- Frequency Division
- Multiplexing
You will figure out what all these terms are about as you go through this page.
OFDM is a technology that we split a wide frequency band into many small frequencies (we call this split frequencies as subcarriers) and carry data onto each of these sub carriers as illustrated below. In other words, we 'devide a wide frequency band' into multiple small/narrow frequencies. This is the meaning of 'Frequency Division'. Since all the data on each of these subcarriers are transmitted simultaneously, we can say this is a kind of 'Multiplexing'.

Figure 1. Eleven subcarriers, drawn separately above and summed below. Each one peaks where the others cross zero, and the sum is close to flat across the occupied band and falls away outside it.
The red stems are the data, not the curves : each red stem marks one sampling point in the frequency domain. The value at that point is what the subcarrier carries. The curve around it is the shape that value takes in frequency.The subcarriers overlap heavily and still do not interfere : in the upper plot the sinc shapes cover each other across the whole band. Overlap in the frequency domain is not interference, and the sampling points are what decide that.The lower plot is what a spectrum analyser sees : the sum is flat across the occupied region and decays outside it. Eleven separate carriers look like one continuous block of spectrum.
Now you may have a question at this point. How small we can make it for each subcarrier (subcarrier, divided frequency) ? For example, if you are given 1 Mhz bandwidth as a fullband, how many subcarriers we are supposed to split into ? If you split it into 1000 sub carriers with 1 Khz interval and carry one bit on each sub carrier, you can transmit 1000 bits simultaneously. If you split it into 100 sub carriers with 10 Khz interval and carry one bit on each sub carrier, you can transmit 100 bits at a time.
Which option you would take ? Definately you would want to split it into 1000 sub carriers.. you would even say I want to split it into even more sub carriers.
But unfortunately it would not be possible to split it with too small intervals between sub carriers. If you split it into too many sub carriers with too small space between sub carriers, there would be much high possibility of interference between adjacent sub carriers. However, if you separate each subcarrier too much and have small number of sub carriers, you would have much less interference between sub carriers but in that case the data rate would be decreased.
As a kind of optimal solution, OFDM split the band into multiple sub carriers in such a way as shown below. In the following illustration, at each sampling point in frequency domain there is only one carrier which has non-zero value and all other sub carriers has zero value at the sampling point. It means that even though multiple sub carriers coexists they are all independent and does not influence others, this characteristics are called as 'Orthogonal'. ( If any two functions or vectors are orthogonal, it means that they are orthogonal(perpendicular) to each other. You can find the mathematical definition of Orthogonality from WiKi, but it would not be easy to figure out practical meaning of Orthogonality from it. Just simpliy think "Orthogonal" means "Independence" and "Independence" means "No interaction/interference", therefore "Orthogonal" means "No Interference")

Figure 2. The orthogonality condition, drawn with three subcarriers instead of eleven. Read the zero crossings rather than the peaks : that is where the condition lives, and it is what lets the summed curve be sampled without loss.
Look at where the other two curves sit at each peak : at the green peak, the red and blue curves are both exactly zero. The same holds at the red peak at zero and the blue peak at plus one.The spacing is chosen to make that true : a sinc shape has its zeros at every whole multiple of the spacing. Placing the subcarriers one spacing apart therefore puts every neighbour on a zero crossing.The lower plot is the test : the three marked samples sit exactly on the summed curve at the same heights they had alone. Summing the subcarriers therefore loses nothing, and the receiver reads each value back by sampling at the right point.
OFDM is very good method of utilizing the given frequency wisely, but there is a drawback to this method. For this method to work efficiently the space between sub carriers should be maintained exactly at the specified position which satisfy the condition of orthogonality.
What if the space between sub carriers are not maintained accurately and they are drifting around. One example for this case is shown below. You would not see much differences when each sub carriers are plotted separately (upper plot), but you would notice the differences when all of these sub carriers are summed together as shown on lower plot.
Unfortunately, in reality there is no such an environment in which there is no frequency drift. so when you design an OFDM, first you have to determine the frequency space in which the system can tolerate the signal distortion due to frequency drift of sub carriers. (Most common sources to cause frequency drift of sub carriers would be 'Fading' and 'Doppler effect').

Figure 3. The same picture with the subcarriers drifted off their positions. The upper plot looks almost unchanged, and the lower plot is where the damage appears : the summed curve no longer passes through the ideal values.
The upper plot hides the fault : drifted subcarriers drawn separately look much like Figure 1. Nothing about one subcarrier tells you the set has lost its spacing.The summed curve is the evidence : it ripples instead of sitting flat. The green note in the middle says exactly what has gone wrong. The ideal value and the real value have separated.The error is different on every subcarrier : each one collects a different amount of energy from its neighbours. The damage is therefore not a uniform loss that a gain adjustment could remove.
To give you some toy to play with the concept of OFDM and the effect of frequency drift, I put the Matlab/Octave source code that I used to create plots shown above. Try with different values for NoOfCarriers and fnoiseMax and see how the result get different.
NoOfCarriers = 11; % Put an Odd Number
f = -5*pi:pi/50:5*pi;
fnoiseMax = 0.3;
iMin = -(NoOfCarriers-1)/2;
iMax = (NoOfCarriers-1)/2;
csum = zeros(1,length(f));
close all;
fList = [];
cList = [];
subplot(2,1,1);
hold on;
for i=iMin:1:iMax,
fnoise = fnoiseMax*(rand()-0.5);
fshift = (i .* (1/pi) .* pi) .+ fnoise;
c = sinc(f .- fshift);
csum = csum + c;
fList = [fList,fshift];
cList = [cList,max(c)];
plot(f,c);axis([min(f),max(f),-0.5,1.5]);
stem((i * (1/pi) * pi) + fnoise,1,'r-');
end;
grid();
hold off;
subplot(2,1,2);
hold on;
plot(f,csum);grid();axis([min(f),max(f),-0.5,1.5]);
stem(fList,cList,'r-');
hold off;
Two things are worth trying in that code before moving on. Set fnoiseMax to 0 and the lower plot becomes flat across the band, which is Figure 1. Raise it past about 0.3 and the ripple in the lower plot grows until the ideal sample values sit well off the curve, which is Figure 3. The upper plot barely changes either way, and that contrast is the point of running it.
Orthogonal is a statement about spacing, not about shape : the sinc shape comes from transmitting for a finite time. The spacing is what puts every neighbour on a zero crossing.Narrower subcarriers are better until they are not : more subcarriers carry more bits in the same band, and they also sit closer together. The same amount of drift then destroys a larger fraction of the spacing.Drift is the design constraint : fading and Doppler set how much the subcarriers move. The spacing has to be wide enough to tolerate it.
Why is the IFFT the right tool ?
Everything described above could be built with a bank of oscillators, one per subcarrier, and nobody builds it that way. The reason is not that oscillators are expensive. It is that the subcarriers OFDM uses are not an arbitrary set of tones, and recognising which set they are collapses the whole transmitter into one operation.
Space the subcarriers by exactly one over the symbol duration, which is the spacing Figure 2 requires. They then become the basis functions of the discrete Fourier transform. Generating N of them with chosen amplitudes is then one inverse DFT of a length N vector. The vector holds one value per subcarrier, and the transform hands back the time domain waveform that carries all of them at once.
The saving is worth a number. A direct sum of N subcarriers costs about N squared multiply and accumulate operations, and an FFT costs about N over 2 times log N butterflies. For the 64 subcarriers in the example later on this page that is 4096 against 192. For the 2048 point transform of an LTE 20 MHz carrier it is more than four million against about eleven thousand. The multicarrier idea is much older than its use in practice, and the transform is what made it affordable.
A second consequence matters as much as the first, and it appears at the receiver. Each subcarrier is narrow, so the channel barely changes across one of them. The receiver therefore corrects each subcarrier with a single complex multiplication rather than a filter. Equalization in an OFDM system is one division per subcarrier. A single carrier system spread over the same bandwidth needs a filter with many taps to do the same job.
One practical detail follows from using a transform rather than oscillators. You would naturally write the subcarriers from the most negative frequency to the most positive. That is not the order the transform expects, because a transform starts at DC. The example later on this page calls fftshift before the ifft for that reason, and Figure 15 shows what that call does to the array.
The subcarrier set is the DFT basis : that is neither a coincidence nor an approximation. It is the whole reason one transform replaces a bank of modulators.N log N instead of N squared : 192 butterflies against 4096 products at 64 subcarriers, and the gap widens with every doubling.One complex division per subcarrier : narrow subcarriers see a flat channel each, so equalization becomes arithmetic rather than filtering. That, rather than spectral efficiency, is what made OFDM win.
Cyclic Prefix
Everything above was drawn in the frequency domain, where OFDM is easy to justify. A real channel works in time, and what it does there is deliver several delayed copies of the same signal. This section starts from the damage that causes, and works forward to the defence against it.
Now let's look at the signal in time domain. Following is an illustraion showing two OFDM symbols in sequence.

Figure 4. The ideal case, and the only one that needs no defence. Each symbol occupies its own interval and the boundary between them is exact. A receiver transforming the right window reads symbol 1 with none of symbol 2 in it.
In ideal case, there is no problem with this signal, but what would happen if the first symbol get delayed a little bit. In this case, the ending part of the first symbol will spill over into the following symbol time and interfere the next symbol as shown below. This kind of interference between different symbols are called 'Inter Symbol Interference (ISI)'.

Figure 5. The same two symbols after a delay. The green marker at the bottom measures the overlap, and inside that overlap the receiver sees the two symbols added together rather than symbol 2 alone.
The delay is in the channel, not in the transmitter : a reflected copy arriving late is the usual cause. The transmitter cannot prevent the overlap by being more careful.The damage sits at the start of the following symbol : the tail of symbol 1 lands on the head of symbol 2. Any defence therefore has to protect the beginning of a symbol rather than its end.
What would be the solution to handle this problem ? You may want to prevent the signal from getting delayed. But it is not possible because we have no control over the radio channel itself(physical medium itself). So the only way is to design our system to handle this kind of situation. One simple solution is to put some time gap between symbols so that one symbol would not spill into next symbol even when it get delayed.

Figure 6. The obvious defence. A gap wider than the delay keeps the tail of one symbol out of the next symbol interval. It leaves open what the transmitter should send during the gap.
With this gap, the system would tolerate delay and intersymbol interference issue to a certain degree, but there is a practical issue. The issue is 'what to put in this gap ?'. Would it be good to put nothing (like turning off transmission) ? If you completely turn off the signal during the gap, it would cause issues for amplifier. To reduce this issue, we copy a part of signal from the end and paste it into this gap. This copied portion prepended at the beginning is called 'Cyclic Prefix'.

Figure 7. The gap filled with a copy of the symbol's own tail. The black bracket on each symbol shows where the copy comes from. The outer green arrow shows that the transmitted symbol is now longer than the useful one.
The copy comes from the end and goes to the front : that direction is what the word prefix records, and reversing it would not work.Two lengths now exist for one symbol : the inner bracket is the part the transform uses, and the outer arrow is what occupies the air. Every overhead calculation is the ratio of those two.Transmitting something is better than transmitting nothing : switching a power amplifier off and on at every symbol boundary creates its own problems. The gap therefore carries signal rather than silence.
As I explained, main purpose of cyclic prefix is to reduce ISI(Inter Symbol Interference), but we can enjoy an extra advatage from generating the cyclic prefix by copying the ending part of the original symbol. It helps find the symbol boundary (the start and end of a symbol). It goes like this. Take a sequence of samples (window) with the length of cyclic prefix. Take out another sequence with the same length which is (symbol length - CP length) apart from the first sequence. And then calculate the correlation of the two sequence. If the two sequence is exactly aligned with the start and end of the symbol, the correlation would be very high because the contents within the two sequence would be almost the same.

Figure 8. The second use of the prefix. Two windows a fixed distance apart land on the prefix and on the tail it was copied from. The correlation between them is high, and the alignment is found without any help from the transmitter.
The two windows are locked together : the green and yellow windows are separated by the useful symbol length, and the pair slides as one. Only the offset of the pair is being searched.The window length is the prefix length : that is the longest stretch over which the two are guaranteed identical. It is therefore the most evidence available.
If the two sequence (two window) does not align with the symbol boundary (start and end of a symbol), the correlation would not be high as shown below.

Figure 9. The same pair of windows at the wrong offset. Both now sit on unrelated parts of the waveform, so the correlation drops, and sliding the pair until the correlation peaks is what locates the boundary.
If you slide these two windows up and down and find the location which give you the highest correlaction, that is the slot boundary.
There is a third reason for the prefix, and it is the one that rarely gets stated. A radio channel convolves the transmitted signal with its impulse response. Ordinary convolution is not what makes the one division per subcarrier of the previous section work. Circular convolution is. Those two agree only when the signal is periodic over the transform window.
A prefix copied from the tail is exactly what makes the signal look periodic over that window. Every delayed copy arriving within the prefix length lands on samples that repeat what the symbol already contains. The receiver therefore sees a circular convolution rather than a smeared one. Multiplication in the frequency domain then follows, and the equalizer is one complex division that is exact rather than approximate.
The prefix does three jobs, and only the first is usually named : it absorbs the delay. It also turns the channel into a multiplication per subcarrier, and gives the receiver something to correlate against.A gap of silence would only do the first : the copy is what buys the other two, at no extra cost in time.Symbol timing comes free : the correlation in Figure 8 needs no training sequence and no help from the transmitter. The prefix is already there for another reason.
How long should the cyclic prefix be ?
The prefix has to outlast the channel, and that one requirement decides a surprising amount about a system. It fixes the overhead, it pulls against the subcarrier spacing, and it is why Wi-Fi and LTE chose prefix lengths that differ by a factor of six.
The rule is short. The prefix must be longer than the delay spread, which is the time between the first arrival and the last one carrying meaningful energy. Figure 10 draws the case where it is, with one delayed echo.
Figure 10. The prefix is long enough exactly when every delayed copy still has prefix left when the transform window opens. Under that condition the window contains whole samples of this symbol only, and the guarantee fails the moment a delay runs past the prefix.
The window starts after the prefix, not at the symbol : the receiver deliberately discards the first 16 samples. That is where all of the overlap has been collected.The echo pays with its own prefix : the delayed copy is still inside its prefix when the window opens. The window therefore sees a shifted whole copy of the same symbol.One threshold, and it is abrupt : below the prefix length the channel is a multiplication, and above it the interference returns. Nothing degrades gently across that line.
The cost is easy to state, because the prefix carries no new information. The overhead is the prefix length divided by the whole symbol length. For the example later on this page that is 16 samples out of 80. Twenty per cent of the air time repeats something the receiver already has.
Two real systems show how far apart the answers land. 802.11a at 20 MHz uses a prefix of 0.8 microseconds on a 3.2 microsecond symbol. That covers about 240 metres of extra path length, and it costs the 20 per cent above. LTE with 15 kHz spacing has a 66.7 microsecond symbol and a normal prefix near 4.7 microseconds. That covers roughly 1.4 kilometres and costs about 7 per cent. Indoor echoes are short and cell sized echoes are not.
The two numbers also show why the overhead differs so much, and the reason is the symbol rather than the prefix. Narrow subcarriers give a long symbol, so the same absolute prefix becomes a smaller fraction of it. That argues for narrow subcarriers, and the Overview section argues the other way, because narrow subcarriers tolerate less frequency drift. Choosing a numerology is where those two arguments are settled against each other.
Size the prefix from the channel, not from the transform : delay spread sets the floor, and the FFT size has nothing to say about it.Overhead is a ratio, so lengthen the symbol rather than shorten the prefix : LTE spends 4.7 microseconds and pays 7 per cent. 802.11a spends 0.8 and pays 20.The two constraints point in opposite directions : drift wants wide subcarriers and prefix overhead wants narrow ones, and a numerology is the compromise written down.
Example
I hope you have got the general idea on how OFDM works from previous section, but it is only a conceptual description and there would be some gap to fill in terms of details between the concept and real implementation. Let me give you an example that would give you more concrete idea than the previous concept. Overall idea for this example is based on IEEE 802.11 (WLAN specification) but this example is also missing pretty much details. However, it would give you more concrete idea about OFDM implementation.
Let's assume that you are given an OFDM specification as follows. (In most case, specification would not be given in the form of illustration like this, but it would be helpful (I am recommending) to describe the specification in graphical form.
In OFDM implemetation, the frequence at exact center does not carry any subcarrier and there are a certain number of sub carriers at both ends of the spectrum which does not have any sub carriers. This regions are called as Guard band and this is mainly to reduce the interference with neighbouring band.

Figure 11. The plan for one symbol, before any data exists. Sixty four positions, a DC position left empty, a guard band at each edge, and 52 positions left to carry bits.
The guard bands are unequal, and they have to be : 64 positions run from -32 to +31, which is not symmetric. With data on -26 to -1 and 1 to 26 and nothing at DC, six positions remain at the low edge and five at the high edge.The two guard band counts printed here do not add up : the labels read 7 and 6, and 7 + 26 + 1 + 26 + 6 comes to 66. The top arrow says 64. The counts that fit are 6 and 5, and the Matlab listing at the end of this section confirms them with subcarrierIndex_Data = [-26:-1 1:26].DC is left empty for a receiver, not for a transmitter : a direct conversion receiver puts its own DC offset in exactly that position. Data placed there would have to be recovered from underneath it.
Now let's follow the steps to implement an OFDM signal from the bit data we want to send. For simplicity, the modulation we are using is BPSK which carries one bit per each constellation point. According to the given specification, out of 64 sub carriers allocated for the band only 52 sub carriers are the sub carriers which can carry data bits as shown below.

Figure 12. The same axis with the payload on it. Fifty two BPSK values become arrows on the 52 data positions, and the guard positions and DC stay at the baseline.
Count the baseline markers : six sit at the low edge, five at the high edge and one at zero. The markers here draw the split that the labels in Figure 11 get wrong.BPSK makes the mapping visible : one bit per subcarrier, and a value of plus or minus one. The 52 bit list at the top maps one to one onto the 52 arrows below.
For this step, first we have to generate a bit sequence which will be carried by one OFDM symbol. You can generate a random bit sequence as following way. (In real communication, nobody would use random data to transmit. If it is real communication, this data would be a document file, music or movie etc but in case of simulation, we normaly use random data).
![]()
Figure 13. Where the payload comes from in a simulation. The expression turns 52 random bits into 52 values of plus or minus one, which is BPSK written as arithmetic rather than as a constellation diagram.
Next step is to map the user data to each of sub carriers which is assigned for data carry. This can be implemented as follows. (At first look, this would not be clear to you unless you are very familiar to Matlab/Octave array manipulation. You may use for loops to do this, but following way would be much simpler).

Figure 14. The array the transform will receive, plotted as magnitudes. Every data position holds 1 because BPSK values all have magnitude one, so the picture shows the subcarrier layout rather than the payload.
The red arrow marks the DC position : it points at the single zero in the middle of the array, at index 33. That is the position carrying no subcarrier.Equal magnitudes are what make this readable : with BPSK every occupied position has magnitude one, so anything that is not one is structure. Six zeros at the left, five at the right and one in the middle.The index arithmetic hides a plus one : subcarrier -26 lands at array index 7. The listing adds half the FFT size and then one more, because a Matlab index starts at 1.
With procedure described above, we have bit stream allocated to sub carrier in frequency domain. But all the communication (data transmission and reception) is happening in time domain. So we have to convert the frequency domain data into a time domain sequence as shown below. You would already know that IFFT (Inverse Fast Fourier Transform) is the tool to convert a frequency domain data into a time domain data.

Figure 15. The two operations that turn a subcarrier plan into a waveform. The shift is the step that has no physical meaning and cannot be skipped, and the transform is the step that does all the work.
The shift moves the empty positions from the edges to the middle : in the top plot the zeros sit at the two ends. In the middle plot they form one block near index 33. That is the same 64 values in the order the transform expects, with DC first.Both axes are labelled frequency until the transform : the first two plots are the same information in two orderings, and only the third is time.The output looks like noise, and that is correct : 52 subcarriers of equal magnitude and random sign sum to something with no visible structure. A waveform that looked orderly here would mean the subcarriers were not carrying independent data.
Next step is to add Cyclic Prefix to the time domain data we got in previous step. Cyclic prefix generation is very straightforward, it is direct copy of some portion of data from the end and putting the copy at the beginning of the data sequence.

Figure 16. The last step and its price. The red block at the end of the 64 samples is copied to the front to make 80. The three spectra show what that copy does to the shape of the signal.
The red block is the same data drawn twice : samples 49 to 64 of the transform output appear again as samples 1 to 16 of the transmitted symbol. That is the copy and paste of Figure 7, in numbers.The 64 point spectrum has a notch in the middle : that is the empty DC position. A vertical scale reaching 150 dB down shows how exactly the unused positions are zero.The 80 point spectrum is far rougher : its vertical scale spans only about 20 dB. Adding the prefix breaks the periodicity that an 80 point transform assumes, so the clean nulls disappear into leakage.The bottom spectrum is the one that matters : measured at 20 MHz with a 4096 point transform, it shows a flat band roughly 16 MHz wide. That is 52 subcarriers at 20 divided by 64, which is 312.5 kHz each.
Following is the Matlab/Octave code to implement all the steps described above.
TotalNumberOfSubCarrier = 64;
% for each symbol bits a1 to a52 are assigned to subcarrier
% index [-26 to -1 1 to 26]
subcarrierIndex_Data = [-26:-1 1:26];
BitsPerSymbol = 52;
close all;
figure;
% BPSK modulation
ModSequence = 2*randi([0 1],1,BitsPerSymbol)-1;
subplot(6,1,1); stem(abs(ModSequence));xlim([1 length(ModSequence)]);
TimeDomainSequence = []; % empty vector
ModSequenceForSubCarriers = zeros(1,TotalNumberOfSubCarrier);
% assigning bits a1 to a52 to subcarriers [-26 to -1, 1 to 26]
ModSequenceForSubCarriers(subcarrierIndex_Data+TotalNumberOfSubCarrier/2+1) = ModSequence(1,:);
subplot(6,1,2); stem(abs(ModSequenceForSubCarriers));xlim([1 length(ModSequenceForSubCarriers)]);
% shift subcarriers at indices [-26 to -1] to fft input indices [38 to 63]
ModSequenceForSubCarriers = fftshift(ModSequenceForSubCarriers);
subplot(6,1,3); stem(abs(ModSequenceForSubCarriers));xlim([1 length(ModSequenceForSubCarriers)]);
ModSequenceInTimeDomain = ifft(ModSequenceForSubCarriers,TotalNumberOfSubCarrier);
subplot(6,1,4); stem(abs(ModSequenceInTimeDomain));xlim([1 length(ModSequenceInTimeDomain)]);
% adding cyclic prefix of 16 samples
ModSequenceInTimeDomain_with_CP = [ModSequenceInTimeDomain(49:64) ModSequenceInTimeDomain];
subplot(6,1,5); stem(abs(ModSequenceInTimeDomain_with_CP));
xlim([1 length(ModSequenceInTimeDomain_with_CP)]);
TimeDomainSequence = [TimeDomainSequence ModSequenceInTimeDomain_with_CP];
subplot(6,1,6); stem(abs(TimeDomainSequence));xlim([1 length(TimeDomainSequence)]);
figure;
SamplingRate = 20;
[PowerSpectrum,W] = pwelch(TimeDomainSequence,[],[],4096,20);
subplot(1,3,1);plot([-2048:2047]*SamplingRate/4096,10*log10(fftshift(PowerSpectrum)));
xlabel('frequency, MHz')
ylabel('power spectral density')
subplot(1,3,2);plot(10*log10(fftshift(abs(fft(ModSequenceInTimeDomain)))));
xlim([1 length(ModSequenceInTimeDomain)]);
subplot(1,3,3);plot(10*log10(fftshift(abs(fft(TimeDomainSequence)))));
xlim([1 length(TimeDomainSequence)]);
What does OFDM cost, and what does it buy ?
Everything above describes how OFDM works and almost nothing about why anyone would accept it. It carries three real costs, and one benefit large enough that every modern radio standard pays them.
The first cost is the prefix, and the section above put a number on it. Between 7 and 20 per cent of the air time repeats samples the receiver has already seen.
The second is the shape of the waveform. An OFDM symbol is the sum of dozens or thousands of independent subcarriers, and those subcarriers occasionally align in phase. The result is a waveform with a low average and short high peaks. A transmit amplifier has to stay linear up to the peak while delivering only the average. That gap is paid in amplifier efficiency, and it is the reason peak to average power ratio is discussed as a system parameter.
The third is sensitivity to frequency error, which Figure 3 already showed. A carrier frequency offset moves every subcarrier off its sampling point together, so each one starts picking up energy from its neighbours. Doppler does the same thing to a moving terminal. A single carrier system would lose a little signal to noise ratio from the same offset, and an OFDM system loses orthogonality, which is a harder failure.
Against those three sits the benefit from the IFFT section. A wideband channel that would need an equalizer with many taps becomes one complex division per subcarrier. That single fact is why OFDM displaced single carrier modulation in Wi-Fi, in LTE and in NR. The three costs above are what it was worth paying.
Two more benefits follow from the same structure. Each subcarrier can carry a different modulation, so a transmitter that knows the channel can load more bits where the channel is strong. MIMO also applies per subcarrier, which turns a wideband spatial problem into many narrowband ones. The Matlab pages on OFDM Modulator and OFDM DeModulator run this chain end to end with the toolbox objects.
The prefix is the visible cost and the smallest one : it is a fixed percentage, and it is the easiest of the three to design around.Peaks cost amplifier efficiency : the amplifier is sized by the peak and paid for by the average. Every decibel of peak to average ratio is spent on back-off.Frequency error breaks orthogonality rather than degrading it : the subcarriers stop being independent, and the damage is different on each one.One division per subcarrier is what all of it buys : wideband equalization becomes arithmetic. No other property of OFDM would have been worth the three costs on its own.