Impulse Noise Protection and Mitigation for OFDM

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!!!”

“Wha?”

“STOP, I say! Before you do a complete hatchet job on this waveform, why don’t you let me do the procedure instead?”

“Why?”

“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

12 thoughts on “Impulse Noise Protection and Mitigation for OFDM”

1. prayalhalder says:

I nead matlab coding for ber reduction in ofdm system over multipath channel with impulsive noise any one help me nd mail me to this id prayalhalder@gmail.com

2. prayalhalder says:

I need code to remove the impulse noise using threshold blanking

3. Why not something like:

wfm = wfm .* (abs(wfm)

4. prayalhalder says:

what does it refers to

5. prayalhalder says:

plz help me to remove impulse using threshold blanking or show me the plot of ser estimation for ur coding in graph..

6. hey i can’t code the whole project! 🙂 why don’t you give it a try and let me know where you get stuck.

(1) detect impulse locations by identifying where waveform voltage exceeds some threshold.

(2) set those samples to 0 (maybe add a few samples on either side, and smoothly ramp down to 0 and back up rather than a step change).

(3) play around with threshold and # of samples to blank until you find the one that improves SER the most.

good luck!

7. prayalhalder says:

thank you!

8. prayalhalder says:

if u can plz mail me the code of ur paper.

9. prayalhalder says:

thank you!but I have this pdf

10. prayalhalder says:

how to plot ser for ur code..

11. hi prayalhalder – my code just computes SER at one noise level. you want to put the whole thing in a loop so that the SER is computed at a series of noise levels by varying the variable NM, which scales the noise power.