So your transmitter builds an OFDM symbol and sends it out into the world. There it is, traveling along, minding its own business, not bothering anybody when WHAM! Impulse noise!
Our symbol crawls, limps, scratches its way to the receiver, where he’s greeted with alarm and quickly wheeled into the operating room. A doctor takes a quick scan of the vitals. They should look like this…
But instead they look like this:
What to do? The easy answer for the doc is to amputate. That’s right, just clip the time domain waveform to limit the impulse amplitude in hopes of improving the RX constellation. It’s nasty, but often better than nothing. He takes out the scalpel and is walking towards the patient when the emergency room doors burst open behind him!
“STOP, I say! Before you do a complete hatchet job on this waveform, why don’t you let me do the procedure instead?”
“Well I attended a Globecom conference in 2004, where I was trained in a more… shall we say… refined technique for impulse mitigation. More of the patient’s data might be saved.”
“And just what is this fancy pants technique you’re going on about?”
“Here, let me draw it for you on the whiteboard…”
The doctor attempts to make sense of the diagram, but his eyes begin to glaze over. “Ah… sure… go right ahead…”
Yes, the diagram has a lot of boxes and arrows, but the technique isn’t hard to understand.
1. Perform normal OFDM demodulation in frequency domain
2. Assume nearest neighbor constellation points were what were actually transmitted
3. Subtract nearest neighbor constellation points from actual
4. Take IFFT of that to create time domain estimate of noise waveform.
5. Keep only the large spikes and zero the rest (non-linear operation)
6. Subtract this waveform from the original received RX waveform (noise canceling for the impulse).
7. Demodulate a second time.
Does it work? Yes it does, amazingly. And, this technique can even be used to subtract out impulses that are below the envelope of your RX waveform! Obviously, clipping isn’t even an option there since you don’t even know if or where its been hit.
How did it perform for the OFDM symbol above? First, here’s a zoomed in shot of the RX waveform with and without the impulse noise canceling.
You already saw the nasty unmodified constellation above. Here’s the constellation after impulse mitigation.
Still not pretty, but a step in the right direction. More importantly, look at that reduction in symbol error rate!
Steal my matlab code for the implementation here: imp_mit.m